MCP server for DocFX documentation sites hosted on Cloudflare Pages (or any static host)
Three tools with clear verb-noun naming (list_articles, search_docs, fetch_article) and reasonable descriptions (100-150 chars). All tools have Zod schemas with type definitions. However, parameter descriptions are minimal (10-30 chars), lack actionable constraints, and output schemas are not formally documented. Error handling is basic, no recovery guidance or categorization. The 'site' parameter description is vague ('Site name. Available: (varies by configuration)') and doesn't explain how to discover available sites. fetch_article lacks pagination despite potentially returning large content (8000 char truncation is ad-hoc, not a documented limit). No tool annotations (readOnlyHint, destructiveHint, idempotentHint) despite all being read-only operations.
Fetch and return the full text content of a documentation page.
List all documentation articles from the DocFX site table of contents.
Search the DocFX documentation for articles matching a keyword or phrase.
Parameter descriptions lack actionable constraints. 'The search term or phrase' does not specify length limits, character restrictions, or search syntax. 'The full URL of the documentation page to fetch' does not explain what happens if the URL is invalid or unreachable.
Output schemas are not formally documented. Tools return text content wrapped in {type: 'text', text: '...'} but the LLM cannot infer the structure of returned fields (title, url, summary, content). Downstream tools cannot reliably extract and chain results.
No tool annotations despite all three tools being read-only. Missing readOnlyHint would help agents understand these tools are safe to call without side effects. Agents may unnecessarily hesitate or request confirmation.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 60 | 2026-07-28+ | v2 |
'site' parameter description is vague: 'Site name. Available: (varies by configuration)'. This does not help the LLM discover valid site names. Should either enumerate available sites or reference a discovery tool (e.g., 'Call list_sites() first to see available options').
fetch_article truncates content at 8000 chars with no pagination support. Large documentation pages are silently truncated. No limit parameter, no next_cursor, no indication of total content length. Agents cannot retrieve complete articles.