Lets an AI agent query a local dependency graph to identify how code changes affect routes, calls, tables, and configurations.
Also known as cyberchronos00/code-graph, cg-code-graph
- Stars
- 4
- Tools
- —
- Downloads, 30 days
- 354
- Latest version
- 0.23.14
- Last commit
- Nov 12, 2026
- License
- MIT
What is code-graph MCP?
code-graph lets an AI agent query a local dependency graph to identify how code changes affect routes, calls, tables, and configurations.
Summary generated from the project's README
About code-graph MCP server
code-graph provides a local, deterministic dependency graph designed for developers and AI agents to analyze code impacts. By indexing a repository, it maps the relationships between routes, function calls, database tables, and configuration keys. This tool allows users to see exactly how a specific change might affect different parts of a system, providing file and line number evidence for every connection found in the graph.
Users can interact with the system via a command line interface or by connecting an AI agent through an MCP server. The server can be registered with clients like Cursor, Claude, or VS Code. It supports a wide range of languages including Python, TypeScript, PHP, Dart, Kotlin, Java, Swift, and Rust. Unlike many tools that rely on LLMs to interpret code, this server uses exact or heuristic analysis to ensure the dependency data is accurate and reproducible.
What you can do with it
- 1Audit security vulnerabilitiesList the inbound and outbound attack surface to find issues like hardcoded credentials or unguarded handlers.
- 2Verify route securityIdentify routes that perform write operations but lack an authentication guard.
Written from the project's README. Every use case is checked against a quote from it.
How to install code-graph MCP
Formats verified 10 Nov 2026Install code-graph MCP in Claude Code
$ claude mcp add code-graph -- uvx cg-code-graphInstall code-graph MCP in Cursor
~/.cursor/mcp.json
{
"mcpServers": {
"code-graph": {
"command": "uvx",
"args": [
"cg-code-graph"
]
}
}
}Install code-graph MCP in VS Code
.vscode/mcp.json
{
"servers": {
"code-graph": {
"type": "stdio",
"command": "uvx",
"args": [
"cg-code-graph"
]
}
}
}Install code-graph MCP in Claude Desktop
claude_desktop_config.json
{
"mcpServers": {
"code-graph": {
"command": "uvx",
"args": [
"cg-code-graph"
]
}
}
}Install code-graph MCP in Codex
~/.codex/config.toml
[mcp_servers.code-graph] command = "uvx" args = ["cg-code-graph"]
Install code-graph MCP in Gemini CLI
~/.gemini/settings.json
{
"mcpServers": {
"code-graph": {
"command": "uvx",
"args": [
"cg-code-graph"
]
}
}
}Automated checks
Ran Nov 12, 2026Full report →Passed our automated checks. That is not a security audit: read the code and give the server the narrowest access it needs. How checks work
- Source repository linked and reachablePass
- Open source license (OSI)Pass
- Commit or release in the last yearPass
- Package name not close to a popular packagePass
- Remote endpoint uses HTTPSNot checked
- Destructive tools are labelledNot checked
- No hidden instructions to the modelPass
- No critical advisory in the package or its dependenciesPass
README
View on GitHubcode-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.
code-graph MCP questions
How do I add code-graph MCP to Claude Code?
Run claude mcp add code-graph -- uvx cg-code-graph in your terminal. Add --scope user to make it available in every project.
How do I add code-graph MCP to Cursor?
Open ~/.cursor/mcp.json and add the server under mcpServers, using the Cursor config shown in the install section above.
Does this use an LLM to build the graph?
No, the dependency graph is local and deterministic without using an LLM.
Can it help with security auditing?
Yes, it can list the inbound and outbound attack surface and findings like hardcoded credentials or unguarded handlers.

