code-graph
Local dependency graph: callers, entry points and file:line evidence for what a change affects.
Install
Add this to your client's MCP configuration (Claude Desktop: claude_desktop_config.json; Cursor: .cursor/mcp.json; VS Code and others use the same "mcpServers" shape).
cg-code-graphclaude mcp add code-graph -- uvx cg-code-graph==0.23.13 --db --tools
{
"mcpServers": {
"code-graph": {
"command": "uvx",
"args": [
"cg-code-graph==0.23.13",
"--db",
"--tools"
]
}
}
}
Documentation
From the project's README on GitHub, refreshed weekly. Links open on GitHub.
code-graph
See everything a change affects before you make it: a local, deterministic dependency graph of routes, calls, tables and config, with file:line evidence for every hop.
For you and your AI agent (CLI + MCP). No LLM in the graph.
Docs · Quick start · CLI · MCP · Changelog
Quick start
pipx install cg-code-graph # or: uv tool install cg-code-graph
cg index . --db out/graph.db # prints starter queries for your repo
cg install --host cursor # or claude, codex, vscode, …: registers the MCP server and a "use cg first" agent rule
cg reaches table:orders --db out/graph.db # any table, connection or config key
Try it on a bundled sample, link a frontend to a backend, or connect an agent over MCP: Quick start guide. Other install options (install.sh, Windows, exact-mode toolchains): Install.
cg reaches table:store_books on the bundled Django sample:
dependents: 18 nodes (code: 6, entry points: 9, other: 3)
== RUNTIME (reached from http_route / ... / queue_job / listener): 5 functions/methods
catalog.api.create_book depth=1 conf=resolved http_route(1)
path: function:catalog.api.create_book
-WRITES_TABLE[resolved @ catalog/api.py:27]-> table:store_books
catalog.signals.review_saved depth=3 conf=resolved listener(1)
path: function:catalog.signals.review_saved
-DISPATCHES[exact @ catalog/signals.py:12]-> job:catalog.tasks.recompute_rating
-HANDLED_BY[exact @ catalog/tasks.py:13]-> function:catalog.tasks.recompute_rating
-READS_TABLE[resolved @ catalog/tasks.py:14]-> table:store_books
Supported languages
| Language | Frameworks and facts | Calls | Docs |
|---|---|---|---|
| Django (+ DRF, django-ninja), FastAPI / Starlette, Flask, Celery | exact (stdlib ast) | Python | |
| Nuxt / Vue, NestJS, Next.js, Astro, Express, Fastify, Koa, Hono, Elysia, React Router / Remix | exact (TypeScript compiler API) | TS frameworks | |
| Laravel (routes, route attributes, middleware, queues, broadcasting, outbound HTTP) | exact (nikic/php-parser; needs PHP 8.2+) | PHP | |
| Flutter | exact (Dart analyzer; needs the Dart SDK) | Platforms | |
| Android, Kotlin Multiplatform, Spring | heuristic; exact with scip-java (opt-in) | Kotlin | |
| Spring (routes, guards, beans, tables, clients) | heuristic; exact with scip-java (opt-in) | Java | |
| iOS / SwiftPM | heuristic; exact with the Swift index store (opt-in) | Swift | |
crates / modules, entry points, FFI, #[cfg] / #if gates | heuristic; exact with rust-analyzer / scip-clang | Rust, C and C++ |
Go and others: import a SCIP index with cg index --scip FILE. Run cg doctor to see exact / heuristic per language on your machine.
What you get
reaches,impact,path: every caller, route, job and page that reaches a table, config key or method.cg affected --base main: the tests and entry points a change reaches (--quietfeeds your test runner).- Across repos:
cg linkmatches client HTTP calls (frontends and Laravel / Guzzle backends) to server routes, and checks request keys (Laravel FormRequest, Elysia schemas, Nuxt / TypeScript bodies). - Route guards:
cg routes --writes --unguardedlists routes that write with no auth guard. Laravel checks inside the action count as inline guards unless--strict. - Security views:
cg surfacelists the inbound / outbound attack surface and findings (hardcoded credentials, plaintext protocols, unverified webhooks, unguarded handlers, listeners on all interfaces, disabled TLS / SSH verification, plaintext gRPC, exposed IPC, outbound URLs built from request input) as text, JSON or SARIF, with--fail-onfor CI. - MCP server (
cg-mcp) so agents query the graph instead of grepping. One server can serve many graphs (graphsplus an optionalgraphargument); a single--dbstays one graph. See MCP. - Visual view (
cg serve) and plan checks (cg plan check) for planned changes.
Docs
Install · Quick start · CLI · MCP · Configuration · Architecture · Limitations
Changelog · Contributing · Security · MIT License
More recordings: docs/media.
Frequently asked questions
What is code-graph?
Local dependency graph: callers, entry points and file:line evidence for what a change affects.
How do I install code-graph?
It runs on your machine. In Claude Code: claude mcp add code-graph -- uvx cg-code-graph==0.23.13 --db --tools. For other clients, paste the JSON configuration from this page into their MCP settings.
Does code-graph need an API key?
Its registry entry lists no required key or secret. Some features may still need an account with the service it connects to.
Is code-graph open source?
Yes. Its code is on GitHub under the MIT license.
Who maintains code-graph?
It is published by cyberchronos00. AI.tn lists it but does not maintain or endorse it.
From the official MCP Registry. Listing is not an endorsement: review a server's code and permissions before giving it access to your data.