MCP server for document management with reading, editing, and retrieval capabilities
DocumentMCP has two tools with basic schemas and descriptions, but both suffer from significant quality gaps. Tool names are adequately action-oriented (read_*, edit_*), but descriptions lack depth and context about when to use each tool versus alternatives. Parameter descriptions are minimal. No documented output schemas. Error handling is present but not recovery-focused. The server implements prompts and resources as supplementary features, but tool definitions themselves are underdeveloped for production use.
Edit the contents of a document be replacing a string in the document by a new string.
Read the contents of a document and return it as a string.
Minimal tool descriptions (both under 100 chars) lack context on when to use each tool, prerequisites, and return values. LLMs cannot reliably infer tool selection criteria from these descriptions.
No documented output schema for either tool. read_doc_contents returns a string, edit_doc_contents silently modifies state and returns nothing (commented out). LLMs cannot predict what they'll receive or chain these tools with others.
edit_doc_contents has destructive semantics (modifies document state) but no confirmation/dry-run mechanism and no clear warning in the description. Pattern allows irreversible mutations without agent safeguards.
Parameter 'doc_id' is a free-form string with no enum constraint. In production, this should validate against the known document set (deposition.md, report.pdf, etc.) to prevent hallucinated IDs and failed calls.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | F | 48 | <=2025-11-25 | v2 |
| 2026-03-09 | F | 38 | - | v1 |
edit_doc_contents parameter 'old_string' requires exact whitespace match but the description does not clarify how to handle multi-line strings, escaped characters, or regex. This invites string-matching failures.
Error messages (ValueError for missing doc_id) are raised but not structured for LLM recovery. No guidance on next steps, should the agent call list_documents first? Should it suggest available options?