Secure MCP server for MediaWiki wikis — search, pages, categories, and more
Server presents 19 well-organized tools with consistent naming, clear descriptions, and documented input schemas. Tool names follow verb_noun convention (search_tool, get_page_tool, list_pages_tool, create_page_tool, etc.), which is strong. Descriptions are present and contextual, averaging ~80-120 characters, within the productive range (baseline 194 chars for production tools, but these are appropriately scoped). All tools have input schemas with typed parameters and descriptions. However, there are gaps: (1) Output schemas are not documented in the function signatures or docstrings, the code shows parameter docs but no explicit return schema structure; (2) Error handling is implicit in the tool implementations but not surfaced in descriptions, no guidance for LLMs on what to do if a page is not found, authentication fails, or rate limits are hit; (3) Some parameter descriptions could be more precise (e.g., 'timestamp' format not specified as ISO 8601 in text, though ISO 8601 is implied by the word 'timestamp'); (4) No input validation constraints visible in descriptions (e.g., 'limit max: 50' is mentioned in descriptions for search_tool but not consistently applied to all paginated tools; list_pages_tool and others claim 'max: 500' but validation is not shown in code excerpt); (5) Destructive tools (delete_page_tool) lack confirmation-request or dry-run patterns; (6) Tool parameters do not include rate-limit guidance or backoff semantics. Overall, the server is well above median, tools are usable and LLMs can reason about them, but production-grade polish is missing.
Create a new wiki page. Requires authentication.
Delete a wiki page. Requires admin authentication.
Edit an existing wiki page. Requires authentication.
Get pages in a category.
Get file/image metadata from the wiki.
Get categories that a page belongs to.
Parse a wiki page to HTML.
Output schemas not documented. The code shows parameter documentation but does not declare what fields are returned (e.g., get_page_tool returns 'dict[str, Any]' with no description of the structure). LLMs cannot plan downstream tool calls without knowing what data is available.
Error handling not surfaced in descriptions. Tools like delete_page_tool and create_page_tool can fail (authentication, permission, not found, conflict), but descriptions do not explain what errors are possible or what the LLM should do next. For example, 'Page not found' should suggest trying search_tool or list_pages_tool first.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | C | 67 | <=2025-11-25 | v2 |
| 2026-03-09 | C | 60 | - | v1 |
Get page wikitext content by title.
Get wiki configuration and version info.
Get user details from the wiki.
List all categories on the wiki.
List files on the wiki.
List all namespaces on the wiki.
List wiki pages with optional prefix filter.
List recent edits on the wiki.
List edits by a user.
Move (rename) a wiki page. Requires authentication.
Parse raw wikitext to HTML.
Full-text search across the wiki.
Destructive operations lack confirmation or dry-run. delete_page_tool can permanently remove content, but the description does not mention a confirmation requirement or offer a preview mode. Agents may accidentally delete pages during planning.
Parameter constraints not consistently described. Tools like list_pages_tool and list_user_contributions_tool have 'limit' parameters but descriptions do not formally specify min/max or default in all cases. The schema shows 'default: 50, max: 500' in the description text, but this should be enforced in tool docstrings for consistency.
ISO 8601 timestamp format for 'from_timestamp' parameter is mentioned in tool descriptions but not consistently highlighted in all temporal parameters. list_recent_changes_tool and list_user_contributions_tool require ISO 8601, but this constraint is not called out as explicitly as it should be for LLM clarity.
Pagination tokens not consistently documented. get_category_members_tool offers 'continue_from' for pagination, but other paginated tools (list_pages_tool, list_categories_tool, list_recent_changes_tool) rely on 'from_title' or 'from_name', a cursor-based pattern vs. offset-based. Tool descriptions do not clarify how pagination works or whether results are stable across pagination requests.