MCP server for AI agents — structured code analysis: symbols, deps, call sites, diffs, commit drafting
Server has 16 tools with mostly complete descriptions and clear naming. Tool names follow verb_noun convention (smart_read, find_symbols, trace_calls). Descriptions are detailed and explain WHEN to use each tool (e.g., 'Use INSTEAD of grep'). However, input schemas are not visible in the provided source code, only parameter names and descriptions are shown in the tool list. Without seeing actual JSON Schema definitions with type constraints, enums, and validation rules, schema quality cannot be verified. Error handling guidance is minimal. No tool annotations (readOnlyHint/destructiveHint) visible despite clear risk classifications (READ_ONLY vs WRITE). Output schemas are undocumented.
Project-wide structure: file counts, languages, directory tree. Use INSTEAD of find/ls + manual counting to understand project layout. ~98% token savings vs walking the tree manually. Call when first entering a new project to get oriented.
Approve and commit a draft commit message to git.
Analyze git diff and generate structured change intelligence: affected symbols, impact radius, risk assessment.
Generate a commit message draft from staged changes using AI.
Exact symbol search by name or type across the project. Use INSTEAD of grep to find function/class/method/interface/struct/enum definitions. ~99% token savings vs grep + read to find what you need.
Show current configuration: LLM providers, embedding models, vector index settings.
Input schemas not visible in source code. Parameter types, constraints (enums, min/max), and validation rules cannot be verified. Rubric requires JSON Schema with type definitions for schema score >30.
Output schemas undocumented. No visible documentation of what fields each tool returns, their types, or structure. LLMs cannot plan downstream tool calls without knowing response shape.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 47 | 2026-07-28+ | v2 |
All imports/dependencies of a file without reading its contents. Use INSTEAD of Read + manual import parsing to understand a file's dependencies. ~96% token savings vs reading the file and extracting imports manually.
Show aggregated health status of all system dependencies.
Full implementation of a symbol (function/class/method body).
Semantic AI summaries per symbol: purpose, behavior, confidence, provenance. Use when you need to understand what a symbol DOES, not just where it is. ~90% token savings vs reading the entire implementation to infer purpose. Requires: LLM provider configured (Ollama or OpenRouter).
Show server version, git commit, and build timestamp for staleness detection.
List all available tools with descriptions and schemas.
Structured file analysis: symbol hierarchy, dependencies, line ranges, doc comments. Use INSTEAD of Read/cat when exploring a file you haven't seen before. ~87% token savings vs reading entire file. Only fall back to Read when you need the full implementation body to make an edit. Even then, call smart_read first to find exact line ranges.
Stage files for commit in git.
Every call site of a symbol across the project. Impact analysis. Use INSTEAD of grep to find all usages before refactoring a function/class. ~90% token savings vs grep + manual context reading. Call BEFORE changing any shared symbol to understand impact radius.
Unstage files from git staging area.
Tool annotations missing. Tools are marked READ_ONLY or WRITE in metadata but no readOnlyHint/destructiveHint/idempotentHint annotations visible in schema. Agents cannot infer safety properties.
Minimal error handling guidance. No visible error recovery patterns, retryability classification, or actionable error messages. Descriptions lack 'what to do if this fails' guidance.
Sparse descriptions for utility tools. get_symbol_body, get_config, list_tools have descriptions under 50 chars. Insufficient context for LLM selection and parameter reasoning.