MCP server for the Factorydrive llms.txt documentation
The server defines 3 tools with reasonable names following verb_noun patterns (list_doc_sources, search_docs, fetch_docs). However, the descriptions are minimal and under the recommended 50-200 character window for LLM optimization. The input schemas are present but sparse, most parameters lack detailed descriptions. The fetch_docs tool has a URL format constraint, but no documentation about valid URL prefixes or error cases. Output schemas are not documented. Error handling returns structured text but does not guide recovery actions. Overall, this is a fair (C-) to poor (D+) server by the rubric baseline.
Fetch one Markdown or llms.txt URL from the configured Factorydrive documentation site.
List Factorydrive documentation sources by fetching the published llms.txt index.
Search Factorydrive documentation and return ranked page URLs with snippets. Fetch the best matching pages next.
Tool descriptions are under 50 characters, below the LLM-optimized baseline of 50 - 200 chars. list_doc_sources = 'List Factorydrive documentation sources by fetching the published llms.txt index.' (76 chars) is minimal; search_docs description is vague about ranking and when to call it vs fetch_docs; fetch_docs lacks guidance on URL validation and failure modes.
Output schemas are not documented. LLMs cannot infer what list_doc_sources returns (is it an array? a dict? what fields?), what search_docs returns (does each result have a URL, snippet, relevance score?), or what fetch_docs returns (raw text? structured markdown? error fields?). Without documented returns, agents cannot plan downstream operations.
The search_docs tool has numeric parameters (limit) with min/max constraints visible in schema but no description text explaining the constraint. The limit parameter states 'Maximum results, default 12' but the description does not explain why 12 is the default or what happens if limit exceeds 30.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 54 | 2026-07-28+ | v2 |
Error handling returns isError: true with a generic 'Factorydrive documentation error: {message}' wrapper. This does not classify errors as retryable vs fatal, does not suggest recovery steps, and does not include the invalid value or constraint violated. An LLM cannot distinguish between 'URL not found' (possibly retry) vs 'invalid base URL configuration' (unrecoverable).
The fetch_docs tool accepts a URL parameter with format:'url' constraint, but the description does not clarify what 'absolute URL inside the configured documentation base' means. What is the base? What prefixes are valid? What happens if the URL points outside the base? This ambiguity will cause LLMs to pass invalid URLs.
No tool declares resource dependencies or chaining requirements. If search_docs returns URLs without a stable reference format, then fetch_docs may fail on the same URL. If list_doc_sources returns source objects that lack URLs, the agent cannot chain into search_docs or fetch_docs without an extra lookup.