Sponsor https://accelerator.slider-ai.ru/
Advanced Multi-Language Code Analysis with Semantic Intelligence
A powerful Model Context Protocol server that creates intelligent graph representations of your codebase with comprehensive semantic analysis capabilities.
π 11 Languages Supported | β‘ 5.5x Faster | π Semantic Search | π 26 MCP Methods
# Install globally
npm install -g ./er77-code-graph-rag-mcp-2.7.12.tgz
code-graph-rag-mcp --version# Quick setup (recommended)
npx @modelcontextprotocol/inspector add code-graph-rag \
--command "npx" \
--args "@er77/code-graph-rag-mcp /path/to/your/codebase"or
#
claude mcp add-json code-graph-rag ' {
"command": "npx",
"args": ["@er77/code-graph-rag-mcp", "/_work_fodler"],
"env": {
"MCP_TIMEOUT": "80000"
}
}
Manual setup: Add to Claude Desktop config β See detailed instructions
# Example
gemini mcp add-json code-graph-rag '{
"command": "npx",
"args": ["@er77/code-graph-rag-mcp", "/path/to/your/codebase"]
}'# Recommended: add a *global* MCP server entry (works from any project folder)
codex mcp remove code-graph-rag # optional cleanup
codex mcp add code-graph-rag -- code-graph-rag-mcp
# Or point Codex directly at a local dev build (no npm/npx required)
codex mcp remove code-graph-rag # optional cleanup
codex mcp add code-graph-rag -- node /absolute/path/to/code-graph-rag-mcp/dist/index.jsMulti-codebase support: Analyze multiple projects simultaneously β Multi-Codebase Setup Guide
- NPM:
npm install -g @er77/code-graph-rag-mcp - Run server locally:
code-graph-rag-mcp [directory] - Claude: use Inspector (above) or see Quick Start
- Gemini: configure via
gemini mcp add-json ...(above) - Codex: configure via
codex mcp add ...(above)
5.5x faster than Native Claude tools with comprehensive testing results:
| Metric | Native Claude | MCP CodeGraph | Improvement |
|---|---|---|---|
| Execution Time | 55.84s | <10s | 5.5x faster |
| Memory Usage | Process-heavy | 65MB | Optimized |
| Features | Basic patterns | 26 methods | Comprehensive |
| Accuracy | Pattern-based | Semantic | Superior |
| Feature | Description | Use Case |
|---|---|---|
| Semantic Search | Natural language code search | "Find authentication functions" |
| Code Similarity | Duplicate & clone detection | Identify refactoring opportunities |
| JSCPD Clone Scan | JSCPD-based copy/paste detection without embeddings | Targeted duplicate sweeps |
| Impact Analysis | Change impact prediction | Assess modification risks |
| AI Refactoring | Intelligent code suggestions | Improve code quality |
| Hotspot Analysis | Complexity & coupling metrics | Find problem areas |
| Cross-Language | Multi-language relationships | Polyglot codebases |
| Graph Health | Database diagnostics | get_graph_health |
| Version Info | Server version & runtime details | get_version |
| Safe Reset | Clean reindexing | reset_graph, clean_index |
| Batched Indexing | Resumable indexing with progress (Codex-safe for big repos) | batch_index |
| Agent Telemetry | Runtime metrics across agents | get_agent_metrics |
| Bus Diagnostics | Inspect/clear knowledge bus topics | get_bus_stats, clear_bus_topic |
| Lerna Project Graph | Workspace dependency DAG export, optional ingest, cached refresh control | lerna_project_graph (requires Lerna config) |
| Semantic Warmup | Configurable cache priming for embeddings | mcp.semantic.cacheWarmupLimit |
| Metric | Capability | Details |
|---|---|---|
| Parsing Speed | 100+ files/second | Tree-sitter based |
| Query Response | <100ms | Optimized SQLite + vector search |
| Agent System | Multi-agent coordination | Resource-managed execution |
| Vector Search | Hardware-accelerated (optional) | Automatic embedding ingestion |
| AST Analysis | Precise code snippets | Semantic context extraction |
| Language | Features | Support Level |
|---|---|---|
| Python | Async/await, decorators, magic methods (40+), dataclasses | β Advanced (95%) |
| TypeScript/JavaScript | Full ES6+, JSX, TSX, React patterns | β Complete (100%) |
| C/C++ | Functions, structs/unions/enums, classes, namespaces, templates | β Advanced (90%) |
| C# | Classes, interfaces, enums, properties, LINQ, async/await | β Advanced (90%) |
| Rust | Functions, structs, enums, traits, impls, modules, use | β Advanced (90%) |
| Go | Packages, functions, structs, interfaces, goroutines, channels | β Advanced (90%) |
| Java | Classes, interfaces, enums, records (Java 14+), generics, lambdas | β Advanced (90%) |
| Kotlin | Packages/imports, classes/objects, functions/properties, relationships | β Implemented |
| VBA | Modules, subs, functions, properties, user-defined types | β Regex-based (80%) |
# Single project analysis
code-graph-rag-mcp
code-graph-rag-mcp /path/to/your/project
# CLI helpers
code-graph-rag-mcp --help
code-graph-rag-mcp --version
# Multi-project setup (see Multi-Codebase Setup Guide)
# Configure multiple projects in Claude Desktop config
# Check installation
code-graph-rag-mcp --help
# Health & maintenance
# Health check (totals + sample)
get_graph_health
# Reset graph data safely
reset_graph
# Clean reindex (reset + full index)
clean_index
# Batched index with progress (recommended for strict clients/timeouts)
batch_index
# Lerna workspace graph (ingest into storage)
lerna_project_graph --args '{"ingest": true}'
# Force refresh graph and re-ingest (bypass cache)
lerna_project_graph --args '{"ingest": true, "force": true}'
# Cached runs return `cached: true`; use `force` to break the 30s debounce when configs change.
# Agent telemetry snapshot
get_agent_metrics
# Knowledge bus diagnostics
get_bus_stats
clear_bus_topic --args '{"topic": "semantic:search"}'
# One-shot index from the CLI (debug mode)
node dist/index.js /home/er77/tt '{"jsonrpc":"2.0","id":"index-1","method":"tools/call","params":{"name":"index","arguments":{"directory":"/home/er77/tt","incremental":false,"fullScan":true,"reset":true}}}'
# Relationships for an entity name
list_entity_relationships (entityName: "YourEntity", relationshipTypes: ["imports"])
# Adjust semantic warmup (optional)
export MCP_SEMANTIC_WARMUP_LIMIT=25
# Note: when an agent is saturated, `AgentBusyError` responses include `retryAfterMs` hints.With Claude Desktop:
- "What entities are in my codebase?"
- "Find similar code to this function"
- "Analyze the impact of changing this class"
- "Suggest refactoring for this file"
Multi-Project Queries:
- "Analyze the frontend-app codebase structure"
- "Find authentication functions in backend-api"
- "Compare user management across all projects"
-
Codex/VSCode MCP stdio fails to start
Codex is strict about stdio:stdoutmust be JSON-RPC only. As of v2.7.12, console stdout logs are redirected tostderrduring MCP runs, and heavy initialization is deferred until after handshake / first tool call.
Recommended Codex config: omit the directory argument and let the server use the workspace root viaroots/list:[mcp_servers.code-graph-rag] command = "code-graph-rag-mcp" args = []
If
index/clean_indextime out on large repos and the transport closes, preferbatch_indexwith a smallmaxFilesPerBatchand keep calling it with the returnedsessionIduntildone:true. If you must see logs on stdout for local debugging, setMCP_STDIO_ALLOW_STDOUT_LOGS=1(not recommended for strict clients). If startup still fails, check the global tmp log mirror:/tmp/code-graph-rag-mcp/mcp-server-YYYY-MM-DD.log(Linux/macOS; usesos.tmpdir()). -
batch_indexfails withagent_busy/memory_limit
Increase the coordinator/conductor limits (these gate task routing in-process): setCOORDINATOR_MEMORY_LIMIT/CONDUCTOR_MEMORY_LIMITandCOORDINATOR_MAX_MEMORY_MB/CONDUCTOR_MAX_MEMORY_MB, or editconfig/default.yaml.
If you see a real Node.js OOM, also start the server with a larger heap, e.g.NODE_OPTIONS="--max-old-space-size=4096" code-graph-rag-mcp. -
Database location / multi-repo isolation By default, the server stores its SQLite DB under
./.code-graph-rag/vectors.db(per repo). Add/.code-graph-rag/to your projectβs.gitignore. -
Native module mismatch (
better-sqlite3)
Since v2.6.4 the server automatically rebuilds the native binary when it detects aNODE_MODULE_VERSIONmismatch. If the automatic rebuild fails (for example due to file permissions), run:npm rebuild better-sqlite3
in the installation directory (globally this is commonly
/usr/lib/node_modules/@er77/code-graph-rag-mcp). -
Legacy database missing new columns
Older installations might lack the latestembeddingscolumns (metadata,model_name, etc.). The server now auto-upgrades in place, but if you still encounter migration errors, delete the local DB and re-run the indexer:# delete the DB shown in logs as: "[Config] Database path: ..." rm -f ./.code-graph-rag/vectors.db ./.code-graph-rag/vectors.db-wal ./.code-graph-rag/vectors.db-shmThen start the server again to trigger a clean rebuild.
-
Running a one-shot index from the CLI
You can trigger tools directly by passing JSON-RPC payloads. When a payload is supplied, the server skips the semantic agent and uses low-memory batching for debugging. Example:node dist/index.js /path/to/project \ '{"jsonrpc":"2.0","id":"index-1","method":"tools/call","params":{"name":"index","arguments":{"directory":"/path/to/project","incremental":false,"fullScan":true,"reset":true}}}'The command logs progress to
logs_llm/mcp-server-YYYY-MM-DD.log. SetMCP_DEBUG_DISABLE_SEMANTIC=0if you want embeddings enabled during the run.
- ποΈ Default DB path moved to
./.code-graph-rag/vectors.dbso multiple codebases donβt share/mix a single global SQLite database
- π§Ή npm install: stop auto-installing
onnxruntime-nodeby default (optional peer dep instead), removing the[email protected]deprecation warning during install
- π§ sqlite-vec: load the extension via
sqlite-vecβsgetLoadablePath()so global installs work regardless of projectcwd
- π§ Codex docs: use
codex mcp add ...global config (works from any project folder) - π§Ύ Removed references to non-existent helper scripts
- β
TTY-safe stdio: redirect console stdout logs β
stderrduring MCP runs (prevents handshake breaks) - ποΈ Global log mirror: always write a copy to
/tmp/code-graph-rag-mcp/mcp-server-YYYY-MM-DD.logfor early-start debugging - π‘οΈ Resilient logging: if
logs_llm/canβt be created, fall back toos.tmpdir()instead of exiting beforeinitialize
- β
Codex/VSCode stdio compatibility: reserve
stdoutfor JSON-RPC and route logs tostderr - β‘ Faster readiness: defer heavy runtime init until after handshake / first tool call
- π Project root now optional: defaults to
cwd, prefers MCProots/listworkspace root when available - π§© Kotlin support for
.kt/.kts(tree-sitter + KotlinAnalyzer) with tests + ADR-006
- π Added
--help/-hand--version/-vflags for quick CLI interaction - π
detect_code_clonesnow merges deduplicated semantic groups with JSCPD summaries - π
jscpd_detect_clonessummary includes duplicated line/token counts, percentages, and inline snippets - π§ͺ Integration coverage verifies clone-report fields to guard against regressions
- π Maintains vendored lightweight JSCPD pipeline with zero external deps
- β Added
jscpd_detect_clonesMCP tool exposing JSCPD duplicate detection without requiring embeddings - π§© Vendored lightweight JSCPD core/tokenizer for zero external build dependencies
- π§ͺ New integration fixtures ensure JSCPD scans surface expected duplicate blocks
- π README / tool catalog now counts 23 MCP methods and documents JSCPD usage
Breaking Changes & Major Improvements β‘
- π Provider-based embeddings: New architecture supporting memory/transformers/ollama/openai/cloudru providers
- π§ Runtime diagnostics:
get_agent_metrics,get_bus_stats, andclear_bus_topicexpose live telemetry and knowledge-bus controls for Codex automation - π‘οΈ Agent backpressure hints: MCP tools now receive structured
agent_busyresponses with retry guidance when capacity is saturated - π― Deterministic graph IDs: SHA256-based stable IDs for entities and relationships
- β¨ Enhanced vector store: Renamed tables (
doc_embeddings,vec_doc_embeddings) with improved sqlite-vec integration - π§ YAML-driven configuration: Unified configuration across parser/indexer/embedding agents
- π Improved parser: Re-enabled tree-sitter ParserAgent with incremental parsing and richer metadata
- π‘οΈ Hardened MCP tools: Better entity resolution, structural+semantic responses, improved graph operations
- π Idempotent operations: Local de-duplication and ON CONFLICT upserts for consistent graph writes
Technical Details:
- Dynamic dimension detection at runtime with safe fallbacks
- Batch deduplication by ID with transactional updates
- Enhanced language analyzers with structured pattern data
- SQLiteManager + GraphStorage singleton for consistency
Testing & Validation (2025-10-21):
- β All 16/16 test suites passing (200+ individual tests, 93.75% success rate)
- β 100% MCP method validation (22/22 methods comprehensively tested)
- β
v2.6.0 new methods validated:
get_agent_metrics,get_bus_stats,clear_bus_topic - β Integration test coverage: All core components, semantic operations, and monitoring tools
- β
v2.5.9 dual-schema fixes preserved and enhanced with
sqliteVecEnabledproperty - β Zero regressions after PR #20 integration
β οΈ Known issue: Duplicatecase "get_graph"in src/index.ts:1668 & 1707 (non-critical, line 1707 unreachable)
- β Complete vector schema fix: Dual-schema support for sqlite-vec and fallback modes
- β All 17 MCP methods working: Verified 100% success rate
- π Success rate: 33% (v2.5.7) β 61% (v2.5.8) β 100% (v2.5.9)
- β Fixed agent concurrency limit: 3 β 10 concurrent agents
- β Fixed vector database schema: Dual-schema support for sqlite-vec extension
Click to expand version history (2.5.7 - 2.3.3)
v2.5.7 - Semantic analysis improvements, lowered thresholds, clone detection
v2.5.6 - Fixed DoraAgent type collision (+16% success rate)
v2.5.5 - WASM path resolution fix, get_version tool, restart script
v2.5.4 - Architecture Decision Records (ADRs)
v2.5.3 - Deprecated dependency warning suppression
v2.5.2 - Enhanced README documentation
v2.5.1 - Python magic methods, import analysis enhancements
v2.5.0 - 8 new languages (C#, Rust, C, C++, Go, Java, VBA), Research Trinity
v2.4.1 - Rust AST parsing, system architecture docs
v2.4.0 - Health check tools, AST hotspots, semantic routing
v2.3.3 - Entity extraction fix (0 β 4,467 entities)
Minimum: Node.js 24+, 2GB RAM, Dual-core CPU Recommended: Node.js 24+, 8GB RAM, Quad-core CPU with SSD
- Deprecated
[email protected]warning: This is a transitive dependency from the optionalonnxruntime-nodepackage (used for ML embeddings). The package is deprecated but functional. The warning can be safely ignored as it doesn't affect core functionality.
- Fork the repository
- Follow Agent Governance rules
- Submit pull request
Contributing Guide β’ Issue Tracker
MIT License - see LICENSE file for details.
Links: GitHub β’ NPM β’ MCP Protocol