MCP server for semantic code search using tree-sitter and Ollama embeddings
barnacle-search exposes 8 well-named tools with clear verb-noun patterns (set_project_path, build_deep_index, search_code, semantic_search). All tools have descriptions (avg ~100 chars, within baseline 34 - 392). Input schemas are present and typed. However, parameter descriptions are sparse or missing context; output schemas are not documented; error handling lacks recovery guidance; no tool annotations (readOnlyHint/destructiveHint). The server is functional but lacks LLM-optimization details needed for confident tool selection and error recovery.
Build or rebuild the deep index for semantic search. Parses all project files, extracts symbols, and generates embeddings
Find files in the project matching a glob pattern
Get a summary of a file including its language, line count, imports, exports, and all symbols defined in it
Get the current status of the deep index build, including progress, phase, ETA, and any errors
Get the source code body of a specific symbol (function, class, etc.) from a file
Search for code using grep-style pattern matching across all project files
Search for code semantically using embeddings. Finds symbols and code snippets similar to the query
No output schemas documented. LLMs cannot infer what fields get_index_status, get_file_summary, or search_code return, forcing them to guess downstream field names and risk broken tool chains.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). LLMs cannot distinguish safe reads from destructive writes. build_deep_index and set_project_path should be marked destructive; others should be marked readOnly.
Parameter descriptions lack constraint details. 'pattern' in find_files and search_code should document fnmatch/regex syntax, length limits, and invalid characters. 'limit' in semantic_search should specify range (e.g., 1 - 100).
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 55 | <=2025-11-25 | v2 |
Set the project path for indexing and searching
Error handling lacks recovery guidance. No indication of which errors are retryable, which require user intervention, or what the LLM should do next (e.g., 'Project not found. Call set_project_path first.').
No pagination support documented. semantic_search accepts 'limit' but no offset/cursor. If results exceed limit, LLMs cannot fetch additional pages, risking incomplete search results.