CodeGraphContext alternative: trace-mcp vs CodeGraphContext

TL;DR. CodeGraphContext is the peer that drives the most compiler-grade indexers, and that is the thing to understand before comparing anything else. Turn on SCIP_INDEXER=true and it shells out to eleven Sourcegraph SCIP indexer families, folds their symbol data into its property graph, and falls back to tree-sitter for whatever SCIP did not cover. Nobody else here does that, us included: our bridge auto-runs three.

The price is set-up. Every SCIP language needs its indexer binary installed first, C/C++ additionally need a compile_commands.json, and the graph itself lives in one of six database backends you pick between. trace-mcp asks none of those questions — one embedded SQLite+FTS5 store, no binaries, no backend — and spends its complexity budget elsewhere: 87 framework integrations resolving route → handler, controller → template and model → table, plus a write path.

Pick CodeGraphContext when reference precision on a mainstream language justifies installing a toolchain. Pick trace-mcp when the job continues past reading.

Head-to-head

Capability trace-mcp CodeGraphContext
GitHub stars 159 4.2K
License MIT MIT
Written in TypeScript Python
Maturity self-classified stable releases Development Status :: 3 - Alpha
Languages (tree-sitter) 81 23
SCIP indexers driven for you 3 (scip-typescript, scip-python, rust-analyzer) 11 families, opt-in via SCIP_INDEXER=true
Ingests a .scip index you built
Framework integrations ✓ 87 2 tools, Java Spring only
Framework edges beyond routing ✓ controller → template, model → table, component → component
Storage embedded SQLite + FTS5, no choice to make 6 backends: FalkorDB Lite / Remote, KuzuDB, LadybugDB, Nornic DB, Neo4j
Runs fully local, no API key ✓ (embedded backends)
MCP tools defined 181 29
MCP tools advertised by default 28 (~11.6K tok) 29 (~3.7K tok)
Trimming the surface ✓ presets + load_tools allowlist disabledTools denylist
Raw graph query escape hatch ✗ fixed tool set execute_cypher_query
Portable pre-indexed bundles .cgc snapshots, Hugging Face registry
Database structure as graph nodes ✓ MySQL, Redis, Cassandra ingesters
Impact analysis ✓ reverse traversal + decorator filter simulate_architectural_change (reports only)
Dead code / complexity ✓ detect and remove ✓ detect only
Refactoring tools ✓ rename, move, signature, AST codemod, extract
Security scanning ✓ OWASP Top-10, type-aware taint
SARIF / CI output ✓ 2.1.0, schema-validated
Session memory ✓ code-linked decision graph
Published token benchmark PR review context, 60 merged PRs

Verified on September 6, 2026 against CodeGraphContext’s source at repository head (pyproject.toml 0.6.13, latest tagged release v0.5.7, pushed that day). Tool count and names come from src/codegraphcontext/tool_definitions.py, the denylist from server.py, the indexer families from tools/scip_indexer.py, backends and language count from the README’s own tables.

When to pick CodeGraphContext

When to pick trace-mcp

Where we are not being smug

Their reference resolution beats ours where SCIP is installed. Eleven driven indexer families against our three is not a rounding difference, and compiler-grade symbol data is more accurate than any tree-sitter heuristic, ours included. We publish our own limits per language as a resolution_tier rather than claiming parity.

Their default tool surface is cheaper than ours. 29 tools for ~3.7K tokens against our 28 for ~11.6K including the server-instructions block. Our surface is trimmable per role and theirs only per denylist, which is the argument in our favour — but on the number itself they win.

Bundles are a genuinely good idea we do not have. Downloading a pre-built graph of a dependency instead of indexing it is the kind of thing that only looks obvious afterwards.

They document their own dependency pain in public. Their comments record that Kùzu was archived upstream and that redis-py is pinned to 5.x to keep FalkorDB Lite’s Unix-socket path working. Projects that write that down are easier to trust than projects that do not.

Our security scanning has a ceiling. The control-flow graph is line-based, not AST-based, and taint analysis is lexical rather than a real dataflow engine. Type-aware pruning cuts false positives; it does not make this a dataflow analyser.

If you maintain CodeGraphContext and something here is wrong, open an issue and we will fix it.

FAQ

What is the core difference between CodeGraphContext and trace-mcp? They buy reference precision with setup — eleven SCIP indexer families and a graph database of your choosing. We buy zero setup and framework-level edges, and we write code as well as reading it.

Does CodeGraphContext need a graph database installed? One of six backends. FalkorDB Lite is the default on Unix with Python 3.12+, and the embedded options are a pip install rather than a server — but KuzuDB and LadybugDB default to a 4 GiB buffer pool, so it is a decision with consequences. trace-mcp’s index is an embedded SQLite file.

Which one has the larger MCP tool surface? They define 29 and advertise 29 (~3.7K tokens), trimmable through a disabledTools denylist. We advertise 28 (~11.6K including server instructions) and keep the other 181-minus-28 one load_tools call away. Cheaper default: theirs.

Can CodeGraphContext refactor code or scan for vulnerabilities? No. Source read at head on September 6, 2026: no rename/move/codemod, no taint analysis, no SARIF, no cross-session memory. It finds dead code and computes complexity, and reports both.

What are CodeGraphContext bundles? Portable .cgc graph snapshots, published to a Hugging Face-hosted registry and pulled with load_bundle / search_registry_bundles, so a dependency’s graph can be fetched instead of built. Nobody else in this field ships that.

Next steps

Last updated: September 6, 2026