MCP server for document management with read, edit, and formatting capabilities
DocumentMCP has two tools with basic schemas and descriptions, but significant gaps limit production readiness. Both tools have descriptions (10-20 chars baseline met), and input schemas are present with typed parameters. However, descriptions lack depth on WHEN to use each tool, error recovery guidance, and parameter constraints. The edit_document tool accepts free-form strings without validation hints. Output schemas are not documented. No tool annotations (readOnlyHint/destructiveHint) despite clear risk profiles. Error handling raises ValueError but provides no recovery guidance to LLMs. Parameter descriptions are minimal (e.g., 'ID of the document to read' lacks format/constraint info). The server lacks pagination, batch operations, and idempotent operation guarantees.
Edit a document by replacing the string in the document content with a new string.
Read the contents of a document and return it as a string.
Missing tool annotations (readOnlyHint/destructiveHint). edit_document is destructive but unmarked; read_doc_contents is read-only but unmarked. LLMs cannot infer safety properties without explicit hints.
Descriptions lack recovery guidance and WHEN-to-use context. 'Read the contents of a document' does not explain when to call this vs. the resource endpoint. 'Edit a document by replacing' does not warn about exact-match requirement or guide error recovery.
No output schema documentation. Callers cannot predict return types or structure. edit_document returns the full document string; read_doc_contents returns a string. LLMs need explicit schema to plan downstream operations.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 48 | <=2025-11-25 | v2 |
edit_document parameter 'old_string' requires exact match but provides no validation or error guidance. If the string is not found, ValueError is raised with no recovery hint. LLM cannot self-correct without re-reading the document.
No idempotent operation guarantee. edit_document modifies state; repeated calls with same params produce different results if the old_string no longer exists. Agents retrying on ambiguous failures risk silent failures or unintended edits.