mcpField
N
Nexus-MCP

Nexus-MCP

Local
jaggernaut007.github.ioDeveloper Tools0Updated 4d ago

About Nexus-MCP

Nexus-MCP is a local code-search MCP server for coding agents, combining hybrid retrieval with a code graph so agents can retrieve relevant code directly. It indexes projects on the machine and supports multiple programming languages.

Key features

  1. 01Hybrid semantic and keyword search
  2. 02Find symbols and their call relationships
  3. 03Inspect code graphs and change impact
  4. 04Map project layers and entry points
  5. 05Incremental and multi-folder indexing

Use cases

  1. 01Locate files implementing a behavior
  2. 02Inspect callers and callees of a function
  3. 03Assess potential refactoring impact
  4. 04Get oriented in an unfamiliar codebase

MCP support

As an MCP server, it exposes code search, symbol lookup, code graph, project mapping, and indexing tools to coding agents. It uses stdio transport.

Configuration

Local server config is the same for every client. Copy it into your client’s MCP config file.

mcp.json · Universal config
{
"mcpServers": {
"jaggernaut007-nexus": {
"command": "uvx",
"args": [
"nexus-mcp-ci"
],
"env": {
"NEXUS_STORAGE_DIR": "<NEXUS_STORAGE_DIR>",
"NEXUS_OFFLINE": "<NEXUS_OFFLINE>"
}
}
}
}
Run commanduvx nexus-mcp-ci
Environment variables to set
NEXUS_STORAGE_DIRFolder for the index, memories and graph (default: .nexus in the project)
NEXUS_OFFLINESet to 1 to block the embedding model download after the first run

Local servers need a runtime on your machine (e.g. Node.js 18+). Config file locations differ by client; see your client’s docs.

Packages
pypinexus-mcp-ci2.4.6

Tools

8

Saved tool list · updated 4d ago

This tool takes no parameters.

Details

From the project README

Nexus-MCP

PyPI version PyPI downloads License: MIT CI Glama MCP server

Your coding agent finds the right file with 95% fewer tokens. Nexus-MCP is a local MCP server that gives Claude Code, Codex, Cursor and any MCP client hybrid code search and a code graph. The agent asks one question and gets the code back, instead of a tour of grep and file reads. No API keys, no cloud, MIT.

uvx --python 3.12 nexus-mcp-ci setup

setup finds the MCP clients on your machine, shows each change and asks before it writes. You need uv. Or tell your agent: "Install Nexus-MCP from https://github.com/jaggernaut007/Nexus-MCP".

⭐ If Nexus-MCP saves you tokens, star the repo. It helps other developers find it.


Results

Measured on 12 open-source repos in 10 languages, against an agent that has only its built-in Grep and Read. Nothing here is an estimate: each number links to a pinned repo and a raw run.

On 10 open-source repos in 10 languages, Nexus-MCP reached the right file with 95% fewer tokens (median) and searched 9× faster than Grep and Read. In live Claude Code runs on 11 repos, cost per task was lower on 8 of 11, with 64 of 66 tasks correct against 61 of 66.

Find the right file (nexus-mcp-ci eval: offline, no LLM). Grep and Read → Nexus-MCP:

LanguageRepoRight file firstTokens to the right fileSearch time
Pythonpallets/flask (83 files)20% → 93%26,720 → 1,388108 → 23 ms
TypeScriptvitejs/vite (429 files)43% → 83%16,520 → 1,286159 → 25 ms
JavaScriptwebpack/webpack (822 files)37% → 67%25,634 → 1,251564 → 34 ms
Javaapache/commons-lang (264 files)23% → 87%48,176 → 1,241201 → 31 ms
C#JamesNK/Newtonsoft.Json (242 files)23% → 73%14,004 → 1,547154 → 25 ms
PHPlaravel/framework (1,751 files)50% → 83%13,479 → 1,086712 → 39 ms
C++chromium/chromium (3,641 files)43% → 80%19,768 → 1,2431,851 → 88 ms
Goprometheus/prometheus (201 files)40% → 83%41,034 → 1,195600 → 24 ms
Credis/redis (229 files)40% → 87%37,139 → 988331 → 34 ms
Rusttokio-rs/tokio (381 files)33% → 93%21,138 → 830215 → 27 ms

