AgentStack
Browse Sign in
Browse Why AgentStack Sell Docs
Sign in
MCP unreviewed MIT Self-run

Code Graph Rag

mcp-vitali87-code-graph-rag · by vitali87

The ultimate RAG for your monorepo. Query, understand, and edit multi-language codebases with the power of AI and knowledge graphs

No reviews yet
0 installs
2 views
0.0% view→install

Install

$ agentstack add mcp-vitali87-code-graph-rag

Open-source listing, not yet scanned by AgentStack. Follow the source repository for install instructions.

Security review

⚠ Flagged

1 finding(s); flagged for manual review. · v0.1.0 How review works →

  • Prompt-injection patterns
  • Secret / credential exfiltration
  • Dangerous shell & filesystem operations
  • Untrusted network calls
  • Known-malicious package signatures
  • high Pipes remote content directly into a shell (remote code execution).

What it can access

  • Network access Used
  • Filesystem access No
  • Shell / process execution No
  • Environment & secrets Used
  • Dynamic code execution No

From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.

View the full security report →

Reliability & compatibility

Not yet reviewed
0 installs to date
no reviews yet
1mo ago

Declared compatibility

Claude CodeClaude DesktopCursorWindsurf

Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.

Preview Execution monitoring

We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.

How agent discovery & health will work →
Are you the author of Code Graph Rag? Claim this listing to set pricing, connect Stripe payouts, and keep 70% of every sale.
Sign up to claim

About

Code-Graph-RAG: A Graph-Based RAG System for Any Codebases

An accurate Retrieval-Augmented Generation (RAG) system that analyzes multi-language codebases using Tree-sitter, builds comprehensive knowledge graphs, and enables natural language querying of codebase structure and relationships as well as editing capabilities.

Latest News 🔥

  • PHP Language Support: Full PHP language support added — classes, interfaces, traits, enums, namespaces, PHP 8 attributes, and call graph analysis. Contributed by @rs-ipps.
  • C Language Support: Full C language support added — functions, structs, unions, enums, preprocessor includes, and call graph analysis. Contributed by @dj0nes.
  • Visualise any GitHub repo instantly! Just change github.com to gitcgr.com in any repo URL — that's it, only 3 letters! Get an interactive graph of the entire codebase structure. Try it now: gitcgr.com

🚀 Features

  • Multi-Language Support:

| Language | Status | Extensions | Functions | Classes/Structs | Modules | Package Detection | Additional Features | |--------|------|----------|---------|---------------|-------|-----------------|-------------------| | C | Fully Supported | .c | ✓ | ✓ | ✓ | ✓ | Functions, structs, unions, enums, preprocessor includes | | C++ | Fully Supported | .cpp, .h, .hpp, .cc, .cxx, .hxx, .hh, .ixx, .cppm, .ccm | ✓ | ✓ | ✓ | ✓ | Constructors, destructors, operator overloading, templates, lambdas, C++20 modules, namespaces | | Java | Fully Supported | .java | ✓ | ✓ | ✓ | - | Generics, annotations, modern features (records/sealed classes), concurrency, reflection | | JavaScript | Fully Supported | .js, .jsx | ✓ | ✓ | ✓ | - | ES6 modules, CommonJS, prototype methods, object methods, arrow functions | | Lua | Fully Supported | .lua | ✓ | - | ✓ | - | Local/global functions, metatables, closures, coroutines | | PHP | Fully Supported | .php | ✓ | ✓ | ✓ | - | Classes, interfaces, traits, enums, namespaces, PHP 8 attributes | | Python | Fully Supported | .py | ✓ | ✓ | ✓ | ✓ | Type inference, decorators, nested functions | | Rust | Fully Supported | .rs | ✓ | ✓ | ✓ | ✓ | impl blocks, associated functions | | TypeScript | Fully Supported | .ts, .tsx | ✓ | ✓ | ✓ | - | Interfaces, type aliases, enums, namespaces, ES6/CommonJS modules | | Go | In Development | .go | ✓ | ✓ | ✓ | - | Methods, type declarations | | Scala | In Development | .scala, .sc | ✓ | ✓ | ✓ | - | Case classes, objects |

  • 🌳 Tree-sitter Parsing: Uses Tree-sitter for robust, language-agnostic AST parsing
  • 📊 Knowledge Graph Storage: Uses Memgraph to store codebase structure as an interconnected graph
  • 🗣️ Natural Language Querying: Ask questions about your codebase in plain English
  • 🤖 AI-Powered Cypher Generation: Supports both cloud models (Google Gemini), local models (Ollama), and OpenAI models for natural language to Cypher translation
  • 🤖 OpenAI Integration: Leverage OpenAI models to enhance AI functionalities.
  • 📝 Code Snippet Retrieval: Retrieves actual source code snippets for found functions/methods
  • ✍️ Advanced File Editing: Surgical code replacement with AST-based function targeting, visual diff previews, and exact code block modifications
  • ⚡️ Shell Command Execution: Can execute terminal commands for tasks like running tests or using CLI tools.
  • 🚀 Interactive Code Optimization: AI-powered codebase optimization with language-specific best practices and interactive approval workflow
  • 📚 Reference-Guided Optimization: Use your own coding standards and architectural documents to guide optimization suggestions
  • 🔗 Dependency Analysis: Parses pyproject.toml to understand external dependencies
  • 🎯 Nested Function Support: Handles complex nested functions and class hierarchies
  • 🔄 Language-Agnostic Design: Unified graph schema across all supported languages

