C++ Graph RAG Server
БесплатноНе проверенA Model Context Protocol server for analyzing large C++ codebases with semantic search, crash dump analysis, and a web UI for configuration.
Описание
A Model Context Protocol server for analyzing large C++ codebases with semantic search, crash dump analysis, and a web UI for configuration.
README
A powerful Model Context Protocol (MCP) server for analyzing large C++ codebases using Graph-RAG architecture. Features semantic search, crash dump analysis, and a web UI for configuration.
Features
- Graph-RAG Architecture: Combines semantic search (RAG) with relationship graphs
- Crash Dump Analysis: Parse stack traces and find problematic code instantly
- Tree-sitter Parsing: Accurate C++ parsing that understands syntax
- Incremental Indexing: Smart change detection and efficient updates
- pgvector Storage: Fast vector similarity search
- Web UI Dashboard: Configure directories and monitor indexing status
- Docker + Podman: Works with both container runtimes
Quick Start
Prerequisites
- Docker (20.x+) or Podman (4.x+)
- 4GB+ RAM (8GB recommended for large codebases)
- 5GB free disk space
1. Configure Environment
# Copy example config
cp env.example .env
# Edit .env to set your source code path
# Windows example: HOST_PATH=C:/Projects
# Linux example: HOST_PATH=/home/user/projects
2. Build and Start
Using Docker:
# Build images
docker-compose build
# Start services
docker-compose up -d
# View logs
docker-compose logs -f mcp-server
Using Podman:
# Build images
podman-compose build
# Start services
podman-compose up -d
# View logs
podman-compose logs -f mcp-server
3. Configure Directories
Open the web UI at http://localhost:8000 to:
- Browse your mounted directories
- Select folders to index
- Monitor indexing progress
- Test searches
4. Connect to Claude Desktop / VS Code
Add to your MCP client configuration:
Claude Desktop (%APPDATA%\Claude\claude_desktop_config.json on Windows):
{
"mcpServers": {
"cpp-codebase": {
"url": "http://localhost:8000/mcp/v1"
}
}
}
VS Code (MCP extension settings):
{
"mcp.servers": {
"cpp-codebase": "http://localhost:8000/mcp/v1"
}
}
Web UI
The dashboard at http://localhost:8000 provides:
| Feature | Description |
|---|---|
| Indexing Status | View files indexed, entities found, progress |
| Directory Browser | Navigate and select directories to index |
| Quick Search | Test semantic search queries |
| Re-index Button | Manually trigger re-indexing |
Available MCP Tools
search_code
Semantic search across your codebase.
"Find database connection patterns"
"Show mutex locking implementations"
find_symbol
Precise symbol lookup with usages.
"Find ConnectionPool::acquire"
"Where is DatabaseManager defined?"
trace_dependencies
Graph traversal for dependencies.
"What does AuthManager depend on?"
"Show me everything that calls validateUser"
get_context
Comprehensive context for AI agents.
"Get context about the payment processing module"
analyze_debugging_context
Analyze crash dumps from Visual Studio.
Provide: file path, line number, exception info, call stack
find_code_location
Navigate to specific file and line.
"Show me database_connection.cpp line 95"
Configuration
Environment Variables
| Variable | Default | Description |
|---|---|---|
HOST_PATH |
./example_code |
Path to mount as /host |
MONITORED_PATHS |
(empty) | Comma-separated paths to index |
MCP_PORT |
8000 |
Port for API and web UI |
DB_NAME |
cpp_codebase |
PostgreSQL database name |
DB_USER |
postgres |
Database user |
DB_PASSWORD |
postgres |
Database password |
EMBEDDING_MODEL |
all-MiniLM-L6-v2 |
Sentence transformer model |
Volume Mounting
Mount your source code as read-only:
volumes:
# Mount entire drive (Windows)
- C:/:/host:ro
# Mount specific directory (Linux)
- /home/user/projects:/host:ro
Then use the web UI to select specific subdirectories.
Architecture
┌─────────────────────────────────────────────────────────────┐
│ Container Network │
│ ┌─────────────────────┐ ┌─────────────────────────────┐ │
│ │ PostgreSQL 18 │ │ MCP Server │ │
│ │ + pgvector │◄───│ + FastAPI │ │
│ │ (pg18-trixie) │ │ + Web UI │ │
│ │ Port: 5432 │ │ Port: 8000 │ │
│ └─────────────────────┘ └─────────────────────────────┘ │
└─────────────────────────────────────────────────────────────┘
Commands Reference
Docker
# Start
docker-compose up -d
# Stop
docker-compose down
# View logs
docker-compose logs -f mcp-server
# Rebuild after code changes
docker-compose build --no-cache
# Reset database (deletes all indexed data)
docker-compose down -v
docker-compose up -d
# Check status
docker-compose ps
# Enter container shell
docker-compose exec mcp-server bash
Podman
# Start
podman-compose up -d
# Stop
podman-compose down
# View logs
podman-compose logs -f mcp-server
# Rebuild
podman-compose build --no-cache
# Reset database
podman-compose down -v
podman-compose up -d
API Endpoints
# Check health
curl http://localhost:8000/api/status
# List MCP tools
curl http://localhost:8000/mcp/v1/tools
# Search code
curl -X POST http://localhost:8000/api/search \
-H "Content-Type: application/json" \
-d '{"query": "database connection"}'
# Get directories
curl http://localhost:8000/api/directories
# Browse directory
curl "http://localhost:8000/api/browse?path=/host"
Troubleshooting
Server won't start
# Check logs
docker-compose logs mcp-server
# Common issues:
# - PostgreSQL not ready: Wait 30 seconds
# - Port in use: Change MCP_PORT in .env
# - Out of memory: Increase Docker memory limit
No files indexed
# Verify mount
docker-compose exec mcp-server ls -la /host
# Check configured paths
curl http://localhost:8000/api/directories
Slow indexing
# Use faster embedding model
EMBEDDING_MODEL=sentence-transformers/all-MiniLM-L6-v2
# Check database size
docker-compose exec postgres psql -U postgres -d cpp_codebase \
-c "SELECT pg_size_pretty(pg_database_size('cpp_codebase'));"
Permission denied on Linux
# Add user to docker group
sudo usermod -aG docker $USER
# Or use podman (rootless by default)
podman-compose up -d
Performance Tips
| Codebase Size | RAM | First Index Time |
|---|---|---|
| 10K LOC | 4GB | ~30 seconds |
| 100K LOC | 4GB | ~5 minutes |
| 1M LOC | 8GB | ~45 minutes |
| 3M+ LOC | 16GB | ~2 hours |
For Large Codebases
- Start with a single module to test
- Use the fast embedding model (default)
- Index only needed directories via web UI
- Consider SSD for database volume
Project Structure
cpp-graph-rag-mcp/
├── server.py # Main MCP server (FastAPI)
├── parser.py # Tree-sitter C++ parser
├── indexer.py # Code indexer
├── crash_analyzer.py # Crash dump analysis
├── vs_context_analyzer.py # VS debugging integration
├── config_manager.py # Configuration persistence
├── requirements.txt # Python dependencies
├── Dockerfile # Container build
├── docker-compose.yml # Multi-container setup
├── env.example # Configuration template
├── static/ # Web UI files
│ ├── index.html
│ ├── styles.css
│ └── app.js
├── example_code/ # Sample C++ for testing
└── docs/ # Documentation
Security Notes
- Server runs on localhost only by default
- Code is mounted read-only
- Database password should be changed for production
- No data leaves your machine (local embeddings)
License
MIT License - Free to use and modify.
Contributing
Key areas for improvement:
- Template specialization handling
- Macro expansion tracking
- Multi-language support
- Visual dependency graph viewer
Установка C++ Graph RAG Server
У этого сервера нет опубликованного пакета — он собирается из исходников. Открой репозиторий и следуй инструкции в README.
▸ github.com/gpowala/CodeGraphRagMcpFAQ
C++ Graph RAG Server MCP бесплатный?
Да, C++ Graph RAG Server MCP бесплатный — установка в пару кликов через Unyly без оплаты.
Нужен ли API-ключ для C++ Graph RAG Server?
Нет, C++ Graph RAG Server работает без API-ключей и переменных окружения.
C++ Graph RAG Server — hosted или self-hosted?
Self-hosted: сервер запускается локально на твоей машине командой из раздела установки.
Как установить C++ Graph RAG Server в Claude Desktop, Claude Code или Cursor?
Открой C++ Graph RAG Server на unyly.org, выбери вкладку своего клиента (Claude Desktop, Claude Code, Cursor) и нажми Install — конфиг сгенерируется автоматически, без правки JSON.
Похожие MCP
LibreOffice Tools
Enables AI agents to read, write, and edit Office documents via LibreOffice with token-efficient design. Supports multiple formats including DOCX, XLSX, PPTX, a
автор: passerbyflutterdannote/figma-use
Full Figma control: create shapes, text, components, set styles, auto-layout, variables, export. 80+ tools.
автор: dannoteLogo.dev
Search and retrieve company logos by brand or domain. Customize size, format, and theme to match your design needs. Accelerate design, prototyping, and content
автор: NOVA-3951PIX4Dmatic
Enables GUI automation for controlling PIX4Dmatic on Windows through MCP. Supports launching, focusing, capturing screenshots, sending hotkeys, clicking UI elem
автор: jangjo123Compare C++ Graph RAG Server with
Не уверен что выбрать?
Найди свой стек за 60 секунд
Автор?
Embed-бейдж для README
Похожее
Все в категории design
