Skip to main content

An MCP server that indexes local code into a graph database to provide context to AI assistants.

Project description

๐Ÿ—๏ธ CodeGraphContext (CGC)

Turn code repositories into a queryable graph for AI agents.

๐ŸŒ Languages:

๐ŸŒ Help translate CodeGraphContext to your language by raising an issue & PR on GitHub Issues!


Bridge the gap between deep code graphs and AI context.

PyPI Version PyPI Downloads License MCP Compatible

Stars Forks Issues PRs Contributors

Tests E2E Tests Website Docs YouTube Demo

A powerful MCP server and CLI toolkit that indexes local code into a graph database to provide context to AI assistants and developers. Use it as a standalone CLI for comprehensive code analysis or connect it to your favorite AI IDE via MCP for AI-powered code understanding.


๐Ÿ“ Quick Navigation


โœจ Experience CGC

๐Ÿ‘จ๐Ÿปโ€๐Ÿ’ป Installation and CLI

Install in seconds with pip and unlock a powerful CLI for code graph analysis. Install and unlock the CLI instantly

๐Ÿ› ๏ธ Indexing in Seconds

The CLI intelligently parses your tree-sitter nodes to build the graph. Indexing using an MCP client

๐Ÿค– Powering your AI Assistant

Use natural language to query complex call-chains via MCP. Using the MCP server


Why CodeGraphContext?

CodeGraphContext is built for the moment when plain text search stops being enough. It turns a repository into a graph of files, symbols, calls, inheritance, imports, and relationships so you can move from "where is this defined?" to "how does this actually connect?" without jumping between tools.

flowchart LR
  A[Source code] --> B[Tree-sitter and SCIP indexers]
  B --> C[Graph database]
  C --> D[CLI queries]
  C --> E[MCP server]
  D --> F[Direct analysis]
  E --> G[AI assistants with repo context]

Comparison at a glance

Approach Best for Tradeoff
grep / file search Exact string lookup Misses relationships and code structure
RAG over code chunks Natural-language retrieval Can lose symbol-level precision
CodeGraphContext Repository-wide reasoning Requires an indexing step

Common use cases

  • Trace call chains across files and packages.
  • Understand class hierarchies, imports, and module boundaries.
  • Find dead code, hotspots, and unexpected dependencies.
  • Give an AI assistant the same structural context a maintainer would use.

FAQ

  • Do I need a remote service? No. CGC works locally with embedded backends or with external graph databases when you want them.
  • Is it only for one language? No. It supports a broad mix of mainstream languages and keeps expanding.
  • Can I use it with an AI assistant? Yes. That is one of the main reasons the MCP server exists.

Project Details


๐Ÿ‘จโ€๐Ÿ’ป Maintainer

CodeGraphContext is created and actively maintained by:

Shashank Shekhar Singh

Contributions and feedback are always welcome! Feel free to reach out for questions, suggestions, or collaboration opportunities.


Star History

Star History Chart


Features

  • Code Indexing: Analyzes code and builds a knowledge graph of its components.
  • Relationship Analysis: Query for callers, callees, class hierarchies, call chains and more.
  • Pre-indexed Bundles: Load famous repositories instantly with .cgc bundles - no indexing required! (Learn more)
  • Live File Watching: Watch directories for changes and automatically update the graph in real-time (cgc watch).
  • Interactive Setup: A user-friendly command-line wizard for easy setup.
  • Dual Mode: Works as a standalone CLI toolkit for developers and as an MCP server for AI agents.
  • Multi-Language Support: Full support for 23 programming languages.
  • Flexible Database Backend: FalkorDB Lite (Default), KuzuDB, LadybugDB, FalkorDB Remote, Nornic DB, or Neo4j (all platforms via Docker/native).

Architecture Overview

CodeGraphContext transforms source code into a queryable knowledge graph that can be explored through the CLI or AI assistants via MCP.

flowchart TD
    A[Code Repository] --> B[Tree-sitter / SCIP Indexing]
    B --> C[Knowledge Graph]
    C --> D[Graph Database]
    D --> E[CLI Toolkit]
    D --> F[MCP Server]
    F --> G[AI Assistant]

Workflow

  1. Source code is parsed using Tree-sitter or SCIP indexers.
  2. Relationships between functions, classes, imports, and calls are extracted.
  3. A knowledge graph is generated and stored in a graph database.
  4. Users can query the graph through the CLI or AI assistants using MCP.

