Skip to content

nahisaho/CodeGraphMCPServer

Repository files navigation

CodeGraphMCPServer

A lightweight, high-performance source code analysis MCP server with zero configuration

Python 3.11+ License: MIT MCP Tests Coverage CI

πŸ‡―πŸ‡΅ ζ—₯本θͺžη‰ˆ README

Overview

CodeGraphMCPServer is an MCP server that understands codebase structure and provides GraphRAG (Graph Retrieval-Augmented Generation) capabilities. With a self-contained architecture requiring no external database, it enables structural understanding and efficient code completion from MCP-compatible AI tools (GitHub Copilot, Claude Desktop, Cursor, etc.).

🧠 GraphRAG Features

  • Community Detection: Automatic code module clustering using Louvain algorithm
  • LLM Integration: Multi-provider design supporting OpenAI/Anthropic/Local LLMs
  • Global Search: Codebase-wide understanding using community summaries
  • Local Search: Context retrieval from entity neighborhoods

✨ Features

Feature Description
πŸš€ Zero Configuration No external DB required, pip install && serve to start immediately
🌳 AST Analysis Fast and accurate code analysis with Tree-sitter
πŸ”— Graph Construction Builds graphs of relationships between code entities
πŸ” 14 MCP Tools Dependency analysis, call tracing, code search
πŸ“š 4 MCP Resources Entities, files, communities, statistics
πŸ’¬ 6 MCP Prompts Code review, feature implementation, debug assistance
⚑ Fast Indexing 100K lines in under 30 seconds, incremental updates in under 2 seconds
🌐 Multi-language Support Python, TypeScript, JavaScript, Rust, Go, Java, PHP, C#, C, C++, HCL, Ruby, Kotlin, Swift, Scala, Lua (16 languages)

Requirements

  • Python 3.11+
  • MCP-compatible client (GitHub Copilot, Claude Desktop, Cursor, Windsurf)

Installation

Install with pip

pip install codegraph-mcp-server

Install from source (for development)

git clone https://github.com/nahisaho/CodeGraphMCPServer.git
cd CodeGraphMCPServer
python -m venv .venv
source .venv/bin/activate  # Linux/macOS
pip install -e ".[dev]"

Quick Start

1. Index a Repository

# Full index
codegraph-mcp index /path/to/repository --full

# Incremental index (default)
codegraph-mcp index /path/to/repository

# Auto re-index with file watching (v0.7.0 NEW)
codegraph-mcp watch /path/to/repository
codegraph-mcp watch /path/to/repository --debounce 2.0  # 2 second debounce
codegraph-mcp watch /path/to/repository --community     # Community detection after re-index

Output example:

Indexed 16 entities, 37 relations in 0.81s

2. Check Statistics

codegraph-mcp stats /path/to/repository

Output example:

Repository Statistics
=====================
Repository: /path/to/repository

Entities: 16
Relations: 37
Communities: 0
Files: 1

Entities by type:
  - class: 2
  - function: 2
  - method: 11
  - module: 1

3. Search Code

codegraph-mcp query "Calculator" --repo /path/to/repository

4. Start as MCP Server

# stdio transport (default)
codegraph-mcp serve --repo /path/to/repository

# SSE transport
codegraph-mcp start --repo /path/to/repository --port 8080

MCP Client Configuration

Claude Desktop

~/.config/claude/claude_desktop_config.json:

{
  "mcpServers": {
    "codegraph": {
      "command": "codegraph-mcp",
      "args": ["serve", "--repo", "/path/to/your/project"]
    }
  }
}

Claude Code

# stdio transport
claude mcp add codegraph -- codegraph-mcp serve --repo /path/to/project

# HTTP transport (SSE server)
codegraph-mcp start --port 8080  # In another terminal
claude mcp add --transport http codegraph http://0.0.0.0:8080

VS Code (GitHub Copilot)

.vscode/settings.json:

{
  "mcp.servers": {
    "codegraph": {
      "command": "codegraph-mcp",
      "args": ["serve", "--repo", "${workspaceFolder}"]
    }
  }
}

Cursor

~/.cursor/mcp.json:

{
  "mcpServers": {
    "codegraph": {
      "command": "codegraph-mcp",
      "args": ["serve", "--repo", "/path/to/your/project"]
    }
  }
}

πŸ›  MCP Tools (14)

Graph Query Tools

Tool Description Main Arguments
query_codebase Search code graph with natural language query, max_results
find_dependencies Find entity dependencies entity_id, depth
find_callers Find callers of function/method entity_id
find_callees Find callees of function/method entity_id
find_implementations Find interface implementations entity_id
analyze_module_structure Analyze module structure file_path

Code Retrieval Tools

Tool Description Main Arguments
get_code_snippet Get entity source code entity_id, include_context
read_file_content Get file content file_path, start_line, end_line
get_file_structure Get file structure overview file_path

