# Servidor Gradio MCP para leer y crear archivos Word # Requiere: gradio[mcp], python-docx import gradio as gr from docx import Document import os def leer_word(ruta): if not os.path.exists(ruta): return f"Archivo no encontrado: {ruta}" try: doc = Document(ruta) texto = "\n".join([p.text for p in doc.paragraphs]) return texto except Exception as e: return f"Error al leer el archivo: {e}" def crear_word(ruta, contenido): try: doc = Document() for linea in contenido.split("\n"): doc.add_paragraph(linea) doc.save(ruta) return f"Archivo creado en: {ruta}" except Exception as e: return f"Error al crear el archivo: {e}" with gr.Blocks() as demo: gr.Markdown("# Servidor Gradio MCP - Word Reader/Writer") with gr.Tab('Intro'): gr.Markdown("""## MCP Word Tools πŸš€ This Gradio MCP server exposes Word document utilities to LLM copilots via Model Context Protocol. ### 🧰 Tools - read_word(path) β†’ Read .docx preserving paragraph breaks. - create_word(path, content) β†’ Create / overwrite a .docx from text lines. ### βš™οΈ Usage (Prompt Examples) 1. Read & summarize: Use read_word on C:\\Docs\\report.docx, summarize to 5 bullet points, then create_word to C:\\Docs\\report_summary.docx 2. Translate: Read C:\\Docs\\notes.docx, translate to Spanish, write C:\\Docs\\notes_es.docx 3. Generate: create_word to C:\\Docs\\plan.docx with a 5-day Tokyo itinerary. ### πŸ” Security Tips - Limit allowed_directories in your MCP client config. - Avoid sensitive / personal data in remote sessions. - Paths overwrite existing files without asking. ### πŸ§ͺ Troubleshooting File not found β†’ Check path & permissions Empty output β†’ Document has empty paragraphs Corrupt file β†’ Re-open & re-save in Word ### πŸ“‘ Remote Endpoint https://mcp-1st-birthday-mcp-docx-tools.hf.space/gradio_api/mcp/ ### πŸ”— LinkedIn Showcase Project demo post: https://www.linkedin.com/posts/oscar-felipe-gonz%C3%A1lez-gonz%C3%A1lez-019971387_mcp-artificialintelligence-hackathon-activity-7400155174138245121-DKiX ### πŸ“¦ Stack Python Β· Gradio (mcp_server) Β· python-docx Β· MCP ### πŸ“– License Apache 2.0 ❀️ Hackathon Edition""") with gr.Tab("Leer Word"): ruta_lectura = gr.Textbox(label="Ruta local del archivo Word a leer") salida_lectura = gr.Textbox(label="Contenido del archivo Word", lines=10) btn_leer = gr.Button("Leer archivo") btn_leer.click(leer_word, inputs=[ruta_lectura], outputs=[salida_lectura]) with gr.Tab("Crear Word"): ruta_creacion = gr.Textbox(label="Ruta local para guardar el archivo Word") contenido_creacion = gr.Textbox(label="Contenido para el archivo Word", lines=10) salida_creacion = gr.Textbox(label="Resultado de la creaciΓ³n") btn_crear = gr.Button("Crear archivo") btn_crear.click(crear_word, inputs=[ruta_creacion, contenido_creacion], outputs=[salida_creacion]) demo.launch(mcp_server=True)