🏗️ Architecture

The system consists of two main components:

  1. Multi-language Parser: Tree-sitter based parsing system that analyzes codebases and ingests data into Memgraph
  2. RAG System (codebase_rag/): Interactive CLI for querying the stored knowledge graph

📋 Prerequisites

  • Python 3.12+
  • Docker & Docker Compose (for Memgraph)
  • cmake (required for building pymgclient dependency)
  • ripgrep (rg) (required for shell command text searching)
  • For cloud models: Google Gemini API key
  • For local models: Ollama installed and running
  • uv package manager

Installing cmake and ripgrep

On macOS:

brew install cmake ripgrep

On Linux (Ubuntu/Debian):

sudo apt-get update
sudo apt-get install cmake ripgrep

On Linux (CentOS/RHEL):

sudo yum install cmake
sudo dnf install ripgrep
# Note: ripgrep may need to be installed from EPEL or via cargo

🛠️ Installation

System-wide install (recommended for end users)

cgr is published to PyPI and can be installed system-wide so it works from any target repo without activating a project virtualenv. Install 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]"

For a Python-only install, omit the extras. For local development from a clone, use uv tool install --editable "/path/to/code-graph-rag[treesitter-full,semantic]".

After install, cgr is on PATH. From any repository, run:

cd ~/path/to/some-target-repo
cgr daemon up        # one-time: start the shared memgraph + qdrant stack
cgr start            # auto-sync the current repo and drop into the agent

cgr start defaults --repo-path to the current directory and auto-syncs the graph incrementally on entry. Pass --no-sync to skip the sync, or --no-start-stack if memgraph/qdrant already run elsewhere.

Useful subcommands:

| Command | Purpose | |---|---| | cgr daemon up/down/status/restart/logs | Manage the shared docker stack | | cgr stop | Alias for cgr daemon down | | cgr status | Show stack state + per-project last-sync timestamp | | cgr workspace create/list/show/delete | Manage named bundles of repos | | cgr workspace add-repo / remove-repo | Edit a workspace's repo set | | cgr start --workspace mono | Open the agent over every project in the workspace | | cgr start --projects a,b,c | Scope agent queries to the listed projects |

Indexed data persists across cgr daemon down thanks to named memgraph + qdrant volumes (memgraph_data, memgraph_log, qdrant_storage).

Local development install

git clone https://github.com/vitali87/code-graph-rag.git
cd code-graph-rag
  1. Install dependencies:

For basic Python support:

uv sync

For full multi-language support:

uv sync --extra treesitter-full

For development (including tests and pre-commit hooks):

make dev

This installs all dependencies and sets up pre-commit hooks automatically.

This installs Tree-sitter grammars for all supported languages (see Multi-Language Support section).

  1. Set up environment variables:
cp .env.example .env
# Edit .env with your configuration (see options below)

Configuration Options