GraphRAG Tools

Tool Description Main Arguments
global_search Cross-community global search query
local_search Local search in entity neighborhood query, entity_id

Management Tools

Tool Description Main Arguments
suggest_refactoring Suggest refactoring entity_id, type
reindex_repository Re-index repository incremental
execute_shell_command Execute shell command command, timeout

πŸ“š MCP Resources (4)

URI Pattern Description
codegraph://entities/{id} Entity details
codegraph://files/{path} Entities in file
codegraph://communities/{id} Community information
codegraph://stats Graph statistics

πŸ’¬ MCP Prompts (6)

Prompt Description Arguments
code_review Perform code review entity_id, focus_areas
explain_codebase Explain codebase scope, detail_level
implement_feature Feature implementation guide feature_description, constraints
debug_issue Debug assistance issue_description, context
refactor_guidance Refactoring guide entity_id, goal
test_generation Test generation entity_id, test_type

Usage Examples

Conversation with AI Assistant

You: What are the dependencies of the UserService class?

AI: [Using find_dependencies tool]
    UserService depends on:
    - DatabaseConnection (database.py)
    - Logger (utils/logging.py)
    - UserRepository (repositories/user.py)
You: What would be affected if I modify the authenticate method?

AI: [Using find_callers tool]
    Callers of authenticate:
    - LoginController.login() (controllers/auth.py:45)
    - APIMiddleware.verify_token() (middleware/api.py:23)
    - TestUserService.test_auth() (tests/test_user.py:78)
You: Explain the main components of this project

AI: [Using global_search tool]
    [Using explain_codebase prompt]
    
    This project uses a 3-tier architecture:
    1. Controllers layer: HTTP request handling
    2. Services layer: Business logic
    3. Repositories layer: Data access

Development

Run Tests

# Run all tests
pytest

# With coverage
pytest --cov=src/codegraph_mcp --cov-report=html

# Specific tests
pytest tests/unit/test_parser.py -v

Lint & Format

# Lint with Ruff
ruff check src tests

# Format with Ruff
ruff format src tests

# Type check with MyPy
mypy src

Architecture

src/codegraph_mcp/
β”œβ”€β”€ __init__.py          # Package initialization
β”œβ”€β”€ __main__.py          # CLI entry point
β”œβ”€β”€ server.py            # MCP server
β”œβ”€β”€ config.py            # Configuration management
β”œβ”€β”€ core/                # Core logic
β”‚   β”œβ”€β”€ parser.py        # Tree-sitter AST parser
β”‚   β”œβ”€β”€ graph.py         # NetworkX graph engine
β”‚   β”œβ”€β”€ indexer.py       # Repository indexer
β”‚   β”œβ”€β”€ community.py     # Community detection (Louvain)
β”‚   β”œβ”€β”€ semantic.py      # Semantic analysis
β”‚   β”œβ”€β”€ llm.py           # LLM integration (OpenAI/Anthropic/Local)
β”‚   └── graphrag.py      # GraphRAG search engine
β”œβ”€β”€ storage/             # Storage layer
β”‚   β”œβ”€β”€ sqlite.py        # SQLite persistence
β”‚   β”œβ”€β”€ cache.py         # File cache
β”‚   └── vectors.py       # Vector store
β”œβ”€β”€ mcp/                 # MCP interface
β”‚   β”œβ”€β”€ tools.py         # 14 MCP Tools
β”‚   β”œβ”€β”€ resources.py     # 4 MCP Resources
β”‚   └── prompts.py       # 6 MCP Prompts
└── languages/           # Language support (12 languages)
    β”œβ”€β”€ python.py        # Python extractor
    β”œβ”€β”€ typescript.py    # TypeScript extractor
    β”œβ”€β”€ javascript.py    # JavaScript extractor
    β”œβ”€β”€ rust.py          # Rust extractor
    β”œβ”€β”€ go.py            # Go extractor
    β”œβ”€β”€ java.py          # Java extractor
    β”œβ”€β”€ php.py           # PHP extractor
    β”œβ”€β”€ csharp.py        # C# extractor
    β”œβ”€β”€ c.py             # C extractor
    β”œβ”€β”€ cpp.py           # C++ extractor
    β”œβ”€β”€ hcl.py           # HCL (Terraform) extractor
    └── ruby.py          # Ruby extractor

Performance

Measured Values (v0.3.0)

Metric Measured Notes
Indexing speed 32 entities/sec 67 files, 941 entities
File processing speed 0.44 sec/file Python/TS/Rust mixed
Incremental index < 2 sec Changed files only
Query response < 2ms Graph search

Target Values

Metric Target
Initial index (100K lines) < 30 sec
Incremental index < 2 sec
Query response < 500ms
Startup time < 2 sec
Memory usage < 500MB

License

MIT License - See LICENSE

Acknowledgments

Related Links

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages