DuckDB-based MCP server for vector search and repository indexing with semantic code search capabilities
Server has 11 tools with complete schemas and descriptions, but quality is uneven. Most tools follow verb_noun naming (vector_search, insert_vector, delete_vector). Descriptions are present but generic (avg ~60 chars, below 194-char baseline). Parameters have types and descriptions, but lack constraints (enums, ranges, patterns). Error handling returns JSON with error fields but lacks recovery guidance. No tool annotations (readOnlyHint/destructiveHint) despite clear risk levels. Output schemas are documented in code but not formally declared in tool registration. Missing idempotency guidance for write operations.
Delete a vector from the database
Get performance metrics from the vector database
Index source files in a repository into searchable document chunks.
Index a mounted workspace path for code and docs retrieval.
Insert a vector into the database
Re-index a single file or subtree after changes.
Search only documentation-like files among indexed chunks.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint) despite clear risk levels. delete_vector, insert_vector, upsert_document_chunk are marked DESTRUCTIVE/WRITE but lack formal annotations to guide agent planning.
Descriptions are generic and under 100 chars (avg ~60). Lack WHEN-to-use guidance and prerequisites. E.g., 'Search for similar vectors in the database' does not explain when to call vector_search vs semantic_search_code vs search_symbols.
No enum constraints on 'method' parameter (exact|approximate|lsh). Free-form strings invite hallucinated values. LLM may pass invalid methods.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 61 | 2026-07-28+ | v2 |
Search indexed chunks by declared symbol names with symbol-aware reranking.
Search indexed repository/document chunks using deterministic text embeddings.
Insert or update a repository/document chunk and its derived embedding.
Search for similar vectors in the database
Error responses return JSON with 'error' field but lack recovery guidance. E.g., 'Invalid method' does not tell LLM to retry with valid options or which tool to call next.
No idempotency guidance for write operations (insert_vector, upsert_document_chunk). Agents retrying on ambiguous failures risk duplicate records. Missing idempotent-operation pattern.