Sandbox
@vitali87/code-graph-rag

MCP server for codebase graph queries and edits

Code-Graph-RAG reads a repository, builds a graph of files, symbols, and relationships, and serves that graph through a CLI and MCP server. Builders can ask questions, find code by intent, inspect call paths, and make AST-based edits with diffs before changes land.

5,116 stars673 forksPythonUpdated 6d ago
Who it's for

Builders who want their agent to inspect, search, and edit a monorepo through a shared code graph.

What it delivers

You can ask an agent about a large codebase and get answers, edits, and searches grounded in the repo’s real structure.

What it does

Tree-sitter parsing

Reads multi-language codebases and extracts functions, classes, modules, imports, and relationships.

Memgraph-backed knowledge graph

Stores the codebase as a shared graph so queries can follow structure instead of plain text only.

Natural-language querying

Turns plain English questions into graph queries and returns code-aware answers.

AST-based editing

Lets the agent patch code surgically and preview the diff before writing changes.

Dead code detection

Walks call and reference edges to find code that is not reached from entry points.

MCP server support

Exposes the code graph to Claude Code and other MCP clients for direct repo access.

Dynamic call tracing

Merges runtime traces from tests or eBPF profiles into the graph to reveal calls static analysis misses.

How to get it

  1. 1cgr is published to PyPI. Install it system-wide with the treesitter-full (all…
    # with uv (recommended)
    uv tool install "code-graph-rag[treesitter-full,semantic]"
    
    # or with pipx
    pipx install "code-graph-rag[treesitter-full,semantic]"
  2. 2To run code newer than the latest release, install from git
    uv tool install "code-graph-rag[treesitter-full,semantic] @ git+https://github.com/vitali87/code-graph-rag@main"
  3. 3Run
    # Start the packaged Memgraph + Qdrant stack (no compose file needed)
    cgr daemon up
    
    # Parse a repository into the graph, then query it
    cgr start --repo-path /path/to/repo --update-graph
    cgr start --repo-path /path/to/repo

README

Code-Graph-RAG

Code-Graph-RAG parses a multi-language codebase with Tree-sitter, builds a knowledge graph of its structure in Memgraph, and lets you query, edit, and optimise that code in plain English. It works across a monorepo of mixed languages under one unified graph schema.

demo

Latest News 🔥

  • File System Operations: Improved handling of file system operations with platform-neutral joins and safeguards against removing project root.
  • Cache Management: Enhanced cache management with atomic publishing, dedicated cache stamps, and improved deletion handling for orphan caches.
  • Graph Querying: Introduced deterministic graph query tools for more precise analysis of code relationships.
  • Re-ingestion & Parsing: Improved re-ingestion processes, including handling of deleted files, re-parsing of related files, and rebuilding of key data structures.
  • Security & Stability: Addressed security concerns by blocking removal of project root and improved stability by preventing skipped edits and handling orphaned caches.
  • C++ & Go Integration: Enhanced integration with C++ and Go, including parsing of module interfaces and handling of module-level class aliases.

See NEWS.md for the full history.

What It Does

Point Code-Graph-RAG at a repository and it reads every source file, extracts functions, classes, methods, modules, and the relationships between them, and stores the result as an interconnected graph. Once the graph exists you can:

  • Ask questions about the codebase in natural language and get answers grounded in the real structure.
  • Retrieve the actual source of any function, class, or method by name or by intent.
  • Edit code through the agent with AST-based surgical patching and a diff preview before anything changes.
  • Optimise code against language best practices or your own coding standards.
  • Find dead code by walking call and reference edges from entry points.
  • Search and rewrite structurally by AST pattern with ast-grep.
  • Overlay runtime behaviour: trace a test run (or pull production eBPF profiles) with cgr trace and merge the calls that actually happened into the graph, exposing dispatch that static analysis cannot see.

How It Works

The system has two components:

  1. Multi-language parser. A Tree-sitter based parser reads the codebase and ingests functions, classes, methods, modules, and their relationships into Memgraph under a single language-agnostic schema.
  2. RAG system (codebase_rag/). An interactive CLI that turns natural language into Cypher queries, retrieves matching code, and drives AI-powered editing and optimisation.
Source Code -> Tree-sitter Parser -> AST Analysis -> Memgraph Knowledge Graph
                                                             |
User Query -> AI Model (Cypher Gen) -> Cypher Query -> Graph Results -> Response

See the Architecture Overview and Graph Schema for the full picture.

Supported Languages

Python, TypeScript, TSX, JavaScript, Rust, Go, Java, C, C++, C#, PHP, Lua, and Dart are fully supported. Scala is in development, and Ruby, Kotlin, Swift, Elixir, Haskell, Solidity, Bash, and Nix have structural support (modules, functions, classes where the language has them, and imports) through the pluggable ast-grep tier. See the Language Support matrix for per-language capabilities.

Installation

cgr is published to PyPI. Install it system-wide with the treesitter-full (all languages) and semantic (vector search) extras:

# with uv (recommended)
uv tool install "code-graph-rag[treesitter-full,semantic]"

# or with pipx
pipx install "code-graph-rag[treesitter-full,semantic]"

Which version am I getting?

Three version lines exist and they intentionally differ:

wherewhat it tracks
git tagsevery version, one per merge
GitHub Releases (binaries, signatures)every 50th version, plus any security fix
PyPIevery 50th version, plus any security fix

So the newest tag on main usually runs ahead of the newest release, often by tens of patch versions; they coincide only just after a release. Nothing is stuck, the cadences differ by design. A security fix does NOT wait for the cadence: it ships a release and a PyPI upload immediately.

uv tool install and pipx install give you the newest PyPI version, which is the newest RELEASE, not the newest tag. Interim tags exist so every merge is addressable; binaries and PyPI uploads follow the cadence above.

To run code newer than the latest release, install from git:

uv tool install "code-graph-rag[treesitter-full,semantic] @ git+https://github.com/vitali87/code-graph-rag@main"

You also need Python 3.12+, Docker (for Memgraph), cmake, and ripgrep. Full prerequisites, source installs, and environment setup are in the Installation guide.

[!NOTE] The wheel is pure Python (py3-none-any), so the package itself installs on any platform with Python 3.12 or newer (dependencies may still need platform wheels or build tools, such as cmake for pymgclient). The piwheels build for Debian Bookworm shows as failed because Bookworm's system Python is 3.11, which is below our floor. On Raspberry Pi OS Bookworm, pin the interpreter explicitly, for example uv tool install --python 3.12 "code-graph-rag[treesitter-full,semantic]"; uv downloads Python 3.12 automatically and the PyPI wheel installs normally.

Quick Start

# Start the packaged Memgraph + Qdrant stack (no compose file needed)
cgr daemon up

# Parse a repository into the graph, then query it
cgr start --repo-path /path/to/repo --update-graph
cgr start --repo-path /path/to/repo

Repeat the first command for each repository you want indexed; the graph is shared, and syncing one project leaves the others alone. To start over from an empty graph, add --clean — it deletes every project in the shared graph, not just this one, and asks for confirmation first when other projects would be destroyed.

The Quick Start guide walks through parsing, querying, and exporting in five minutes.

MCP Server

Code-Graph-RAG runs as an MCP server so Claude Code and other MCP clients can query and edit your codebase directly. See the MCP Server guide for setup.

Documentation

Getting Started

User Guide

Architecture

Python SDK

Advanced

Enterprise Services

Code-Graph-RAG is open source and free to use. For organisations that need more, we offer fully managed cloud-hosted solutions and on-premise deployments:

  • Cloud-Hosted Deployment: Managed cloud infrastructure for both the graph database and the AI agent connection. Zero infrastructure overhead, so we handle scaling, updates, and availability while your team focuses on building.
  • On-Premise & Air-Gapped Deployment: Deploy Code-Graph-RAG entirely within your own environment, including air-gapped networks. Full data sovereignty for regulated industries and security-sensitive organisations.

We also offer custom development, integration consulting, technical support contracts, and team training.

View plans & pricing at code-graph-rag.com

Contributing

Please see CONTRIBUTING.md for contribution guidelines. Good first PRs come from the TODO issues.

Support

For issues or questions, check the Troubleshooting guide first, then open an issue.

License

MIT. See LICENSE.

Files in the repo

Repository payload41 top-level entries
  • .clusterfuzzlite
  • .github
  • .vscode
  • assets
  • benchmarks
  • cgr
  • codebase_rag
  • codec
  • docs
  • evals
  • examples
  • fixtures
  • fuzz
  • optimize
  • scripts
  • .coderabbit.yaml
  • .dockerignore
  • .env.example
  • .gitattributes
  • .gitignore
  • .gitmodules
  • .pre-commit-config.yaml
  • .python-version
  • build_binary.py
  • code-graph-rag-darwin-arm64.spec
  • CONTRIBUTING.md
  • Dockerfile
  • funding.json
  • GOVERNANCE.md
  • LICENSE
  • main.py
  • Makefile
  • mkdocs.yml
  • NEWS.md
  • PYPI_README.md
  • pyproject.toml
  • README.md
  • realtime_updater.py
  • server.json
  • sonar-project.properties
  • uv.lock

Discussion (0)

Ask about usage, or say what you built with it

Sign in to join the discussion.

No comments yet. Be the first to say what this is good for.

More connectors

Real-time global intelligence dashboard. AI-powered news aggregation, geopolitical monitoring, and infrastructure tracking in a unified situational awareness interface

86k

High-performance code intelligence MCP server. Indexes codebases into a persistent knowledge graph — average repo in milliseconds. 158 languages, sub-ms queries, 99% fewer tokens. Single static binary, zero dependencies.

43k

Universal provider proxy for OpenAI Codex & Claude Code — use any LLM (Claude, Gemini, Grok, DeepSeek, Ollama…) with Codex CLI, App, SDK, and Claude Code

14k
okf-memory/
okf-agent-memory

Git-native persistent memory for AI coding agents. Implements Google OKF v0.2 with sub-300µs in-memory BM25 search, embedded MCP server, and progressive disclosure. Slashes token bloat by 80% with zero external databases or dependencies. Built in pure Go.

547
tirth8205/
code-review-graph

Local-first code intelligence graph for MCP and CLI. Builds a persistent map of your codebase so AI coding tools read only what matters, with benchmarked context reductions on reviews and large-repo workflows.

31k
2akouwu/
reverify

Stop your AI from making things up — it proposes, deterministic tools decide, every claim checked against ground truth with evidence. Grounded facts and context survive resets. Reverse engineering is the proving ground. MCP server + CLI.

1.1k