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 https://github.com/Shashankss1205/CodeGraphContext/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


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 (codegraphcontext 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 20 programming languages.
  • Flexible Database Backend: KuzuDB (Default), FalkorDB Lite (Typical Unix default), FalkorDB Remote, Nornic DB, or Neo4j (all platforms via Docker/native).

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
⚛️ 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 FalkorDB Lite Neo4j / Nornic DB
Typical default Standard Default (embedded, powered by KuzuDB) Unix (Python 3.12+, when falkordblite works) When explicitly configured
Setup Zero-config / Embedded Zero-config / In-process Docker / External
Platform All (Windows Native, macOS, Linux) Unix-only (Linux/macOS/WSL) All Platforms
Use Case Desktop, IDE, Local development Specialized Unix development Enterprise, Massive graphs
Requirement pip install kuzu 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.21.0 (not installed on Python 3.13)
  • tree-sitter-language-pack>=0.6.0 (not installed on Python 3.13)
  • pyyaml
  • pathspec>=0.12.1
  • falkordb>=0.1.0
  • falkordblite>=0.1.0 (Unix only)
  • 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.

    • KuzuDB: Default for all platforms.
    • FalkorDB Lite: Preferred on Unix/macOS if available.
    • Neo4j: Run codegraphcontext neo4j setup to use an external server.

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
    • Claude
    • Gemini CLI
    • ChatGPT Codex
    • Cline
    • RooCode
    • Amazon Q Developer
    • Kiro

    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"
      ],
      "env": {
        "NEO4J_URI": "YOUR_NEO4J_URI",
        "NEO4J_USERNAME": "YOUR_NEO4J_USERNAME",
        "NEO4J_PASSWORD": "YOUR_NEO4J_PASSWORD"
      },
      "disabled": false,
      "alwaysAllow": []
    }
  }
}

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": []
    }
  }
}

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


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.4.8.tar.gz (5.3 MB view details)

Uploaded Source

Built Distribution

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

codegraphcontext-0.4.8-py3-none-any.whl (5.4 MB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for codegraphcontext-0.4.8.tar.gz
Algorithm Hash digest
SHA256 3ac0b3ee545ed8dddbcd1d90b638c4f6530aa076ca244f623c80856974d090e3
MD5 40a3796f74c550109bf605f0b70441b0
BLAKE2b-256 13205141fabb9d900659beb4c4f20c683d996863a832a391f801a889e9b869f1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for codegraphcontext-0.4.8-py3-none-any.whl
Algorithm Hash digest
SHA256 1ca4d25a448fc0cf9fe11466ae44b8b9aae70efe2904cb37a6a2489ff59b7b8b
MD5 1bea2ab3ac1132a8ec2043a1f3982828
BLAKE2b-256 e7e1364b4eeb0cf422a8027de10cc3b95c3dbe8d265bd3501f73913338dbd919

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