MCP server for searching and browsing Mendix documentation with full-text search, page retrieval, and category browsing capabilities
Three well-named, read-only tools with clear descriptions and complete input schemas. All tools follow verb_noun naming (search_, get_, list_). Descriptions are 150 - 250 chars, exceeding the 10-char minimum and staying within the 1024-char ceiling. All parameters have type definitions and descriptions. However, output schemas are not explicitly documented in the source, only inferred from model_dump() calls. Error handling is minimal (get_mendix_doc returns a dict with 'error' key but no recovery guidance). No tool annotations (readOnlyHint, idempotentHint) despite all three being read-only and idempotent. Parameter descriptions could be more prescriptive about format/constraints (e.g., version enum values are stated but not enforced in schema).
Retrieve the full content of a specific Mendix documentation page. Use the path from search results or category listings. Accepts either a doc path (e.g. "/refguide/microflow/") or a full URL (e.g. "https://docs.mendix.com/refguide/microflow/").
Browse the Mendix documentation hierarchy. Returns the top-level category tree for discovering available content. Use paths from the results to drill deeper with another call, or to retrieve a specific page with get_mendix_doc.
Search Mendix documentation by keyword. Returns ranked results with snippets. Use this when a developer asks about any Mendix feature, API, widget, or configuration. Results are ranked by relevance using BM25.
Output schemas not documented. Tools return model_dump() dicts but no schema is visible in source. LLMs cannot plan downstream operations without knowing response structure.
No tool annotations. All three tools are read-only and idempotent, but lack readOnlyHint and idempotentHint annotations. Agents cannot infer safety properties.
Minimal error handling. get_mendix_doc returns {"error": "..."} but does not guide recovery (e.g., 'Try search_mendix_docs() to find the correct path'). No error classification (retryable vs. fatal).
Parameter constraints not enforced in schema. version parameter accepts "8", "9", "10", "11" but schema does not declare enum. LLMs may pass invalid versions.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 62 | 2026-07-28+ | v2 |
max_results parameter lacks bounds in description. Schema shows default=5 but no min/max constraints. LLMs could pass 0, negative, or >20 values.