This JUCE Documentation Server has well-structured tools with clear naming conventions and reasonable descriptions, but shows gaps in parameter documentation and output schema specification. All 5 tools are explicitly registered with names, descriptions, and Zod schemas visible in the source. Tool names follow verb-noun patterns (search, get, set, setup), which is good. Descriptions range from 89 - 181 characters, generally adequate but some lack actionable context about when to use them. Parameter descriptions are present for most inputs but inconsistent in quality and specificity. The server implements resources (class-docs, class-list) and prompts (explore-juce), showing thoughtful feature integration. However, output schemas are not documented in tool definitions, responses are returned as markdown text rather than structured objects, which forces LLMs to parse unstructured content. Error handling is basic (missing class returns plain text, no recovery guidance). No tool annotations (readOnlyHint/destructiveHint) are declared despite clear semantic differences (set-juce-docs-source and setup-local-juce-docs are WRITE operations). No pagination support is visible for potentially large class lists.
Retrieves detailed documentation and member functions for a specific JUCE class name.
Shows the current docs source (master/develop/custom/local), where it came from, and how to switch quickly.
Searches for JUCE classes based on a query string. Use this to find specific components or classes in the JUCE framework.
Switch docs source to master, develop, custom URL, or local docs path. Persists to ~/.juce-docs-mcp-server/config.json (or JUCE_DOCS_CONFIG_PATH).
Configure docs from a local JUCE checkout path. Optionally generate docs if missing.
Output schemas not documented. All tools return plain markdown text ({type: 'text', text: markdown}) rather than structured objects with typed fields. LLMs must parse unstructured markdown to extract actionable data (class names, URLs, config values). This wastes tokens and increases hallucination risk.
Tool annotations missing. set-juce-docs-source and setup-local-juce-docs modify persistent state (write to ~/.juce-docs-mcp-server/config.json), but no destructiveHint or idempotentHint is declared. LLMs cannot distinguish safe (read-only) vs risky (write) tools without explicit hints.
Parameter descriptions lack specificity. 'query' in search-juce-classes says 'Query string to search for JUCE classes' but does not explain: partial match? exact? case-sensitive? How many results returned? 'url' in set-juce-docs-source lacks format hints (HTTP(S) only? URL validation?). 'localDocsPath' lacks validation rules (absolute path? relative? must exist?).
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | C | 69 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 0 | - | v1 |
No pagination or result limits declared. Class list resource (juce://classes) and search-juce-classes tool return all matching classes with no limit or pagination parameters. If JUCE has hundreds of classes, responses blow the context window. Baseline pattern expects limit + offset/cursor + total_count for large result sets.
Error handling does not guide recovery. When documentation is not found (e.g., 'Documentation for class X not found'), the response is plain text with no actionable guidance. Missing: did you mean suggestions, list of available classes, or hints to use search-juce-classes instead.