MCP server for converting Markdown to mindmaps
Single tool with reasonable naming but significant gaps in schema completeness, parameter documentation, and error handling. The tool name 'convert_markdown_to_mindmap' follows verb-noun convention and is clear. However, the input schema is minimal (only one parameter), lacks comprehensive output schema documentation, and parameter descriptions are absent from the JSON schema structure. The tool description is adequate (194 chars) but lacks guidance on when to use it, prerequisites, or expected output format. No parameter type hints or constraints in the schema. Error handling exists but returns generic RuntimeError without actionable recovery guidance. The tool modifies state (generates files, performs I/O) but this is not declared in descriptions. Missing pagination, batch operations, and proper output documentation.
Convert Markdown content to a mindmap mind map. Args: markdown_content: The Markdown content to convert Returns: Either the HTML content or the file path to the generated HTML, depending on the --return-type server argument
Input schema lacks description for the only parameter 'markdown_content'. While the docstring mentions it, the JSON schema definition (line in server.py showing input schema) has no per-parameter descriptions visible in the tool registration.
No output schema documented. The tool returns either HTML content (string) or a file path (string) depending on a server-side flag, but this is not formalized in a structured schema. LLMs cannot plan downstream operations or validate the response format without explicit output type documentation.
Error handling returns generic RuntimeError messages without actionable recovery guidance. Errors like 'Failed to run markmap-cli: ...' do not tell the LLM what to do next or how to correct the issue. No error categorization (retryable, user-fixable, fatal).
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | F | 49 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 39 | - | v1 |
Tool uses a global configuration flag (--return-type) set at server startup. This is a stateful design pattern that violates the stateless request handling principle in the current MCP spec (2026-07-28). The return type should be a parameter to the tool itself, not a server-wide configuration.
Tool performs I/O operations (creates temp files, runs external CLI, writes to filesystem) but this is not declared in the description. The description should state 'This tool creates temporary files and executes the markmap-cli external tool. It has write side effects.' This is critical for agent reasoning about retry safety and idempotence.
No constraint documentation for the 'markdown_content' parameter. Should specify: maximum length, expected markdown syntax dialect, whether empty input is allowed, etc. Current description is vague ('The Markdown content to convert').
External dependency (markmap-cli via npm) is called via subprocess with 'npx -y' but no timeout is set. An agent in a retry loop could hang indefinitely waiting for this external process. No rate limiting or throttling.