An MCP server for managing and editing documents with support for reading, listing, and editing document contents. Includes prompts for document formatting.
DocumentMCP has basic tool definitions with descriptions and input schemas, but falls short of production quality. All three tools have descriptions (10-100 chars) and visible schemas with typed parameters. However, descriptions are minimal (avg 65 chars vs baseline 194), lack context on WHEN to use tools, and omit error recovery guidance. Parameter descriptions are present but terse. No output schemas documented. Error handling exists (ValueError raised) but provides no recovery hints. Tool composition is reasonable (list/read/edit separation), but edit_document lacks idempotency guarantees and confirmation patterns for destructive operations.
Edit a document by replacing a string in the documents content with a new string
List all available document IDs.
Read the contents of a document and return it as a string.
Descriptions lack context on WHEN to use tools and what happens next. 'List all available document IDs' does not explain when to call this vs read_doc_contents or the docs:// resource. LLMs need explicit guidance on tool selection.
edit_document lacks destructive operation safeguards. No confirmation step, dry-run mode, or idempotency guarantee. Agents can accidentally corrupt documents with typos in old_str/new_str matching. Missing destructiveHint annotation.
No output schemas documented. Callers cannot infer what list_documents returns (list of strings) or what read_doc_contents returns (string). LLMs must guess structure for downstream planning.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 55 | 2026-07-28+ | v2 |
Error messages are generic ('Doc with id X not found'). No recovery hints. Should suggest: 'Doc not found. Call list_documents() to see available IDs.' Agents cannot self-correct.
Parameter descriptions are minimal. 'Id of the document to read' does not explain format, constraints, or examples. Should state: 'Document ID (string, case-sensitive, e.g. deposition.md). Call list_documents() first if unsure.'