๐Ÿ—๏ธ Architecture & Workflow

CodeGraphContext parses your source code and builds a comprehensive knowledge graph. This graph can be queried directly via the CLI toolkit or exposed to AI assistants through the MCP server.

flowchart TD
    A[Code Repository] -->|Parsed by| B[Tree-sitter / SCIP Indexing]
    B -->|Generates| C[Knowledge Graph]
    C -->|Stored in| D[(Graph Database)]
    D -->|Queried via| E[CLI Toolkit]
    D -->|Served by| F[MCP Server]
    F -->|Provides context to| G[๐Ÿค– AI Assistant]

    classDef default fill:#1f2937,stroke:#8b5cf6,stroke-width:2px,color:#fff;
    classDef db fill:#0f172a,stroke:#3b82f6,stroke-width:2px,color:#fff;
    classDef ai fill:#312e81,stroke:#a855f7,stroke-width:2px,color:#fff;
    
    D:::db
    G:::ai

Supported Programming Languages

CodeGraphContext provides comprehensive parsing and analysis for the following languages:

Language Language Language
๐Ÿ Python ๐Ÿ“œ JavaScript ๐Ÿ”ท TypeScript
โ˜• Java ๐Ÿ”ต C โž• C++
#๏ธโƒฃ C# ๐Ÿน Go ๐Ÿฆ€ Rust
๐Ÿ’Ž Ruby ๐Ÿ˜ PHP ๐ŸŽ Swift
๐ŸŽจ Kotlin ๐ŸŽฏ Dart ๐Ÿช Perl
๐ŸŒ™ Lua ๐Ÿš€ Scala ฮป Haskell
๐Ÿ’ง Elixir ๐Ÿ“œ Emacs Lisp (elisp) ๐ŸŒ HTML
๐ŸŽจ CSS โš›๏ธ TSX

Each language parser extracts functions, classes, methods, parameters, inheritance relationships, function calls, and imports to build a comprehensive code graph.


Database Options

CodeGraphContext supports multiple graph database backends to suit your environment:

Feature KuzuDB LadybugDB FalkorDB Lite Neo4j / Nornic DB
Typical default Cross-platform fallback when FalkorDB Lite is unavailable Optional embedded backend Default on Unix (Python 3.12+, when falkordblite is installed) When explicitly configured via cgc config db
Setup Zero-config / Embedded Zero-config / Embedded Zero-config / In-process Docker / External
Platform All (Windows Native, macOS, Linux) All (Windows Native, macOS, Linux) Unix-only (Linux/macOS/WSL) All Platforms
Use Case Desktop, IDE, Local development Custom research projects Specialized Unix development Enterprise, Massive graphs
Requirement pip install kuzu pip install ladybug pip install falkordblite Neo4j Server / Docker / Nornic Cloud
Speed โšก Extremely Fast โšก Fast ๐Ÿš€ Scalable
Persistence Yes (to disk) Yes (to disk) Yes (to disk)

SCIP indexing (optional)

When SCIP_INDEXER=true in your CGC config (~/.codegraphcontext/.env), some languages use external SCIP indexers for more accurate calls and inheritance than Tree-sitter heuristics alone.

C and C++ use scip-clang, which requires a compile_commands.json file (a JSON compilation database): one entry per translation unit with the real compiler command (include paths, -D defines, -std, etc.). Without it, scip-clang cannot run; CGC logs a warning and falls back to Tree-sitter for that repo. Typical ways to produce the file: CMake with -DCMAKE_EXPORT_COMPILE_COMMANDS=ON, or wrap your real build with Bear (e.g. bear -- make). CGC also looks under build/ and cmake-build-*/ for that filename.

C# uses scip-dotnet (Roslyn); you need a normal .csproj / .sln and a successful restoreโ€”no compile_commands.json.

SCIP is independent of which graph database you use (Kuzu, Neo4j, etc.); the same flag applies to all backends.


Used By

CodeGraphContext is already being explored by developers and projects for:

  • Static code analysis in AI assistants
  • Graph-based visualization of projects
  • Dead code and complexity detection

If youโ€™re using CodeGraphContext in your project, feel free to open a PR and add it here! ๐Ÿš€


