Expose local wiki markdown files as MCP tools. Available tools: search_docs (semantic search across indexed directories), get_docs (fetch content by resource name or file path), and index_directories (index dirs for search). Doc names mirror paths under your configured output_dir (without .md extension).
wikigen defines 3 tools with reasonable naming and solid descriptions, but lacks critical schema details and input validation guidance. Tool names follow verb_noun convention (get_docs, search_docs, index_directories) and descriptions are substantive (150-250 chars each). However, parameter schemas are incomplete: search_docs has good param descriptions but index_directories lacks detail on recursion depth behavior; output schemas are not explicitly documented; error handling provides some guidance but not comprehensive recovery paths. The server returns unstructured string responses rather than structured JSON, forcing LLMs to parse markdown-formatted results. Semantic search is a strong feature but the tool lacks pagination, output size limits, and clear chunking strategy documentation.
Get the full content of a documentation file by resource name or absolute file path. This tool can fetch documentation using either: - Resource name (e.g., 'README', 'Order Management/Felis Stream') - searches output_dir - Absolute file path (e.g., '/Users/name/Documents/doc.md') - works with any indexed file
Index markdown files from specified directories for fast searching.
Search for markdown files across indexed directories using semantic search. This tool uses semantic search to find relevant chunks from indexed documentation. It returns relevant chunks with content snippets instead of entire files. Index directories first using index_directories, or files are auto-indexed from the configured output_dir on first search.
Output schemas not documented. get_docs and search_docs return unstructured strings (markdown-formatted text) rather than structured JSON objects with typed fields. LLMs cannot plan downstream tool calls or extract specific fields without manual parsing.
index_directories description is vague (18 chars: 'Index markdown files from specified directories for fast searching.'). Lacks guidance on: what constitutes 'indexed'? Does re-indexing overwrite or merge? What happens if a directory doesn't exist? When should this be called vs auto-indexing?
search_docs lacks result limits documentation. Default limit=20 and chunk_limit=5 are hardcoded but not explained in the description. The tool description should state: 'Returns up to 20 chunks per search (configurable), max 5 chunks per file.' Without this, LLMs don't know context window impact.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | D | 58 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 41 | - | v1 |
No pagination or continuation support. search_docs returns results but provides no next_cursor or offset mechanism if results exceed the limit. A semantic search with 100 matching chunks but only 20 returned gives no way to fetch the rest.
Error messages are inconsistent. get_docs provides helpful recovery hints ('Available resources: ...'), but search_docs auto-indexes silently on first call without informing the agent. index_directories has no error classification, LLMs don't know if a failed directory index is retryable or fatal.
get_docs 'identifier' parameter description is overly long and mixes two use cases (resource name vs absolute path). Split into: 'identifier: str, Either a resource name from output_dir (e.g., "README", "Order Management/Felis Stream") OR an absolute file path (e.g., "/Users/name/Documents/doc.md"). Resource names do not include .md extension.'
index_directories 'max_depth' parameter defaults to None (unlimited) but this is not explained. Description should clarify: 'max_depth: int | None, Maximum directory recursion depth. None (default) = unlimited. Set to 1 to index only top-level files, 2 for one subdirectory level, etc.'