N3MO
N3MO is a structural code intelligence server that transforms source code into a queryable knowledge graph, enabling AI agents to understand codebases structurally rather than through text search.
Index a codebase (
n3mo_index): Crawl and parse an entire workspace directory using AST analysis, storing symbols, call graphs, and dependencies into a knowledge graph for fast querying.Blast radius / impact analysis (
n3mo_get_blast_radius): Trace the transitive impact of changing any function or class — discover every caller up to a configurable depth, so you know exactly what will be affected before making edits.Symbol search (
n3mo_search_symbol): Locate the exact definition of any function or class in the indexed codebase, returning the file path and line number.Forward dependency graph (
n3mo_get_dependencies): Find all external symbols that a given function or class calls, mapping its outward dependencies.File symbol listing (
n3mo_get_file_symbols): List all classes and functions defined inside a specific file, giving a structural overview of any module in the codebase.
A structural code intelligence layer that transforms source code into a queryable knowledge graph for search, impact analysis, and AI-powered development.
Parse once. Query forever. Know exactly what breaks before it does.
"Text diffs are the source of all code review anxiety. A developer modifies a core utility, and the reviewer has to spend an hour mentally tracing downstream services to guess if it's safe to merge. N3MO replaces human guesswork with hard math."
📜 Licensed under PolyForm Noncommercial 1.0.0 — Source available for noncommercial use. • Need commercial use? Get a commercial license →
What is N3MO • Capabilities • Installation • Usage • MCP • CI/CD SaaS • Benchmarks • Tutorial • Sponsor
🎯 What is N3MO?
N3MO is a symbol-centric code intelligence layer. Instead of scanning raw text, it parses your source code's ASTs, maps call graphs, and models dependencies in a queryable relational database — deterministically, with zero LLM calls at index time.
For engineering leaders and teams, N3MO acts as a structural insurance policy for your codebases.
💡 Why N3MO?
🛡️ Eliminate Regression Risks — Utility functions are rarely refactored because developers fear unknown side effects. N3MO maps the transitive blast radius of any symbol to arbitrary depth, showing you exactly what will break before you make the edit. Automate this in your CI/CD →
🏎️ Rapid Developer Onboarding — Instead of senior engineers spending hours explaining codebase flow to new hires, developers run one command to visualize complex call chains and parent-child dependencies interactively.
🤖 AI-Agent Ready Infrastructure — Modern LLM agents (Cursor, Claude Desktop) are limited by context windows and text search. N3MO's native MCP server lets agents query the actual code graph, enabling fast, hallucination-free refactoring.
⚡ No Embeddings, No Drift — N3MO is pure static analysis: Tree-sitter AST parsing into PostgreSQL. There's no vector index to keep in sync, no embedding cost per repo, and no semantic-similarity guesswork — every edge in the graph is an exact, verifiable relationship.
📊 How N3MO Compares
Capability | Grep / Text Search | IDE "Find References" | N3MO Code Graph |
Analysis Basis | Substring matching | AST-based, direct refs only | Relational knowledge graph |
Transitive Traversal | ❌ None | ❌ Manual, one level at a time | ⚡ Instant to arbitrary depth |
Blast Radius Mapping | ❌ None | ❌ Flat search-result list | 🎨 Interactive visual orbit map |
CI/CD Integration | ❌ None | ❌ Bound to IDE runtime | ⚙️ Dockerized CLI + CTE queries |
AI Agent Integration | ❌ Injected file chunks | ⚠️ Manual context copy | 🤖 Native MCP server |
Language Coverage | ✅ Any text file | ⚠️ Language-specific plugins | ✅ 27 Tree-sitter grammars |
Indexing Method | N/A | N/A | ✅ Deterministic AST parse — no embeddings, no LLM calls |
🛠️ The Core Problem N3MO Solves
❌ Without N3MO
✅ With N3MO
N3MO doesn't find text — it understands structure. It traces the actual call graph, not string matches.
Questions N3MO answers instantly:
Question | How | |
🔎 | What functions and classes exist in this repo? | Full symbol index across 27 languages |
🎯 | Where is this symbol used — directly and transitively? | Recursive CTE traversal to arbitrary depth |
💥 | What is the blast radius of changing this function? | Interactive orbit map with depth slider |
🕸️ | How do these components actually connect? | Call graph + parent-child hierarchy |
🤖 | Can my AI agent understand this codebase structurally? | Native MCP server for Cursor / Claude |
Related MCP server: sourcebook
👥 Who it's for
Start here | |
Individual Developers |
|
Code Reviewers & Team Leads | Stop merging blindly. Install the N3MO Webhook via n3mo.shop to get deterministic blast-radius comments on every PR automatically. |
Engineering Leaders | Offload pipeline infrastructure entirely. Zero-config, cloud-managed graph engine. No local PostgreSQL to maintain, zero data retention, and strict privacy. |
✨ Core Capabilities
Ingestion & Parsing
Multi-language support — 27 Tree-sitter grammars supported (dynamically loaded); actively benchmarked on 10 major languages including Python, JS/TS, Go, Java, and C/C++
Parallel AST ingestion —
ProcessPoolExecutordistributes CPU-bound parsing across all available coresIncremental re-indexing — SHA-256 file hashing skips unchanged files automatically
Idempotent operations — re-indexing updates existing data without duplication
Smart exclusions — case-insensitive directory filters and camelCase-aware filename checks prevent false positives (e.g. allows
contest.pywhile skippingtest_*.py)
Analysis & Querying
Symbol extraction — functions, classes, methods with full file path + line context
Hierarchical modeling — parent-child relationships (Module → Class → Method)
Call graph construction — who calls whom, resolved at ingestion time
Scope-aware resolution — class scope > local file > imports > qualified dot paths > global
Blast radius analysis — recursive CTE traversal to arbitrary depth with cycle guards
Performance
Connection pooling —
ThreadedConnectionPooleliminates per-symbol DB round tripsBatch inserts — symbols, imports, and calls batched per file in single transactions
Optimized queries —
SPLIT_PARTfix delivered a 2× speedup on call resolution
Visualization & Integration
Interactive graph — vis.js orbit map with click-to-inspect nodes, sidebar, and depth slider
Dark mode — toggleable canvas dark mode with real-time node/edge updates, persisted in
localStoragePremium styling — sleek interactive dashboard landing page UI and graph visualizer styled with
Bricolage Grotesque,Inter, andJetBrains MonotypographySKILL.md profile — system instructions to configure Claude as an impact-aware coding agent
Native MCP server — first-class integration with Cursor, Claude Desktop, and Windsurf
Git hooks — automatic re-indexing on every commit
CI pipeline — GitHub Actions with linting (
ruff), type checking (mypy), andpytest
🌐 Supported Languages
…and more |
Tree-sitter parsing supported for 27 languages. Deep semantic call graph mapping currently optimized for Python, JS/TS, and Java.
🚀 Installation
Prerequisites
Quick start
Install N3MO directly from PyPI:
# Install the package
pip install n3mo
# Start Docker containers & initialize the database
n3mo setupAlternatively, for contributors running in editable mode:
git clone https://github.com/RajX-dev/N3MO.git
cd N3MO
pip install -e .
n3mo setup💻 Usage
Index a repository
cd /path/to/your/project
n3mo indexWhat gets indexed:
✅ Source files in all 27 supported languages
❌ Virtual environments (
venv/,.venv/)❌ Dependencies (
node_modules/,site-packages/)❌ Build artifacts (
.git/,__pycache__/,dist/)❌ Test / fixture directories (
tests/,mocks/,specs/)
Visualizer
Dark Mode — Radial Layout

