CodeGraphMCPServer
by nahisaho
README.md
# CodeGraphMCPServer
**A lightweight, high-performance source code analysis MCP server with zero configuration**
[](https://www.python.org/downloads/)
[](https://opensource.org/licenses/MIT)
[](https://modelcontextprotocol.io/)
[]()
[]()
[](https://github.com/nahisaho/CodeGraphMCPServer/actions/workflows/ci.yml)
[šÆšµ ę„ę¬čŖē README](README.ja.md)
## 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
```bash
pip install codegraph-mcp-server
```
### Install from source (for development)
```bash
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
```bash
# 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
```bash
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
```bash
codegraph-mcp query "Calculator" --repo /path/to/repository
```
### 4. Start as MCP Server
```bash
# 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`:
```json
{
"mcpServers": {
"codegraph": {
"command": "codegraph-mcp",
"args": ["serve", "--repo", "/path/to/your/project"]
}
}
}
```
### Claude Code
```bash
# 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`:
```json
{
"mcp.servers": {
"codegraph": {
"command": "codegraph-mcp",
"args": ["serve", "--repo", "${workspaceFolder}"]
}
}
}
```
### Cursor
`~/.cursor/mcp.json`:
```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
```bash
# 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
```bash
# 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](LICENSE)
## Acknowledgments
- [Model Context Protocol](https://modelcontextprotocol.io/) - MCP specification
- [Tree-sitter](https://tree-sitter.github.io/) - AST analysis
- [NetworkX](https://networkx.org/) - Graph algorithms
- [Microsoft GraphRAG](https://github.com/microsoft/graphrag) - GraphRAG concept
## Related Links
- [MCP Python SDK](https://github.com/modelcontextprotocol/python-sdk)
- [MCP Specification](https://spec.modelcontextprotocol.io/)
This server cannot be deployed
Maintenance
ActivityInactive
ResponsivenessUnresponsive