The graph gives agents a smaller reading list
code-review-graph parses a repository with Tree-sitter and stores functions, classes, imports, calls, inheritance, tests, and file relations in SQLite. When code changes, it traces callers and dependents to produce a review set rather than handing an agent the whole tree. The same data supports architecture maps, execution flows, affected tests, risk panels, graph exports, and cross-repository search. MCP tools make those answers available inside coding assistants.
The idea is useful because agent context is finite and repeated file reads cost time and tokens. The tool supports Python, JavaScript and TypeScript, Go, Rust, Java, C and C++, C#, Ruby, Kotlin, Swift, PHP, and many more formats. It also recognizes notebooks, Terraform structure, common single-file components, and user-defined Tree-sitter languages. Breadth is an attraction, but each parser has different semantic depth.
Installation changes agent configuration and project files
The quick start installs the Python package, runs code-review-graph install, and builds a graph. The installer detects Codex, Claude Code, Cursor, Windsurf, Zed, Continue, OpenCode, Gemini CLI, GitHub Copilot, and other platforms. Depending on the target, it writes MCP configuration, platform rules, hooks, or skills. That is more invasive than starting a read-only server by hand, so inspect the changes in a clean working tree.
Removal is better designed than many agent plugins. uninstall --dry-run previews its actions, ordinary uninstall asks for confirmation, and flags can retain graph data or user configuration. The README says unrelated MCP servers, hooks, skills, and JSONC comments remain untouched. Those are claims worth testing against your editor's exact files. Back up shared configuration before the first install, especially if several tools already write to it.
What happened when we ran it
Our fresh Python 3.12 sandbox installed 172 packages in 90 seconds. The installed environment occupied 5,344 MB, while the repository checkout itself was only 10.6 MB with 389 files and roughly 110,363 source lines. The build stage completed in 6 seconds.
The test command kept running until our 900-second cap. Its final output showed rows of passing dots and percentage markers at 2, 4, 7, 9, 12, 14, and 16 percent, then stopped mid-row. There was no failure traceback in the supplied tail, so the finding is a timeout, not failed assertions. We cannot state how many tests completed or whether the remaining suite would pass. pip-audit also reported 1 known vulnerability without package or severity detail.
The repository had a tests directory and 5 CI workflow files, but no Dockerfile. Our environment had 3 CPUs and 8 GB of RAM. Teams should reproduce the full suite with their own timeout, capture its duration, and identify slow groups before adding it to a merge gate.
The README is unusually candid about weak measurements
The project publishes context-reduction and impact evaluations, then explains where they mislead. Its graph-derived recall reaches 1.0 because the expected relationships come from the graph being tested, which makes the result circular. An independent co-change mode returned no predicted files on every graded commit in the August 2 capture, so the README refuses to quote an accuracy number from it. That honesty is more useful than a large headline ratio.
Other limits are concrete. The README reports search MRR of 0.35 and says Express queries returned no hits because of module naming. Flow detection reached 33% recall, with Python and PHP or Laravel stronger than JavaScript and Go. Small single-file edits can cost more graph context than reading the changed file. These figures mean the tool should propose where to look, while a human or agent verifies the actual call paths and tests.
Version 2.3.8 fixed watch mode, then new gaps appeared
Release 2.3.8 shipped on August 21, 2026, after 85 merged pull requests since 2.3.7. Its notes describe fixes for ignored directories exhausting watch limits, replaced directories going silent, symlinked repositories missing events, inconsistent repository-root spelling, and oversized tool responses. It also added clearer explanations for empty query results instead of returning an unexplained zero.
The repository was pushed on August 22. GitHub lists 111 open issues and pull requests combined; a search excluding pull requests found 69 open issues. Fresh reports include watch health saying OK after registration failure, an update fallback replacing another repository's graph, Python test lookup returning zero, and four query tools still producing unbounded responses. One issue reports 7 failures against an MCP conformance test for the July 28 specification.
Local storage keeps code private, with optional model calls
The core graph lives under .code-review-graph/ in SQLite and does not need a hosted database. The GitHub Action builds and queries it on the CI runner. Exports can include absolute paths and structural metadata, and the README warns users to sanitize them before publishing. That is a useful privacy boundary for source code, though MCP clients still decide what graph answers enter a model conversation.
Semantic search is optional. Local sentence-transformer embeddings keep that step on the machine, while Gemini, MiniMax, Voyage AI, and OpenAI-compatible providers add external services and credentials. Teams with strict source controls should confirm exactly what text each provider receives. Static graph queries can remain local and avoid that question entirely.
Use it as evidence, never as the reviewer
Joern is better suited to security-oriented code property graph work. Semgrep fits deterministic CI rules. SCIP supplies a common indexing format for teams building their own navigation or analysis layer. code-review-graph is aimed directly at MCP and coding-agent workflows, with install scripts and prompts that reduce the effort to put graph queries in a chat.
Our run makes a trial reasonable but blocks a blanket recommendation. The package builds, documentation names real limitations, and the local graph is easy to remove. The 5.3 GB environment, timed-out suite, parser gaps, and fresh correctness issues require a controlled pilot. Measure whether agents actually read fewer files and catch more relevant tests on your repository. If that evidence is missing, the graph is extra machinery.