Dependencies

  • neo4j>=5.15.0
  • watchdog>=3.0.0
  • stdlibs>=2023.11.18
  • typer>=0.9.0
  • rich>=13.7.0
  • inquirerpy>=0.3.4
  • python-dotenv>=1.0.0
  • tree-sitter>=0.24.0,<0.26.0
  • tree-sitter-language-pack>=1.6,<2.0
  • pyyaml
  • pathspec>=0.12.1
  • falkordb>=1.0,<1.6
  • falkordblite>=0.7,<0.10 (Unix only, Python 3.12+)
  • kuzu (KuzuDB engine)
  • fastapi>=0.100.0
  • uvicorn>=0.22.0
  • requests>=2.28.0
  • protobuf>=3.20,<3.21

Note: Python 3.10-3.14 is supported.


๐Ÿš€ Installation & Quick Start

  1. Install the toolkit:

    pip install codegraphcontext
    
  2. Troubleshooting (Command not found): If the codegraphcontext command is not found, run this one-line fix:

    curl -sSL https://raw.githubusercontent.com/CodeGraphContext/CodeGraphContext/main/scripts/post_install_fix.sh | bash
    
  3. Database Setup (Automatic): CodeGraphContext uses an embedded graph database by default.

    • FalkorDB Lite: Default backend.
    • KuzuDB: Cross-platform embedded backend.
    • Neo4j: Run codegraphcontext neo4j setup to use an external server.

๐Ÿงช Local Development Setup

If you want to run CodeGraphContext from a local clone and contribute changes, use an editable install:

git clone https://github.com/CodeGraphContext/CodeGraphContext.git
cd CodeGraphContext
python -m venv .venv
source .venv/bin/activate
pip install -e ".[dev]"

Then verify the install and try the local commands:

cgc --help
cgc doctor
cgc index .
cgc analyze callers main

For MCP server work, finish the setup with:

cgc mcp setup
cgc mcp start

If you are only installing the published package, pip install codegraphcontext is enough. If you are developing parser-heavy features and want the optional parsing extras too, install with pip install -e ".[dev,parsing]".


๐Ÿณ Docker (No Python Required)

Run CodeGraphContext without installing Python โ€” pull the image and start indexing:

Quick Start

# Pull the latest image
docker pull codegraphcontext/codegraphcontext:latest

# Index your current directory
docker run --rm -v "$(pwd):/workspace" codegraphcontext/codegraphcontext cgc index .

# List indexed repos
docker run --rm -v cgc-data:/home/cgc/.codegraphcontext \
    codegraphcontext/codegraphcontext cgc list

# Interactive shell
docker run -it --rm -v "$(pwd):/workspace" \
    -v cgc-data:/home/cgc/.codegraphcontext \
    codegraphcontext/codegraphcontext bash

Docker Compose

# Clone the repo and start with Docker Compose
git clone https://github.com/CodeGraphContext/CodeGraphContext.git
cd CodeGraphContext

# Start with embedded DB
docker compose run --rm cgc index .

# Start with external FalkorDB
docker compose --profile falkordb up -d

# Start with visualization server
docker compose --profile viz up -d
# Open http://localhost:8080

Available Docker Tags

Tag Description
latest Latest stable release
edge Latest from main branch (may be unstable)
0.4.19 Specific version
0.4 Latest patch in 0.4.x

For more advanced Docker usage, including running the MCP Server or connecting external databases, see our Comprehensive Docker Guide.


๐Ÿ“‹ Prerequisites

Before installing CodeGraphContext, ensure you have:

  • Python 3.10 or later
  • pip package manager
  • Git (optional, for cloning repositories)

Verify your Python installation:

python --version

๐Ÿš€ Step-by-Step Setup Guide

Step 1: Install CodeGraphContext

pip install codegraphcontext  # Installs CodeGraphContext and required dependencies

This command installs CodeGraphContext and all required dependencies.

Step 2: Verify Installation

codegraphcontext --help

If the command displays the available CLI commands, the installation was successful.

Step 3: Database Setup

CodeGraphContext automatically uses an embedded database by default, so no additional configuration is required for most users.


๐Ÿƒ How to Run the Project Locally

Index a Repository

codegraphcontext index .  # Scans current directory and builds code graph

This scans the current project and creates a searchable code graph.

View Indexed Repositories

codegraphcontext list

Displays all repositories currently indexed by CodeGraphContext.

Analyze Code

codegraphcontext analyze dead-code

Finds potentially unused code in the indexed repository.


โœ… Verify Everything Works

After indexing a repository, run:

codegraphcontext list  # Shows all indexed repositories in the system

If the command executes successfully and displays indexed repositories, your setup is complete and CodeGraphContext is ready to use.

