MCP server for Alliance documentation that provides search, indexing, and discovery of technical documentation from the Digital Research Alliance of Canada.
Alliance Docs MCP has well-structured tool definitions with complete schemas and clear descriptions. All four tools are read-only documentation search/retrieval utilities with proper verb-noun naming (search_, list_, get_). Input schemas are complete with types and descriptions for all parameters. Descriptions range from 53-136 characters, within the 10-1024 range. However, output schemas are not documented in the visible code, and error handling guidance is minimal. Tool composition is sound, each tool has a single responsibility and output fields from search_docs/get_page_info are designed to chain with get_related_pages. No parameters expose secrets. The server uses proper FastMCP conventions with Pydantic models for type safety.
Retrieve full metadata for a single page by slug.
Find pages similar to a given page using content-based similarity (with fallback to title/category heuristics).
List all available documentation categories.
Search documentation with optional full-text index and relevance ranking. Returns an empty list when nothing matches; raises on backend failure.
Output schemas not documented in tool definitions. Code shows Pydantic models (SearchHit, PageInfo, RelatedPage) but tool decorators do not expose return type schemas to clients. LLMs cannot know what fields to expect without explicit documentation.
Error messages lack recovery guidance. Code shows fallback to title search if full-text index unavailable (SearchIndexUnavailable exception), but tools do not document this graceful degradation to end users. Error responses should guide LLMs on retry strategy.
search_docs 'limit' parameter lacks bounds. Default is 20, but no minimum/maximum documented. LLMs could pass absurd values (0, -1, 999999) causing performance issues. Should specify limit is 1-100.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | B | 72 | <=2025-11-25 | v2 |
| 2026-03-09 | F | 23 | - | v1 |
get_related_pages 'limit' parameter also lacks bounds documentation. Default is 5 but no constraints stated. Should specify valid range (1-50).
Pagination not implemented. search_docs returns up to 20 items but provides no mechanism for agents to retrieve next page (no offset, cursor, or total count). For large doc sets, this limits discoverability.