Word document processing service, providing functions to create, edit, and query documents
This server has basic tool definitions with some schema and descriptions present, but falls well short of production quality. All 5 tools are explicitly registered via @mcp.tool() decorators with names, descriptions, and parameter schemas visible in server.py. However, critical gaps exist across naming clarity, parameter descriptions, output schemas, and error handling. The codebase demonstrates awareness of MCP structure (FastMCP, Context) but lacks the polish needed for reliable agent use. Tool names are action-verbs (good), but parameter descriptions are minimal, output schemas are completely undocumented, and error responses are plain strings rather than structured, actionable guidance. This is solidly in the 'fair but needs work' range.
Add heading to document
Add paragraph text to document
Create a new Word document
Open an existing Word document
Save the currently open Word document to the original file (update the original file)
No output schemas documented for any tool. Callers cannot predict what fields will be returned, forcing LLMs to infer structure and risking failed downstream tool chains.
Parameter descriptions are minimal and generic. 'Document save path' and 'Paragraph text content' provide no guidance on format, length, or constraints. LLMs need explicit instruction on what values are valid.
Error responses are bare strings ('Failed to create document: ...') with no recovery guidance. Pattern: 'Document created successfully' vs 'Document failed, try create_document with a different path'. LLMs cannot infer next steps from plain error messages.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | F | 47 | <=2025-11-25 | v2 |
add_paragraph has 8 optional parameters (bold, italic, underline, font_size, font_name, color, alignment) but no constraints or enums. Color is described as '#FF0000' format but no regex/pattern provided. Alignment hints 'left, center, right, justify' as free-form text, not an enum, LLMs will hallucinate invalid values.
No confirmation or dry-run pattern for destructive operations. create_document and save_document modify files irreversibly. No warning, no preview, no undo path. Pattern: agents should be able to preview or confirm before executing.
Stateful processor instance (self.current_document, self.current_file_path) persisted via temp file. This violates stateless request handling, each MCP request should be independent. Agents cannot reliably compose tools if state persists across requests in unpredictable ways.
save_document() returns error 'No document is open' as a string, not structured JSON. Also violates the stateless pattern by relying on processor.current_document set by a prior call to open_document or create_document. This breaks agent composition, tools cannot be reordered or run in parallel.