Spaces:
Sleeping
A newer version of the Gradio SDK is available:
6.4.0
title: MCP Docx Tools
emoji: π
colorFrom: purple
colorTo: red
sdk: gradio
sdk_version: 6.0.0
app_file: app.py
pinned: false
short_description: From LLMs read and create docx via MCP
tags:
- building-mcp-track-enterprise
- building-mcp-track-consumer
- building-mcp-track-creative
- mcp
- word
- document
- reader
- writer
- mcp-1st-birthday
- hackathon
π MCP Word Toolkit β Gradio Server (Reader/Writer)
π MCP 1st Birthday Hackathon
Demonstrating how Model Context Protocol connects LLMs with local and remote productivity tools.
π₯ Project Presentation
π 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
β¨ Features
- π read_word: Reads and extracts content from
.docxfiles preserving paragraph breaks. - βοΈ create_word: Creates a new Word document with the specified content (overwrites if it exists).
- π Gradio + MCP: Fast interface that also exposes tools as an MCP server for other clients.
- π MCP Integration: Automatic tool discovery in compatible copilots (
mcp_server=True). - π‘οΈ Configurable Security: Limits system scope with
allowed_directories. - π» Local / Remote: Works fully local (edge) or as a remote HF Space endpoint.
π Quick Start (Local)
git clone <repo>
cd <repo>
pip install -r requirements.txt
python app.py
π Remote MCP Endpoint
π‘ Gradio MCP Server URL
https://mcp-1st-birthday-mcp-docx-tools.hf.space/gradio_api/mcp/
βοΈ Configuration for Claude Desktop / MCPHost
It is important to define allowed_directories to prevent unwanted access. Add only working folders, never the entire disk.
Option 1: JSON (for claude_desktop_config.json) (I haven't managed to make it work in Claude_server)
{
"mcpServers": {
"word-docx-server": {
"type": "remote",
"url": "https://mcp-1st-birthday-mcp-docx-tools.hf.space/gradio_api/mcp/",
"options": {
"allowed_directories": []
}
}
}
}
Option 2: YAML for
mcpServers:
word-docx-server:
type: "remote"
url: "https://mcp-1st-birthday-mcp-docx-tools.hf.space/gradio_api/mcp/"
options:
allowed_directories: []
Example Prompts
"Read the file C:\Docs\report.docx, summarize in 5 bullet points and create C:\Docs\summary.docx with that content using the available tools."
"Translate the content of C:\Docs\notes.txt to Spanish and save it as C:\Docs\notes_es.docx."
"Create a document at C:\Docs\plan.docx with a 5-day travel itinerary to Tokyo."
π§ MCP Tools Exposed
read_wordβ Extract content from a Word file.create_wordβ Create a new Word document.
Chaining Example
Use read_word on C:\Reports\2025_Q1.docx, summarize to 5 bullet points, then create_word to C:\Reports\2025_Q1_summary.docx with that summary.
π‘οΈ Security
- Limit
allowed_directoriesto specific folders. - Avoid documents with personal data if using remote services.
- Verify paths before generating content (overwrites without asking).
π§ͺ Troubleshooting
| Issue | Cause | Fix |
|---|---|---|
| File not found | Incorrect path | Check separators and permissions |
| Empty output | Document with empty paragraphs | Normal if text is not specified |
| Corrupt docx | Damaged file | Open in Word and save again |
π οΈ Tech Stack
- Python 3.9+
- Gradio (
mcp_server=Truecapability) - python-docx
- Model Context Protocol
π Acknowledgments
Special thanks to:
- Hugging Face for hosting and platform support.
- Google for video generation tools(Veo 3.1) and Antigravity with gemini 3 Pro (Preview).
- Anthropic for Claude Server.
β οΈ Disclaimer
A large part of the content of this project has been created with AI tools.
π License
Apache License 2.0
Made with β€οΈ for the MCP-1st-Birthday Hackathon. Contributions & issues welcome.
