KIOKU local MCP server (Wiki read/list/search/write_note/write_wiki/delete) for Claude Desktop and Claude Code.
kioku-mcp has 11 tools with consistent naming (verb_noun pattern: kioku_read, kioku_search, kioku_write_note, kioku_delete, etc.). All tools have descriptions (10-80 chars, mostly adequate). Input schemas are present and properly typed with JSON Schema. However, descriptions are terse (many under 50 chars), parameter descriptions lack detail about constraints/formats, and output schemas are not documented. Error handling returns structured JSON but lacks recovery guidance. No tool annotations (readOnlyHint/destructiveHint) despite clear risk classifications in metadata.
Delete a note from the vault
Check the health status of the KIOKU server
Ingest a document (DOCX, etc.) into the vault
Ingest and process a PDF file into the vault
Ingest content from a URL into the vault
List wiki notes in the vault
Read a wiki note from the vault
Search wiki notes using lexical, vector, or hybrid search
Generate a visualization of the vault structure
Descriptions are terse (most 10-80 chars, baseline 194 chars). 'Read a wiki note from the vault' and 'Write a note to the vault' lack context on when to use each vs similar tools, prerequisites, or return structure.
Parameter descriptions are minimal or absent. 'path' param in kioku_read/list/delete lacks format guidance (absolute vs relative? vault-relative? glob patterns?). 'mode' enum in kioku_search lacks explanation of lex vs vec vs hybrid tradeoffs.
No output schemas documented. Callers cannot predict response structure (e.g., does kioku_search return {results: [{path, score, snippet}]} or {items: [...]}?). Blocks downstream tool chaining and forces LLM to infer structure.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 50 | 2026-07-28+ | v2 |
Write a note to the vault
Write to a wiki file in the vault
No tool annotations despite clear risk metadata. kioku_delete is DESTRUCTIVE, kioku_write_* are WRITE, but no destructiveHint/readOnlyHint in schema. LLM cannot infer safety profile from tool definition alone.
Error handling returns structured JSON but lacks recovery guidance. wrap() catches errors and returns {error: {code, message}} but does not suggest next steps (e.g., 'path not found, try kioku_list() to discover available paths').