The new provider-explicit configuration supports mixing different providers for orchestrator and cypher models.

Option 1: All Ollama (Local Models)
# .env file
ORCHESTRATOR_PROVIDER=ollama
ORCHESTRATOR_MODEL=llama3.2
ORCHESTRATOR_ENDPOINT=http://localhost:11434/v1

CYPHER_PROVIDER=ollama
CYPHER_MODEL=codellama
CYPHER_ENDPOINT=http://localhost:11434/v1
Option 2: All OpenAI Models
# .env file
ORCHESTRATOR_PROVIDER=openai
ORCHESTRATOR_MODEL=gpt-4o
ORCHESTRATOR_API_KEY=sk-your-openai-key

CYPHER_PROVIDER=openai
CYPHER_MODEL=gpt-4o-mini
CYPHER_API_KEY=sk-your-openai-key
Option 3: All Google Models
# .env file
ORCHESTRATOR_PROVIDER=google
ORCHESTRATOR_MODEL=gemini-2.5-pro
ORCHESTRATOR_API_KEY=your-google-api-key

CYPHER_PROVIDER=google
CYPHER_MODEL=gemini-2.5-flash
CYPHER_API_KEY=your-google-api-key
Option 4: Mixed Providers
# .env file - Google orchestrator + Ollama cypher
ORCHESTRATOR_PROVIDER=google
ORCHESTRATOR_MODEL=gemini-2.5-pro
ORCHESTRATOR_API_KEY=your-google-api-key

CYPHER_PROVIDER=ollama
CYPHER_MODEL=codellama
CYPHER_ENDPOINT=http://localhost:11434/v1

Get your Google API key from Google AI Studio.

Install and run Ollama:

# Install Ollama (macOS/Linux)
curl -fsSL https://ollama.ai/install.sh | sh

# Pull required models
ollama pull llama3.2
# Or try other models like:
# ollama pull llama3
# ollama pull mistral
# ollama pull codellama

# Ollama will automatically start serving on localhost:11434

> Note: Local models provide privacy and no API costs, but may have lower accuracy compared to cloud models like Gemini.

  1. Start Memgraph database:
docker compose up -d
  1. Verify installation:
# If installed from PyPI:
cgr --help

# If running from source:
uv run cgr --help

> Note: When running from source (cloned repo), prefix all cgr commands below with uv run, e.g., uv run cgr start ...

🛠️ Makefile Commands

Use the Makefile for common development tasks:

| Command | Description | |-------|-----------| | make help | Show this help message | | make all | Install everything for full development environment (deps, grammars, hooks, tests) | | make install | Install project dependencies with full language support | | make python | Install project dependencies for Python only | | make dev | Setup development environment (install deps + pre-commit hooks) | | make test | Run unit tests only (fast, no Docker) | | make test-parallel | Run unit tests in parallel (fast, no Docker) | | make test-integration | Run integration tests (requires Docker) | | make test-all | Run all tests including integration and e2e (requires Docker) | | make test-parallel-all | Run all tests in parallel including integration and e2e (requires Docker) | | make clean | Clean up build artifacts and cache | | make build-grammars | Build grammar submodules | | make watch | Watch repository for changes and update graph in real-time | | make readme | Regenerate README.md from codebase | | make lint | Run ruff check | | make format | Run ruff format | | make typecheck | Run type checking with ty | | make check | Run all checks: lint, typecheck, test | | make release | Build, verify, and publish the current pyproject version to PyPI, then tag and create a GitHub Release | | make pre-commit | Run all pre-commit checks locally (comprehensive test before commit) |

🎯 Usage

The Code-Graph-RAG system offers four main modes of operation:

  1. Parse & Ingest: Build knowledge graph from your codebase
  2. Interactive Query: Ask questions about your code in natural language
  3. Export & Analyze: Export graph data for programmatic analysis
  4. AI Optimization: Get AI-powered optimization suggestions for your code.
  5. Editing: Perform surgical code replacements and modifications with precise targeting.

Step 1: Parse a Repository

Parse and ingest a multi-language repository into the knowledge graph:

For the first repository (clean start):

cgr start --repo-path /path/to/repo1 --update-graph --clean

For additional repositories (preserve existing data):

