Skip to main content
Glama
Zeke118

SKILLful MCP Docx Processor

by Zeke118
README.md
<div align="center">

# SKILLful MCP Docx Processor

[English](README.md) | [中文](README-zh.md)

A Word document processing service based on [FastMCP](https://github.com/modelcontextprotocol/python-sdk) and [python-docx](https://python-docx.readthedocs.io/), exposing a single gateway tool (`docx_process`) that routes to **63 operations**, covering the full document lifecycle: creation, editing, formatting, and querying.

Designed for seamless integration with [Claude Code](https://docs.anthropic.com/en/docs/claude-code) via the MCP protocol and Claude's skill system.

</div>

---

## Features

| Category                 | Count  | Description                                                             |
| ------------------------ | ------ | ----------------------------------------------------------------------- |
| Document Management      | 7      | Create, open, save, save-as, copy, close, reload                        |
| Content Addition         | 8      | Paragraphs, headings, tables, lists, images, page breaks, sections, TOC |
| Content Editing          | 9      | Search, replace, preview, section replace, keyword edit, delete         |
| Table Operations         | 8      | Rows, columns, merge/split cells, borders, shading                      |
| Formatting               | 20     | Page layout, paragraph, text, styles, hyperlinks                        |
| Style Management         | 3      | Create, modify, list styles                                             |
| Annotations & References | 8      | Bookmarks, comments, footnotes, endnotes, queries                       |
| **Total**                | **63** |                                                                         |

---

## Requirements

- Python >= 3.10
- [uv](https://docs.astral.sh/uv/) package manager

## Installation

```bash
# Clone the repository
git clone https://github.com/Zeke-777/SKILLful-mcp-docx-processor.git
cd SKILLful-mcp-docx-processor

# Install dependencies
uv sync
```

## Configure MCP Server

### Claude Code

For Claude Code CLI:

```bash
# Project-level (creates .mcp.json in current directory)
claude mcp add -s project docx-processor -- uv run --directory /path/to/SKILLful-mcp-docx-processor python server.py

# Or global (available in all projects)
claude mcp add -s user docx-processor -- uv run --directory /path/to/SKILLful-mcp-docx-processor python server.py
```

Replace `/path/to/SKILLful-mcp-docx-processor` with your actual project path.

### Manual JSON Configuration

For other MCP clients, or to manually create `.mcp.json` / `mcp_config.json`:

```json
{
  "mcpServers": {
    "docx-processor": {
      "command": "uv",
      "args": [
        "run",
        "--directory",
        "/path/to/SKILLful-mcp-docx-processor",
        "python",
        "server.py"
      ],
      "env": {}
    }
  }
}
```

## Install Skill

Skill files support both project-level and global installation. Choose one as needed.

### Project-level Installation

Takes effect for the current project only. Skill files reside within the project directory:

```bash
# Run in your target project's root directory
mkdir -p .claude/skills

# Copy Skill files to the target project
cp -r /path/to/SKILLful-mcp-docx-processor/skills/docx-process .claude/skills/
```

### Global Installation

Takes effect for all projects. Skill files reside in the user's home directory:

```bash
# Copy Skill files to the global directory
mkdir -p ~/.claude/skills
cp -r /path/to/SKILLful-mcp-docx-processor/skills/docx-process ~/.claude/skills/
```

After installation, the directory structure is as follows:

```
.claude/              # Project-level  or  ~/.claude/  # Global
└── skills/
    └── docx-process/
        ├── SKILL.md                  # Route table
        └── references/
            ├── doc-management.md     # Document management
            ├── content-operations.md # Content operations
            ├── table-operations.md   # Table operations
            ├── formatting.md         # Formatting
            └── annotations-query.md  # Annotations & queries
```

Claude Code automatically loads `SKILL.md` before calling `docx_process`, ensuring every call has the complete route and parameter reference.

---

## Usage

Once configured, the `docx_process` tool becomes available in Claude Code. The tool uses a single gateway pattern:

```
docx_process(route="create_document", params={"file_path": "output.docx"})
docx_process(route="add_heading", params={"text": "Hello World", "level": 1})
docx_process(route="save_document", params={})
```

The built-in `docx-process` skill automatically loads the route table and parameter specifications before each call, ensuring correct usage.

## Architecture

```
server.py          -- MCP server with all handler logic (2,247 lines)
SKILL.md           -- Route table (loaded on every call)
references/*.md    -- 5 category reference docs (loaded on demand)
```

The server exposes one tool (`docx_process`) that dispatches to handler functions via a `ROUTE_HANDLERS` dictionary.

## Context Efficiency

If all 63 routes were written into the tool's docstring or loaded at once, it would consume a large portion of the context window. This project uses **on-demand Skill loading** to significantly reduce context overhead:

| Loading Stage      | Content                          | Lines       |
| ------------------ | -------------------------------- | ----------- |
| Tool schema        | Docstring (parameter specs only) | 6           |
| Every call         | SKILL.md route table             | 116         |
| On demand          | Single reference file            | 47-177      |
| **Total per call** |                                  | **169-299** |

Compared to a naive approach (docstring with full route list ~30 lines + full SKILL.md 595 lines = ~625 lines), **context usage is reduced by 52-73%**.

This means:

- **More room for actual tasks** — saved context can be used for document content and business logic
- **Faster responses** — fewer tokens means faster inference
- **Lower costs** — significantly fewer tokens consumed per call

---

## Robustness

- **File lock detection** for all file operations
- **Parameter validation** across all routes (levels, rows/cols, colors, spacing, etc.)
- **State management** with overwrite warnings and cleanup on close
- **Unified error handling** with clear, actionable messages
- **Save retry** (3 attempts, 2s intervals) for locked files

## Known Limitations

- Single-document model (opening a new document warns about closing the current one)
- No per-run rich text within a paragraph (whole-paragraph formatting only)
- No text box support
- No concurrent multi-user protection (designed for single-user MCP scenarios)

## Acknowledgments

This project is built upon an extension of [MCP-Doc](https://github.com/MeterLong/MCP-Doc), retaining its core `DocxProcessor` class architecture and 21 foundational document operations. It has been expanded to 63 routes with additional features including file lock detection and on-demand Skill loading. Thanks to the original author for the excellent work.

## License

MIT

TDQS

A3.5/5.0

Scored across 1 tool

Disambiguation5/5

Only one tool exists, so there is absolutely no ambiguity between tools. The tool's route parameter further disambiguates sub-operations, but since it's a single tool, disambiguation is perfect.

Naming Consistency5/5

With only one tool, naming consistency is inherently high. The name 'docx_process' uses a clear verb_noun pattern, consistent with typical MCP naming conventions.

Tool Count3/5

A single tool for a Word document processor is borderline. While it bundles many operations via routes, the need to separately load skill documentation adds complexity. The scope feels slightly under-tooled.

Completeness3/5

The tool claims to support multiple operations like create, add paragraph, search text, but the lack of explicit listing makes completeness uncertain. The dependency on external skill documentation creates a potential gap for agents.

Maintenance

ActivityInactive
ResponsivenessNo issues