This codebase-RAG MCP server presents mixed quality. Strengths: 9 tools are registered with descriptions and input schemas. Tool names follow verb_noun conventions (get_, search, reset_, diagnose_, check_, clear_, reindex_). Descriptions range from 115-310 chars, within the 10-1024 baseline. Parameters have type declarations and descriptions. Weaknesses: Input schemas lack some key metadata, no enums for constrained values, no explicit output schemas documented, parameter descriptions sometimes generic ('Optional path to export...'), no error handling guidance in descriptions, no indication of idempotency or retry safety for stateful operations. Tool composition is reasonable (mostly single-responsibility), but tools like search lack detailed parameter documentation on supported modes. The backward-compatibility layer (mcp_tools_compat.py) shows good refactoring discipline but obfuscates actual tool definitions across multiple files.
Check if a directory already has indexed data and provide recommendations. This tool helps users understand the current indexing state and make informed decisions about whether to reindex or use existing data.
Clear all chunks and metadata for a specific file.
Diagnose Tree-sitter parser health and functionality. This tool verifies parser installations, tests parsing functionality, and identifies potential issues with the intelligent chunking system.
Get comprehensive chunking performance metrics. This tool provides detailed metrics about intelligent code chunking performance, including success rates per language, processing speeds, error rates, and quality metrics.
Get metadata for a specific file from the vector database.
Get current progress of any ongoing indexing operations. This tool provides real-time progress updates during long indexing operations, including ETA, processing rate, memory usage, and stage information.
search tool lacks detailed parameter documentation. Input shows only 'query' parameter as required, but description mentions 'multiple search modes, context expansion, function-level precision' without documenting how to invoke these features. LLM cannot determine available options.
No output schemas documented for any tool. Tool descriptions do not specify what fields/structure each tool returns, forcing LLMs to guess at response format and unable to plan downstream calls that need chaining IDs.
Destructive operations (clear_file_metadata_tool, reindex_file_tool) lack confirmation/dry-run guidance. No indication in description that these are irreversible or require extra caution. No recovery guidance if called in error.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-21 | D | 57 | 2026-07-28+ | v2 |
| 2026-03-09 | D | 57 | - | v1 |
Reindex a specific file by clearing existing chunks and reprocessing.
Reset session-specific chunking metrics. This tool resets the current session metrics while preserving historical data. Useful for starting fresh performance measurements for a new indexing session.
Search indexed codebases with natural language, supporting multiple search modes, context expansion, and function-level precision results.
Parameters accept free-form strings without enums. E.g. language parameter in get_chunking_metrics_tool and diagnose_parser_health_tool accepts arbitrary language strings (e.g., 'python', 'javascript') but no enum constraint. LLMs may hallucinate unsupported languages.
No error handling or recovery guidance in any tool description. If search fails, LLM has no actionable next step. If reindex_file fails, no guidance on cause or fix.
Tool descriptions do not declare state-modifying behavior clearly. reset_chunking_metrics_tool says 'resets current session metrics while preserving historical data' but does not explicitly state this is a write operation with side effects. clear_file_metadata_tool does not state 'WARNING: This permanently deletes all chunks...'
Optional parameters with generic descriptions reduce clarity. E.g., export_path in get_chunking_metrics_tool: 'Optional path to export detailed metrics to a JSON file' does not specify format (absolute vs relative), required parent directory, or example path.