Horizontal Tree View

Example terminal output:
◈ IMPACT ANALYSIS
──────────────────────────────────────────────────────────────────
Target: authenticate_user
──────────────────────────────────────────────────────────────────
◉ Direct Callers (3 symbols)
▸ login_endpoint api/auth.py:12
▸ refresh_token api/token.py:23
▸ validate_session middleware/auth.py:89
◎ Ripple Effects (5 symbols)
╰─▸ POST /login routes.py:67
╰─▸ admin_login admin/views.py:34
╰─▸ require_auth decorators.py:12
╰─▸ dashboard_view views/dashboard.py:8
╰─▸ settings_view views/settings.py:22
──────────────────────────────────────────────────────────────────
Total impacted: 8 references │ depth ≤ 3Dependency graph visualization
graph LR
A[main.py] --> B[auth.py::login]
A --> C[db.py::connect]
B --> D[utils.py::hash_password]
B --> E[models.py::User]
C --> F[config.py::DB_URI]
style A fill:#ff6b6b,stroke:#c92a2a,stroke-width:2px,color:#fff
style B fill:#4ecdc4,stroke:#0ca89e,stroke-width:2px,color:#000
style C fill:#45b7d1,stroke:#1098ad,stroke-width:2px,color:#000
style D fill:#96ceb4,stroke:#63b598,stroke-width:2px,color:#000
style E fill:#ffd93d,stroke:#f5c200,stroke-width:2px,color:#000
style F fill:#e0e0e0,stroke:#a0a0a0,stroke-width:2px,color:#000🎥 Tutorial
Watch the Tutorial Video on GitHub
🤖 Model Context Protocol (MCP)
N3MO includes a native MCP server that exposes repository analysis and graph traversal tools to LLM agents (like Claude, Cursor, or Windsurf).
Automatic Claude Desktop Setup
# Navigate to the workspace you want Claude to analyze, then run:
n3mo mcp installThis registers N3MO and sets up the paths automatically. Restart Claude Desktop and you're ready!
🧠 Claude Skill (System Instructions)
To configure Claude to run N3MO impact queries proactively before changing code in the editor, import or copy-paste the custom instructions from the SKILL.md profile.
Cursor Setup
Go to Settings → Models → MCP.
Click + Add New MCP Server.
Set the configuration details:
Name:
n3moType:
commandCommand:
n3mo mcp start(oruvx n3mo mcp startto run directly)Environment Variables:
TARGET_CODE_DIR=/absolute/path/to/your/active/workspace
Click Save, and Cursor will instantly be able to index and query your workspace blast radius.
🏢 Scale to Team Callout
Bringing AI agents to your team workspace? Stop forcing every developer to run heavy indexing pipelines and PostgreSQL instances on their local laptops.
Connect Cursor directly to the global cloud graph at n3mo.shop to bypass local machine database overhead entirely. Your agents query the cloud graph instantly.
🧰 Available MCP Tools
Tool | Description |
| Ingests and indexes the codebase |
| Locates the definition of a symbol across the workspace (file path, line number) |
| Finds all external symbols that a given symbol calls (forward-dependency graph) |
| Lists all classes and functions defined inside a specific file |
| Traces the transitive impact/call graph of a code symbol |
☁️ Enterprise CI/CD Automation (The SaaS Pivot)
Running deterministic AST parsing in a local loop is great, but manually building multi-step YAML actions, maintaining CI database infrastructure, and orchestrating PR timeline events is a massive friction point for engineering teams.
n3mo.shop is our definitive, zero-maintenance infrastructure layer that abstracts all of this away.
Zero-Config Webhooks: 2-click GitHub App sync. No YAML boilerplate to maintain.
Automated Inline PR Comments: N3MO hooks into your repository and posts the exact blast radius directly into your GitHub review timeline:
◈ N3MO Pull Request Impact Analysis ⚠️ Blast Radius Detected: Modifying `core_auth.py` transitively impacts 3 downstream services. - `api/billing.py:process_payment()` - `web/handlers.py:login_route()` - `cron/sync_users.py:execute()`Strict "Zero-Trust" Privacy: We only parse structural AST metadata (symbol relationships). Your raw source code is never stored on our servers. The ephemeral parsing container is instantly destroyed the millisecond the PR comment is posted.
Offload your pipeline infrastructure today at n3mo.shop →
📊 Benchmarks
All benchmarks measured on Intel i5-13450HX, 24 GB RAM, NVMe SSD.
Django — Optimization History
Django is the primary benchmark target: 3,021 files, ~43K symbols, ~181K calls.
Django Index Time (minutes)
═══════════════════════════════════════════════════════════════
v0.3 Baseline ██████████████████████████████████████████████ 23 min 1×
SPLIT_PART Fix ██████████████████████ 11 min 2×
Batch Inserts █████████ 5 min 4.6×
+ Multiprocessing ████ 2.5 min 9× 🚀
═══════════════════════════════════════════════════════════════Optimization | Index Time | Speedup | What Changed |
v0.3 baseline | 23 min | 1× | Per-symbol DB inserts, naive call resolution |
+ SPLIT_PART query fix | 11 min | 2× | Eliminated redundant string splitting in call resolution |
+ Batch inserts | 5 min | 4.6× | Symbols, imports, and calls batched per file (1 transaction) |
+ Multiprocessing | ~2.5 min | ~9× |
|
✅ All results are real measurements on the Django repository. Multiprocessing gains scale with core count.
TensorFlow — Enterprise-Scale Monorepo
Tested on TensorFlow — a 36,000-file, multi-language (C++/Python) monorepo.
Metric | Result |
Repo size (total files) | ~36,000 |
Files processed & indexed | 14,611 (after filtering tests, configs, and non-source files) |
Total symbols extracted | 79,523 |
Total call edges extracted | 480,851 |
Full index time (cold start) | 14.06 minutes |
Peak memory (Docker container) | 185 MB RAM |
CPU utilization | ~5% |
N3MO scales from a 3K-file pure-Python repo (Django) to a 36K-file multi-language enterprise monorepo (TensorFlow) — roughly a 5× larger indexing job at near-linear throughput, without significant resource overhead. Symbol/edge-per-file and incremental (warm) re-index numbers for TensorFlow are being finalized in the full benchmark report.
ScanCode Toolkit — Large Codebase
Tested on ScanCode Toolkit — ~600K lines of Python.
Metric | Result |
Lines of code | ~600,000 |
Full index time | ~3 minutes |
Processing mode | Single-threaded (v0.3) |
Incremental Re-Indexing
N3MO uses SHA-256 file hashing to skip unchanged files on subsequent runs.
Scenario | Time | Notes |
Full index (first run) | Baseline | All files parsed and inserted |
No changes (re-run) | < 1 second | Hash comparison only, zero DB writes |
1 file modified | < 2 seconds | Only the changed file is re-parsed and upserted |
These results are from the built-in benchmark script on a 20-file synthetic repository. Real-world incremental performance is proportional to the number of changed files, not the total repository size.
Query Performance
Impact analysis uses PostgreSQL recursive CTEs with cycle guards. Query times are independent of repository size — they depend only on the size of the result subgraph.
Query Type | Typical Latency |
Direct callers of a symbol | < 10 ms |
Full blast radius (depth ≤ 5) | < 50 ms |
Complete graph traversal | < 200 ms |
Running the Benchmark
python benchmarks/benchmark_indexing.py📈 Project Status
N3MO's core architecture and distribution phases (Foundations, Performance, Correctness & Scaling, and Distribution) have been successfully completed. The project is currently stable, actively maintained, and ready for production use.
📝 Design Principles
1. Structure before semantics Map the code skeleton (AST) before adding AI analysis. A correct graph is worth more than a smart but wrong one.
2. Database as source of truth All state lives in PostgreSQL, eliminating in-memory complexity and enabling graph queries that application-level traversal cannot match.
3. Correctness over speed The parser must handle syntax errors gracefully without corrupting the graph. A fast indexer that silently drops symbols is worse than a slow one that gets everything right.
4. Idempotent operations Re-running ingestion produces identical results, enabling safe incremental updates and CI/CD integration.
🤝 Contributing
Contributions are welcome! Please read the CONTRIBUTING.md guide to get started with setting up the project, coding standards, and running checks locally.
Development Setup
# Install with dev dependencies
pip install -e ".[dev]"
# Lint
ruff check n3mo/
# Type check
mypy n3mo/
# Tests
pytest tests/📜 License & Pricing
Pricing & Licensing
N3MO is free under the PolyForm Noncommercial 1.0.0 License for local usage and single-developer MCP integrations.
100% Free & Local — CLI queries, local MCP integrations, and the visualizer with zero limits.
Commercial SaaS & Webhooks — To use N3MO in team environments, CI/CD pipelines, and private GitHub webhooks, purchase a commercial license at n3mo.shop.
Enterprise Licensing — for large-scale organization deployments, custom SLAs, or zero-trust air-gapped environments, reach out for Enterprise options.
Licensed under the PolyForm Noncommercial 1.0.0 License.
✅ Free for personal projects, academic research, and hobby tools
✅ Source available — view, modify, and distribute for noncommercial purposes
⚠️ Noncommercial — you may not use it for commercial purposes
⚠️ Restrictions apply on offering it as a service
For commercial deployments or proprietary modifications, contact for licensing options.
See LICENSE for full legal details.
❤️ Sponsor
If N3MO saves you time during code reviews or helps your AI agents understand your codebase, consider sponsoring the project to support continued development.
Your sponsorship helps fund:
🔧 Continued maintenance and new language support
🚀 Performance improvements and scaling
📖 Better documentation and tutorials
🌍 Keeping the CLI and MCP server free for individual developers
👨💻 Author
Raj Shekhar — Delhi Technological University
🙏 Acknowledgments
Tree-sitter — for robust, incremental, error-tolerant parsing
PostgreSQL — for making recursive graph queries possible without a graph database
Docker — for reproducible, single-command environments
vis.js — for the interactive graph visualization
FastAPI — for the high-performance REST layer
⭐ Star this repo if you find it useful — thanks for visiting!
Building tools for understanding code at scale.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- Alicense-qualityCmaintenanceA graph-powered code intelligence engine that indexes codebases into a structural knowledge graph to provide AI agents with deep context on function calls, types, and execution flows. It offers local, zero-dependency tools for hybrid search, impact analysis, and dead code detection across Python, JavaScript, and TypeScript projects.Last updated724MIT
- Alicense-qualityCmaintenanceLive codebase intelligence for AI agents. Import graph PageRank for file importance, git forensics for co-change coupling and fragile code, convention detection across 16 domains, and blast radius analysis.Last updated963Business Source 1.1
- Alicense-qualityAmaintenanceSupercharges AI coding agents with a pre-indexed semantic code graph, enabling instant symbol relationships, impact analysis, and context retrieval across 20+ languages.Last updated76,04063,174MIT
- Alicense-qualityBmaintenanceHigh-performance code graph and code intelligence engine. Index code base into knowledge graph, supports 257 languages and native multi repositories environmentLast updated999Apache 2.0
Related MCP Connectors
Enterprise code intelligence for M&A, security audits, and tech debt. Hosted server with 200k free.
AI Agent with Architectural Memory. Impact analysis (free), tests and code from the graph (pro).
Give your AI agent a persistent map of your project's structure, dependencies, and bugs.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/RajX-dev/N3MO'
If you have feedback or need assistance with the MCP directory API, please join our Discord server