For CLI Toolkit Mode

Start using immediately with CLI commands:

# Index your current directory
codegraphcontext index .

# List all indexed repositories
codegraphcontext list

# Analyze who calls a function
codegraphcontext analyze callers my_function

# Find complex code
codegraphcontext analyze complexity --threshold 10

# Find dead code
codegraphcontext analyze dead-code

# Watch for live changes (optional)
codegraphcontext watch .

# See all commands
codegraphcontext help

See the full CLI Commands Guide for all available commands and usage scenarios.

๐ŸŽจ Premium Interactive Visualization

CodeGraphContext can generate stunning, interactive knowledge graphs of your code. Unlike static diagrams, these are premium web-based explorers:

  • Premium Aesthetics: Dark mode, glassmorphism, and modern typography (Outfit/JetBrains Mono).
  • Interactive Inspection: Click any node to open a detailed side panel with symbol information, file paths, and context.
  • Quick Search: Live-search through the graph to find specific symbols instantly.
  • Intelligent Layouts: Force-directed and hierarchical layouts that make complex relationships readable.
  • Zero-Dependency Viewing: Standalone HTML files that work in any modern browser.
# Visualize function calls
codegraphcontext analyze calls my_function --viz

# Explore class hierarchies
codegraphcontext analyze tree MyClass --viz

# Visualize search results
codegraphcontext find pattern "Auth" --viz

๐Ÿค– For MCP Server Mode

Configure your AI assistant to use CodeGraphContext:

  1. Setup: Run the MCP setup wizard to configure your IDE/AI assistant:

    codegraphcontext mcp setup
    

    The wizard can automatically detect and configure:

    • VS Code
    • Cursor
    • Windsurf
    • Zed
    • Claude
    • Gemini CLI
    • ChatGPT Codex
    • Cline
    • RooCode
    • Amazon Q Developer
    • Kiro
    • Goose
    • OpenCode

    Upon successful configuration, codegraphcontext mcp setup will generate and place the necessary configuration files:

    • It creates an mcp.json file in your current directory for reference.
    • It stores your database credentials securely in ~/.codegraphcontext/.env.
    • It updates the settings file of your chosen IDE/CLI (e.g., .claude.json or VS Code's settings.json).
  2. Start: Launch the MCP server:

    codegraphcontext mcp start
    
  3. Use: Now interact with your codebase through your AI assistant using natural language! See examples below.


Ignoring Files (.cgcignore)

You can tell CodeGraphContext to ignore specific files and directories by creating a .cgcignore file in the root of your project. This file uses the same syntax as .gitignore.

Example .cgcignore file:

# Ignore build artifacts
/build/
/dist/

# Ignore dependencies
/node_modules/
/vendor/

# Ignore logs
*.log

MCP Client Configuration

The codegraphcontext mcp setup command attempts to automatically configure your IDE/CLI. If you choose not to use the automatic setup, or if your tool is not supported, you can configure it manually.

Add the following server configuration to your client's settings file (e.g., VS Code's settings.json or .claude.json):

{
  "mcpServers": {
    "CodeGraphContext": {
      "command": "codegraphcontext",
      "args": [
        "mcp",
        "start"
      ],
      "disabled": false,
      "alwaysAllow": []
    }
  }
}

OpenCode Configuration

For instructions on installing and configuring MCP servers with OpenCode, see the OpenCode MCP Guide.

If installed via pipx

If you installed CodeGraphContext using pipx, use the following configuration instead:

{
  "mcpServers": {
    "CodeGraphContext": {
      "command": "pipx",
      "args": [
        "run",
        "codegraphcontext",
        "mcp",
        "start"
      ],
      "env": {
        "NEO4J_URI": "YOUR_NEO4J_URI",
        "NEO4J_USERNAME": "YOUR_NEO4J_USERNAME",
        "NEO4J_PASSWORD": "YOUR_NEO4J_PASSWORD"
      },
      "disabled": false,
      "alwaysAllow": []
    }
  }
}

Token-Optimized Output (GCF)

Reduce tool response tokens by ~62% with the opt-in GCF output format:

pip install gcf-python
CGC_OUTPUT_FORMAT=gcf codegraphcontext mcp start

Or add it to your MCP client config:

{
  "mcpServers": {
    "CodeGraphContext": {
      "command": "codegraphcontext",
      "args": ["mcp", "start"],
      "env": {
        "CGC_OUTPUT_FORMAT": "gcf"
      }
    }
  }
}

