MCP (Model Context Protocol) server for semantic code search over indexed git repositories using Voyage AI embeddings
Kamibiki's three tools have well-written descriptions (193 - 347 chars, within baseline 34 - 392 range) that explain WHAT, WHEN, and WHY. All three tools have complete, properly-typed JSON Schema inputs with required field declarations. Parameter descriptions are specific and actionable (e.g., 'Natural language or code search query', 'Git revision to search from'). However, OUTPUT schemas are not documented, the tool descriptions do not specify the structure of results returned (e.g., kb_search returns ranked results with 'file paths, byte offsets, and code content' textually, but no formal schema). Tool naming follows verb_noun convention (kb_search, kb_status, kb_index) appropriately. Error handling is absent from tool definitions, no guidance on retryability, user-fixable errors, or recovery paths. Security considerations (e.g., API key injection via Voyage AI) are implemented server-side but not declared in tool descriptions. Composition is sound: three orthogonal tools with clear responsibilities, though output chaining IDs (e.g., does kb_search return repo_id for downstream use?) are not visible.
Update the search index for one or more repositories. This chunks files, computes embeddings via the Voyage AI API, and writes the index. Supports delta indexing (only changed files are re-embedded). This operation usually takes a few seconds, but can take minutes depending on the number of changes. Having an up-to-date index is worth it. The operation is restartable: if interrupted, re-running will resume from where it left off.
Search an indexed git repository for code chunks relevant to a query. Returns ranked results with file paths, byte offsets, and code content. The repository must have been previously indexed with `kb add` and `kb index`. Use this tool instead of grep or file search when you don't know the exact string to search for — it understands natural language queries like "error handling in the API layer" or "where are database connections configured" and finds semantically relevant code even when no exact keyword match exists.
Show the indexing status of registered repositories, including the number of index files, total index size, latest indexed commit, and embedding count. For repositories with linked git worktrees, each worktree is listed under the repository.
Output schemas not documented. Tool descriptions state WHAT results contain (e.g., 'ranked results with file paths, byte offsets, and code content') but do not provide formal JSON Schema for response structure. LLMs cannot reliably extract fields or plan downstream tool calls without knowing the exact response shape.
No error handling guidance. Tool definitions lack recovery hints or error classification (retryable vs. user-fixable vs. fatal). E.g., kb_index says it 'is restartable' if interrupted, but does not explain what error responses look like or how to detect a retryable vs. permanent failure.
Tool composition incomplete. Tools accept repos and worktrees but do not document output chaining. E.g., does kb_search return a 'repo_name' field that downstream tools can use? Without explicit chaining IDs in output schema, agents may not be able to compose kb_search → other operation without extra lookup calls.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | C | 63 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 17 | - | v1 |
Parameters lack format/constraint guidance in descriptions. E.g., 'commit' parameter accepts 'commit hash, branch name, tag, HEAD~1, etc.' but the description does not validate what happens if an invalid revision is passed. Similarly, 'top' defaults to 10 and has no stated maximum, risking unbounded memory use for large result sets.
Permission/scope declarations missing. Tools accept 'commit', 'dirs', 'exclude_dirs' but do not declare whether the calling agent requires 'read:repo', 'write:index', or other scopes. This prevents least-privilege configuration and audit trail clarity.