MCP server for navigating and analyzing code graphs, including call graphs, inheritance hierarchies, type relationships, and code search capabilities across multiple programming languages.
Three tools with clear verb-noun naming (get_callers, get_callees, get_call_chain) and solid descriptions (avg 180 chars, within 10-1024 baseline). All tools have proper JSON Schema with typed parameters and descriptions. However, output schemas are not documented, LLMs cannot predict return structure. No error handling guidance, no pagination despite potential for large result sets, and no tool annotations (readOnlyHint). Parameters lack constraints (e.g., limit bounds, id format). Descriptions are good but could be more prescriptive about when to use each tool vs. alternatives.
Find all call paths between two methods/functions using BFS traversal. Returns every possible call path from the source method to the target method within the given depth. Use this to understand how control flow reaches a specific method from a given entry point.
Get all methods/functions called by a given method or function. Follows CALLS edges outbound. Use this to understand what a method depends on and which external systems or components it interacts with.
Get all methods/functions that call a given method or function. Follows CALLS edges inbound. Includes the calling method's class context and file location. Use this to understand who uses a method — essential for impact analysis when refactoring.
Output schemas not documented. LLMs cannot predict return structure (fields, types, nesting). Agents must guess what data is available after each call.
No pagination or result limits documented. Tools may return unbounded lists (e.g., a method called by 1000+ callers). Large results blow context windows and degrade LLM reasoning.
No error handling guidance. If an invalid method ID is passed, what error is returned? How should the LLM recover? No recovery hints provided.
Parameter 'limit' lacks bounds. Description says 'default 20' but no min/max specified. LLMs may pass 0, negative, or absurdly large values.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 49 | 2026-07-28+ | v2 |
Parameter 'id' format not specified. Is it a fully qualified method name (com.example.MyClass.myMethod)? A symbol ID? A line number? Ambiguity forces LLM guessing.