MCP server for searching and retrieving content from MediaWiki instances
This MediaWiki MCP server exposes 2 read-only tools with explicit schemas and descriptions. Both tools have properly structured input and output schemas defined via the Kotlin SDK's ToolSchema class. However, there are significant issues that prevent a higher score: (1) Tool descriptions use template variables like ${envConfigProvider.wikiName()} which are only resolved at runtime, the descriptions are not static/previewable and rely on indirect configuration, making them less useful for static analysis and LLM planning; (2) Parameter descriptions are minimal and generic, lacking guidance on constraints, expected formats, or when to use one tool vs. the other; (3) No tool annotations (readOnlyHint, etc.) despite both being read-only operations; (4) Output schemas are documented but lack guidance on pagination or result limits, the search_wiki tool returns an array with no limit parameter visible; (5) Error handling is not visible in the source, so recovery guidance is unknown. The schemas themselves are well-formed with proper types and required field declarations, which prevents a lower score. Per-tool analysis: search_wiki (naming: 80, description: 40, schema: 70, overall: 63), get_page_content (naming: 85, description: 45, schema: 75, overall: 68). Average: 65. Adjusted to 58 due to STDIO transport cap and lack of actionable error handling patterns.
Get the full content of a specific ${envConfigProvider.wikiName()} page
Search the ${envConfigProvider.wikiName()} for information about the topic
Tool descriptions contain unresolved runtime template variables (${envConfigProvider.wikiName()}) instead of static text, making descriptions non-previewable and less useful for agent planning.
Parameter descriptions are generic and lack actionable constraints. 'Search query for the ${envConfigProvider.wikiName()}' does not explain: valid query format, length limits, special operators, or expected result relevance. 'The exact title of the ${envConfigProvider.wikiName()} page to retrieve' does not clarify: are titles case-sensitive? Do redirects work? What happens if title is ambiguous?
Missing tool annotations. Both tools are read-only (stated as READ_ONLY risk), but neither has readOnlyHint=true set in the Tool object. This forces LLMs to reason about safety without explicit hints.
Inferred effective spec: 2025-06-18+.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | D | 52 | 2025-06-18+ | v2 |
| 2026-03-09 | F | 44 | - | v1 |
No visible error handling or recovery guidance in source. If a page is not found, network fails, or query is invalid, the response pattern is unknown. Error responses should guide the LLM ('Page not found. Did you mean: <alternatives>?' or 'Network timeout, retry in 5s'). [Source: pattern:recovery-guide]
search_wiki has no limit parameter validation or guidance. Limit defaults to 5, but no minimum/maximum stated. Can an agent pass limit=100000? This invites absurd requests.
No pagination or result count guidance in search_wiki output. If the API returns 1M results, how does the agent discover all of them? Is there a next_cursor? Response schema documents 'totalResults' (good) but no guidance on pagination mechanics.