cgr start --repo-path /path/to/repo2 --update-graph
cgr start --repo-path /path/to/repo3 --update-graph

Control Memgraph batch flushing:

# Flush every 5,000 records instead of the default from settings
cgr start --repo-path /path/to/repo --update-graph \
  --batch-size 5000

The system automatically detects and processes files for all supported languages (see Multi-Language Support section).

Step 2: Query the Codebase

Interactive mode:

Start the interactive RAG CLI:

cgr start --repo-path /path/to/your/repo

Non-interactive mode (single query):

Run a single query and exit, with output sent to stdout (useful for scripting):

python -m codebase_rag.main start --repo-path /path/to/your/repo \
  --ask-agent "What functions call UserService.create_user?"

Step 2.5: Real-Time Graph Updates (Optional)

For active development, you can keep your knowledge graph automatically synchronized with code changes using the realtime updater. This is particularly useful when you're actively modifying code and want the AI assistant to always work with the latest codebase structure.

What it does:

  • Watches your repository for file changes (create, modify, delete)
  • Automatically updates the knowledge graph in real-time
  • Maintains consistency by recalculating all function call relationships
  • Filters out irrelevant files (.git, node_modules, etc.)

How to use:

Run the realtime updater in a separate terminal:

# Using Python directly
python realtime_updater.py /path/to/your/repo

# Or using the Makefile
make watch REPO_PATH=/path/to/your/repo

With custom Memgraph settings:

# Python
python realtime_updater.py /path/to/your/repo --host localhost --port 7687 --batch-size 1000

# Makefile
make watch REPO_PATH=/path/to/your/repo HOST=localhost PORT=7687 BATCH_SIZE=1000

Multi-terminal workflow:

# Terminal 1: Start the realtime updater
python realtime_updater.py ~/my-project

# Terminal 2: Run the AI assistant
cgr start --repo-path ~/my-project

Performance note: The updater currently recalculates all CALLS relationships on every file change to ensure consistency. This prevents "island" problems where changes in one file aren't reflected in relationships from other files, but may impact performance on very large codebases with frequent changes. Note: Optimization of this behavior is a work in progress.

CLI Arguments:

  • repo_path (required): Path to repository to watch
  • --host: Memgraph host (default: localhost)
  • --port: Memgraph port (default: 7687)
  • --batch-size: Number of buffered nodes/relationships before flushing to Memgraph

Specify Custom Models:

# Use specific local models
cgr start --repo-path /path/to/your/repo \
  --orchestrator ollama:llama3.2 \
  --cypher ollama:codellama

# Use specific Gemini models
cgr start --repo-path /path/to/your/repo \
  --orchestrator google:gemini-2.0-flash-thinking-exp-01-21 \
  --cypher google:gemini-2.5-flash-lite-preview-06-17

# Use mixed providers
cgr start --repo-path /path/to/your/repo \
  --orchestrator google:gemini-2.0-flash-thinking-exp-01-21 \
  --cypher ollama:codellama

Example queries (works across all supported languages):

  • "Show me all classes that contain 'user' in their name"
  • "Find functions related to database operations"
  • "What methods does the User class have?"
  • "Show me functions that handle authentication"
  • "List all TypeScript components"
  • "Find Rust structs and their methods"
  • "Show me Go interfaces and implementations"
  • "Find all C++ operator overloads in the Matrix class"
  • "Show me C++ template functions with their specializations"
  • "List all C++ namespaces and their contained classes"
  • "Find C++ lambda expressions used in algorithms"
  • "Add logging to all database connection functions"
  • "Refactor the User class to use dependency injection"
  • "Convert these Python functions to async/await pattern"
  • "Add error handling to authentication methods"
  • "Optimize this function for better performance"

Step 3: Export Graph Data

For programmatic access and integration with other tools, you can export the entire knowledge graph to JSON:

Export during graph update:

cgr start --repo-path /path/to/repo --update-graph --clean -o my_graph.json

**Export existing graph with

Source & license

This open-source MCP server is cataloged on AgentStack and links to its original source — we do not rehost the code.

Install and usage instructions live in the source repository linked above.

Reviews

No reviews yet, be the first.

Versions

  • v0.1.0 Imported from the upstream source.