Live agent runs (Claude Code with Claude Sonnet, medium effort, headless, 6 tasks per repo, 3 runs each, median per task). Grep and Read → Nexus-MCP:

LanguageRepoTokens per taskCost per taskTurnsCorrect
Pythonhome-assistant/core65,990 → 42,458 (-36%)$0.050 → $0.037 (-27%)7 → 36 → 6 of 6
Pythondjango/django45,102 → 41,916 (-7%)$0.048 → $0.035 (-26%)5.5 → 2.55 → 6 of 6
TypeScriptvitejs/vite69,790 → 52,411 (-25%)$0.059 → $0.046 (-22%)5.5 → 46 → 6 of 6
JavaScriptwebpack/webpack100,320 → 74,638 (-26%)$0.077 → $0.068 (-11%)6 → 4.56 → 6 of 6
Javaapache/commons-lang50,448 → 32,862 (-35%)$0.044 → $0.022 (-49%)4.5 → 26 → 6 of 6
C#JamesNK/Newtonsoft.Json41,929 → 42,139 (+1%)$0.030 → $0.030 (+1%)3 → 2.56 → 6 of 6
PHPlaravel/framework52,919 → 51,994 (-2%)$0.051 → $0.039 (-24%)5 → 35 → 5 of 6
C++chromium/chromium70,495 → 60,622 (-14%)$0.065 → $0.055 (-16%)6.5 → 4.56 → 6 of 6
Goprometheus/prometheus52,014 → 45,214 (-13%)$0.047 → $0.037 (-22%)4.5 → 2.55 → 6 of 6
Credis/redis41,752 → 50,578 (+21%)$0.031 → $0.030 (-3%)3.5 → 36 → 6 of 6
Rusttokio-rs/tokio41,188 → 61,816 (+50%)$0.029 → $0.041 (+42%)3.5 → 4.54 → 5 of 6

Not there yet: C (redis/redis, +21% tokens, build 2.2.2+e5a9d9a) and Rust (tokio-rs/tokio, +50% tokens, build 2.2.2+0430f01). These runs are older; a rerun on the current build is pending. Each row is the latest run of that repo; the build of each row is on the benchmarks page. The same code can vary by about 20% in cost with 3 runs per task (measured 2026-10-28).

All numbers, the method and the raw runs: benchmarks page · JSON · CSV · runs.

What the numbers mean:

  • Right file first: the share of questions where the first result is the file that defines the answer. The right file comes from the parser, never from the Nexus-MCP ranking.
  • Tokens to the right file: what the agent reads before it reaches that file.
  • Search time: the time of one lookup on a laptop, after the index is built.
  • Tokens and cost per task: a real Claude Code session on a real question, both conditions with the same model, prompt and tools. Fewer turns is where most of the saving comes from: each turn reads the whole conversation again.

Measure it on your own code first

The check is free, runs offline, calls no LLM and takes a few minutes:

uvx --python 3.12 nexus-mcp-ci eval                                   # the current folder
uvx --python 3.12 nexus-mcp-ci eval https://github.com/pallets/flask  # a public repo
uvx --python 3.12 nexus-mcp-ci eval --example                         # the Nexus-MCP source

It asks about 30 questions made from your code and gives a verdict: "Strong fit", "Likely fit" or "Weak fit". On a tiny project Grep and Read win, and the report says so. For the real agent cost, nexus-mcp-ci eval --agent claude runs a paid A/B with your own Claude Code login. It shows the cost and asks first. Guide: docs/EVALUATE.md.


Install

