MCP server that provides tools to query a repository's context graph built from code analysis. Returns ranked nodes with file:line spans and source code inlined.
Graft MCP Server provides 6 code-graph analysis tools with clear, well-structured input schemas and detailed descriptions. All tools follow a consistent naming pattern (graft_*) and include comprehensive parameter documentation. However, output schemas are not documented in the visible source, and tool annotations (readOnlyHint/destructiveHint) are absent. Error handling guidance is not evident from the definitions. The descriptions are detailed and contextual (ranging 90-320 chars), meeting the 50-200 char LLM-optimized target. All parameters have type definitions and descriptions. Tools are focused and single-purpose, demonstrating good composition patterns.
Report whether the committed graph is in sync with the code (drift check).
Signatures-only view of one file — every definition's signature + line span, ~10× cheaper than reading the file ($0, no LLM).
Regex search over the graph's indexed files, hits grouped by innermost enclosing symbol and ranked by incoming-edge count (coupling) — which hit matters, not just where it is.
Query the repo context graph in plain words. Returns ranked nodes with exact file:line spans and the relevant source inlined — usually the full answer, no file reads needed.
Token-budgeted repo orientation — directory clusters, per-directory hubs, and global hotspots computed purely from the wiring graph ($0, no LLM). Use this to get oriented in an unfamiliar repo before diving into files.
Structural edges for a symbol, over call/reference/import/implements/extends ($0, no LLM). Defaults to direct callers (who depends on it). Set direction:"out" for callees (what it calls); set depth>1 (or depth:"all" for the full closure) to walk transitively for the full blast radius — every source that breaks if it changes. Run before a multi-file refactor to find ALL affected files.
Output schemas not documented. While input schemas are complete, the tool definitions do not specify what fields/structure each tool returns. LLMs cannot plan multi-step sequences without knowing response shape.
Tool annotations missing. No readOnlyHint, destructiveHint, or idempotentHint annotations visible in tool definitions. All tools are read-only (Risk: READ_ONLY noted in metadata), but this should be declared via schema annotations for protocol compliance and agent safety.
Error handling and recovery guidance not visible in tool descriptions. Descriptions do not explain what errors a tool might return or how to recover (e.g., what to do if a symbol is not found in graft_trace_calls).
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | B | 71 | 2026-07-28+ | v2 |
Parameter constraints not fully specified. Parameters like 'limit' in graft_find_code and 'depth' in graft_trace_calls accept numeric/enum values but lack explicit min/max bounds or allowed value documentation in descriptions.