io.github.cyberchronos00/cg-code-graph·Dev tools

code-graph

Local dependency graph: callers, entry points and file:line evidence for what a change affects.

Stars
4
Version
0.23.0
License
MIT
Review
Passed
Language
Python
Last commit
12m ago
Forks
1
Open issues
57
Registry update
Oct 16, 2026
ai-agentscall-graphcode-graphcode-intelligencecppdjangoflutterkotlinlaravelmcpmcp-servermodel-context-protocol

Connect

pypi
Terminal
$claude mcp add cg-code-graph \  -- uvx cg-code-graph==0.23.0

Environment variables

Nothing to configure — it works as is.

Security review

Review passed

Reviewed 47m ago.

metadata
scanned
packages
1 checked

No findings.

Tools

This server runs on your machine, so its tool list is not fetched before install — the README below describes what it offers.

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.

PyPI Downloads Python 3.11+ License: MIT Docs

Docs · Quick start · CLI · MCP · Changelog

cg visual view: the graph around the warehouse connection, a selected node with its evidence paths and source, then the planned-change overlay for the preorders plan

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

Terminal demo: cg indexes the bundled Laravel and Nuxt sample apps, links them, then runs reaches, path, impact and plan check

Supported languages

LanguageFrameworks and factsCallsDocs
PythonDjango (+ DRF, django-ninja), FastAPI / Starlette, Flask, Celeryexact (stdlib ast)Python
TypeScript JavaScriptNuxt / Vue, NestJS, Next.js, Astro, Express, Fastify, Koa, Hono, Elysia, React Router / Remixexact (TypeScript compiler API)TS frameworks
PHPLaravel (routes, route attributes, middleware, queues, broadcasting, outbound HTTP)exact (nikic/php-parser; needs PHP 8.2+)PHP
DartFlutterexact (Dart analyzer; needs the Dart SDK)Platforms
KotlinAndroid, Kotlin Multiplatform, Springheuristic; exact with scip-java (opt-in)Kotlin
JavaSpring (routes, guards, beans, tables, clients)heuristic; exact with scip-java (opt-in)Java
SwiftiOS / SwiftPMheuristic; exact with the Swift index store (opt-in)Swift
Rust C C++crates / modules, entry points, FFI, #[cfg] / #if gatesheuristic; exact with rust-analyzer / scip-clangRust, 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 (--quiet feeds your test runner).
  • Across repos: 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).
  • Route guards: cg routes --writes --unguarded lists routes that write with no auth guard. Laravel checks inside the action count as inline guards unless --strict.
  • Security views: 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.
  • MCP server (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.
  • 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.

From the server's repository — third-party content, read it before running anything it suggests.

More in Dev tools

Listing from the official MCP Registry · repository facts from GitHub, just now.