ClientHow
Any client on your machineuvx --python 3.12 nexus-mcp-ci setup (add --dry-run to see the changes, --uninstall to remove them)
Claude Code plugin/plugin marketplace add jaggernaut007/Nexus-MCP, then /plugin install nexus-mcp@nexus-mcp
VS CodeInstall in VS Code
Cursorthe "Add to Cursor" link on the website
Claude Desktopopen nexus-mcp.mcpb from the latest release
Gemini CLIgemini extensions install https://github.com/jaggernaut007/Nexus-MCP
Dockerdocker run -i --rm -v "$PWD:/workspace" -v nexus-data:/data ghcr.io/jaggernaut007/nexus-mcp
By handpip install nexus-mcp-ci, then claude mcp add nexus-mcp -- nexus-mcp-ci

Use setup or the plugin for Claude Code, not both. Then start a new session and ask a question about your code, such as "where do we retry failed payments?". The agent indexes the project once, in the background, and a file watcher keeps the index current. Every channel: docs/DISTRIBUTION.md. Python 3.10 to 3.12; the uvx launch pins 3.12.


What your agent gets

The server shows five tools by default. Each one replaces several grep and read calls.

ToolUse it for
search(query)"Where is…", "how does… work". Hybrid search: meaning (local embeddings) plus keywords (BM25). The top results carry their whole code.
find_symbol(symbol_name)Names you know. The code of several functions or classes in one call, with their callers and callees. A long class comes back as an outline.
graph(symbol_name)"Who calls X", "what breaks if I change X". Callers, callees and the transitive blast radius before a refactor.
map(detail)"Where do I start". Layers, entry points, hub symbols and languages of the repo.
index(path)The first call in a project. Incremental after that, and multi-folder for monorepos.
memory(action)Opt-in. Decisions and notes that last across sessions. On by default when memories exist.
analyze(path)Opt-in. Complexity, code smells and dependency metrics for a path.
status()Opt-in. Index health and a staleness flag.

Set NEXUS_EXTRA_TOOLS=all to show the three opt-in tools. The server sends its own routing instructions when it connects, so the agent knows which tool answers which question. Full reference: docs/USAGE_GUIDE.md.

Keep your agent's own grep. Use it for an exact name or string you can type; use Nexus-MCP when the answer needs meaning or structure.


Languages

SupportLanguages
Search, symbols, call graphPython, TypeScript, JavaScript, Go, Java, Rust, C, C++, C#, PHP
Search and symbolsBash, Kotlin
Search (text and embeddings)25+ languages through tree-sitter

The results above cover the ten graph languages. Python has the best call-graph coverage.


Privacy

Your code stays on your machine. The server makes no network calls and has no telemetry.

  • In, once: the package from PyPI and the embedding model from Hugging Face. Set NEXUS_OFFLINE=1 after that.
  • Out: nothing, unless you run eval --agent (through your own Claude or Codex CLI) or eval share (numbers only). Both ask first.
  • Stored: the index in <project>/.nexus/ (add it to .gitignore). nexus-mcp-ci data where lists every file; nexus-mcp-ci data clear removes them.

Details: docs/PRIVACY.md.


Known limits

  • The call graph is static. Edges come from parsing, not from running the code. Dynamic dispatch, callbacks and reflection do not show, so treat graph results as a lower bound.
  • C and Rust live runs used more tokens than Grep and Read on the older 2.2.2 build (see Results). A rerun on the current build is pending.
  • Memory: about 90 MB idle and about 460 MB with the embedding model loaded (measurements).
  • Freshness: edits are picked up after a debounce of a few seconds, not instantly.
  • Transport: stdio only.

Documentation


Contributing

Issues and pull requests are welcome. Start with CONTRIBUTING.md and the developer guide:

git clone https://github.com/jaggernaut007/Nexus-MCP.git && cd Nexus-MCP
pip install -e ".[dev]"
pytest -v && ruff check .

A change ships only when it lowers the agent's token use and keeps the search accuracy gate (python -m evals.retrieval.run). The rule is in CONTRIBUTING.md.

Nexus-MCP grew from two MIT projects: CodeGrok MCP by rdondeti and code-graph-mcp by entrepeneur4lyf (ADR-001).


License

MIT.

Comments

Markdown supported

New to MCP?

From what the protocol is to installing your first server, these answers cover most first questions.

An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.