GCF encodes structured data with positional fields (keys declared once, values pipe-delimited). Code graph query results (symbols, relationships, callers, complexity) are exactly the data shape where GCF saves the most. 100% LLM comprehension on all frontier models. Falls back to JSON if gcf-python is not installed.


Natural Language Interaction Examples

Once the server is running, you can interact with it through your AI assistant using plain English. Here are some examples of what you can say:

Indexing and Watching Files

  • To index a new project:

    • "Please index the code in the /path/to/my-project directory." OR
    • "Add the project at ~/dev/my-other-project to the code graph."
  • To start watching a directory for live changes:

    • "Watch the /path/to/my-active-project directory for changes." OR
    • "Keep the code graph updated for the project I'm working on at ~/dev/main-app."

    When you ask to watch a directory, the system performs two actions at once:

    1. It kicks off a full scan to index all the code in that directory. This process runs in the background, and you'll receive a job_id to track its progress.
    2. It begins watching the directory for any file changes to keep the graph updated in real-time.

    This means you can start by simply telling the system to watch a directory, and it will handle both the initial indexing and the continuous updates automatically.

Querying and Understanding Code

  • Finding where code is defined:

    • "Where is the process_payment function?"
    • "Find the User class for me."
    • "Show me any code related to 'database connection'."
  • Analyzing relationships and impact:

    • "What other functions call the get_user_by_id function?"
    • "If I change the calculate_tax function, what other parts of the code will be affected?"
    • "Show me the inheritance hierarchy for the BaseController class."
    • "What methods does the Order class have?"
  • Exploring dependencies:

    • "Which files import the requests library?"
    • "Find all implementations of the render method."
  • Advanced Call Chain and Dependency Tracking (Spanning Hundreds of Files): The CodeGraphContext excels at tracing complex execution flows and dependencies across vast codebases. Leveraging the power of graph databases, it can identify direct and indirect callers and callees, even when a function is called through multiple layers of abstraction or across numerous files. This is invaluable for:

    • Impact Analysis: Understand the full ripple effect of a change to a core function.

    • Debugging: Trace the path of execution from an entry point to a specific bug.

    • Code Comprehension: Grasp how different parts of a large system interact.

    • "Show me the full call chain from the main function to process_data."

    • "Find all functions that directly or indirectly call validate_input."

    • "What are all the functions that initialize_system eventually calls?"

    • "Trace the dependencies of the DatabaseManager module."

  • Code Quality and Maintenance:

    • "Is there any dead or unused code in this project?"
    • "Calculate the cyclomatic complexity of the process_data function in src/utils.py."
    • "Find the 5 most complex functions in the codebase."
  • Repository Management:

    • "List all currently indexed repositories."
    • "Delete the indexed repository at /path/to/old-project."

Contributing

Contributions are welcome! ๐ŸŽ‰
Please see our CONTRIBUTING.md for detailed guidelines. If you have ideas for new features, integrations, or improvements, open an issue or submit a Pull Request.

Join discussions and help shape the future of CodeGraphContext.

Project details


Release history Release notifications | RSS feed

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

codegraphcontext-0.5.3.tar.gz (448.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

codegraphcontext-0.5.3-py3-none-any.whl (504.2 kB view details)

Uploaded Python 3

File details

Details for the file codegraphcontext-0.5.3.tar.gz.

File metadata

  • Download URL: codegraphcontext-0.5.3.tar.gz
  • Upload date:
  • Size: 448.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for codegraphcontext-0.5.3.tar.gz
Algorithm Hash digest
SHA256 9710e0d56f0678c62e843ef47ab5cb0031af27a2693c36be371e4a8a1e51d999
MD5 0084caa2f0a157a0d29923de79468761
BLAKE2b-256 6a822625b4913dae825d71128b699141f9ac81a4a2001c4229d13214d45e66ba

See more details on using hashes here.

File details

Details for the file codegraphcontext-0.5.3-py3-none-any.whl.

File metadata

File hashes

Hashes for codegraphcontext-0.5.3-py3-none-any.whl
Algorithm Hash digest
SHA256 e25d2eb8741ef0fa7bf90a7646fc065abc3e9ac0d7d4c2a45c99a0be839939d4
MD5 05a90c115848b4cc40fb26fac743347e
BLAKE2b-256 81d102c923127ecfa128ddf4ad7ac7552f0d59678f935fb4b16c298b780b26c2

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page