Local dependency graph: callers, entry points and file:line evidence for what a change affects.
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
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
| 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.
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 (--quiet feeds your test runner).cg link matches client HTTP calls (frontends and Laravel / Guzzle backends) to server routes, and checks request keys (Laravel FormRequest, Elysia schemas, Nuxt / TypeScript bodies).cg routes --writes --unguarded lists routes that write with no auth guard. Laravel checks inside the action count as inline guards unless --strict.cg surface lists 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-on for CI.cg-mcp) so agents query the graph instead of grepping. One server can serve many graphs (graphs plus an optional graph argument); a single --db stays one graph. See MCP.cg serve) and plan checks (cg plan check) for planned changes.Install · Quick start · CLI · MCP · Configuration · Architecture · Limitations
Changelog · Contributing · Security · MIT License
More recordings: docs/media.
Source-derived launch command. Check the maintainer’s required arguments and credentials before running:
uvx cg-code-graphMerge this template into ~/Library/Application Support/Claude/claude_desktop_config.json. Keep existing servers. Add any arguments, credentials, and permissions required by the maintainer; this template has not been install-tested.
{
"mcpServers": {
"io-github-cyberchronos00-cg-code-graph": {
"command": "uvx",
"args": [
"cg-code-graph"
]
}
}
}Restart Claude Desktop completely for changes to take effect. Confirm the server appears connected in the client’s tool list, then try a read-only example from its documentation.
Claude Desktop setup referencecode-graph works with any MCP-compatible client. Copy the config snippet from the Configuration section above and add it to the file shown for your client, then restart the application.
~/Library/Application Support/Claude/claude_desktop_config.jsonRestart Claude Desktop completely for changes to take effect.~/.cursor/mcp.jsonRestart Cursor for changes to take effect..vscode/mcp.jsonReload VS Code window for changes to take effect.~/.codeium/windsurf/mcp_config.jsonRestart Windsurf for changes to take effect..mcp.jsonSave at the project root, then start Claude Code in that project and review the MCP server approval prompt. Keep real credentials out of shared files.