Context7
Feeds AI the latest docs for libraries and frameworks before it answers, so code it writes does not use outdated, removed functions.
Description from the maker (original English)
Local code-intelligence server: hybrid code search, call graph and project memory.
These three are never merged into one score: opinions, measurements and popularity are different things.
We have not written a plain-language summary for this one yet. Below are the facts we read from the registry.
Pick the AI app you use, then copy the settings.
NEXUS_STORAGE_DIR, NEXUS_OFFLINEYou need
Which app do you use?
Pick your app above. We remember it, so next time the button says “Install in …”.
Open Claude Desktop → Settings → Developer → Edit Config, and paste this into claude_desktop_config.json
{
"mcpServers": {
"nexus": {
"command": "uvx",
"args": [
"nexus-mcp-ci"
],
"env": {
"NEXUS_STORAGE_DIR": "your-value",
"NEXUS_OFFLINE": "your-value"
}
}
}
}Run this in your terminal
claude mcp add nexus --env NEXUS_STORAGE_DIR=your-value --env NEXUS_OFFLINE=your-value -- uvx nexus-mcp-ciFill in the empty values before running it.
Paste into .cursor/mcp.json in your project, or ~/.cursor/mcp.json
{
"mcpServers": {
"nexus": {
"command": "uvx",
"args": [
"nexus-mcp-ci"
],
"env": {
"NEXUS_STORAGE_DIR": "your-value",
"NEXUS_OFFLINE": "your-value"
}
}
}
}Your browser asks to open the app, then the app shows the settings and asks you to confirm. Key values are left empty for you to fill in.
Paste into .vscode/mcp.json in your project
{
"servers": {
"nexus": {
"type": "stdio",
"command": "uvx",
"args": [
"nexus-mcp-ci"
],
"env": {
"NEXUS_STORAGE_DIR": "your-value",
"NEXUS_OFFLINE": "your-value"
}
}
}
}Your browser asks to open the app, then the app shows the settings and asks you to confirm. Key values are left empty for you to fill in.
This one runs on your computer, and ChatGPT can only connect to servers on the internet. Pick another app.
Your choice stays on this device in a cookie; no account needed.
NEXUS_STORAGE_DIR envNEXUS_OFFLINE envThese settings are generated from the maker’s registry entry. If the README says otherwise, follow the README.
Runs on your computer; the tool list appears in your AI app after you install it.
We check information anyone can see; we have not read the code. Checks that do not apply are left out of the count. · Checked Nov 7, 2026
The registry name was verified with the GitHub account jaggernaut007, which owns the repo
We have not read this repo from GitHub yet
We have not read this repo from GitHub yet
This one runs on your computer; there is no internet endpoint
Runs on your computer and uses local settings instead
Runs on your computer; we can only read tool lists from internet endpoints
Compared with every active server in this category in the registry. Stars count only when the publisher owns the repo.
It passed 1 of 1 applicable basic checks. We have not read the code. Before adding a key or token, see what access the server asks for and use a key with only the permissions you need.
The registry does not list a required key, though some servers ask you to sign in on first use.
It runs on your computer. Your AI app starts it when needed, and data does not pass through the maker’s servers (unless it calls an online service itself).
The GitHub repo last changed –, and the latest version (2.3.0) reached the registry yesterday.
Apps that support MCP, such as Claude Desktop, Claude Code, Cursor and VS Code. You also need Python (uv) on your computer.
In the same category: Context7, Codebase Memory, Exa
Servers in the same category from other makers, sorted by stars.
Reading a card:★ GitHub starsiThree pillars: reviews · checks · usageiUpdated = latest version published to the registryi
Feeds AI the latest docs for libraries and frameworks before it answers, so code it writes does not use outdated, removed functions.
Codebase knowledge graph for AI agents — 162 languages, sub-ms queries, 99% fewer tokens.
Connect AI agents to Exa for web search, content fetching, and multi-step research.
Copied from the maker’s repo as written. PopNx MCP has not reviewed or endorsed it. HTML, images and scripts are removed. Links lead off this site.
Hybrid search + code graph + semantic memory in a single local MCP server. About 90 MB idle and 460 MB with the embedding model loaded ([measurements](https://github.com/jaggernaut007/Nexus-MCP/blob/main/docs/MEMORY.md)).
Nexus-MCP is a local code-intelligence MCP server for Claude Code, Codex, Cursor and any Model Context Protocol client. It gives AI agents precise, token-efficient answers about your codebase without cloud dependencies: no API keys, no data egress, no subscriptions.
Not sure yet? Measure it on your own code first. It is free, runs offline, calls no LLM and takes a few minutes:
uvx nexus-mcp-ci eval # the current folder
uvx nexus-mcp-ci eval --example # or the Nexus-MCP source, if you have no project at hand
You get a verdict ("Strong fit", "Likely fit" or "Weak fit") and the tokens an agent needs to reach the right file, with and without Nexus-MCP. Nothing leaves your machine. See Evaluate on your project.
Ready?
pip install nexus-mcp-ci
claude mcp add nexus-mcp -- nexus-mcp-ci
| Project | Cost: Grep and Read → Nexus-MCP | Turns | Correct answers |
|---|---|---|---|
| Private Python project (460 files) | $0.571 → $0.446 (-22%) | 55 → 35 | 36 → 35 of 36 |
| Django (3,000 files) | $0.894 → $0.863 (-3%) | 93 → 71 | 34 → 36 of 36 |
Live runs: Claude Code, Claude Sonnet, headless (claude -p), 12 questions per project, 3 runs each, version 2.1.0 (2026-10-28). The same code can vary by about 20% in cost with 3 runs per question (measured 2026-10-28). Search hit@1 on the four retrieval suites: jobscout 0.81, nexus_mcp 0.80, shop_repo 0.50, flask 0.64.
nexus-mcp-ci eval (the free offline check, no LLM) on 3 projects:
| Project | Verdict | Median tokens to the right file | Right file first |
|---|---|---|---|
| Chromium base/ (3,638 files) | Strong fit | 17,998 → 950 | 40% → 70% |
| pallets/click (91 files) | Strong fit | 24,774 → 1,301 | 27% → 97% |
| Nexus-MCP source (59 files) | Likely fit | 5,385 → 1,234 | 70% → 93% |
Nexus-MCP and GitNexus on Chromium base/ (C++, 4,243 files): 8 tasks, 3 runs each, 2026-11-04.
| Condition | Version | Tokens (median) | Cost per task (median) | Correct |
|---|---|---|---|---|
| Grep and Read | built-in tools | 62,450 | $0.057 | 24 of 24 |
| Nexus-MCP | 2.2.0 with the C++ parser fixes of 2.2.1 | 82,900 | $0.062 | 24 of 24 |
| GitNexus | 1.6.12 | 164,192 | $0.085 | 24 of 24 |
Nexus-MCP used fewer tokens than GitNexus on 8 of 8 tasks and cost less on 6; GitNexus cost $0.002 less on one task, and one task was a tie. Grep and Read cost less than both on this C++ code. Nexus-MCP cost less than Grep and Read on 3 of 8 tasks (the two needle tasks and WeakPtr). Each condition had the same agent, model, prompt and built-in tools, and each tool had its MCP server and its always-loaded instructions (method).
All numbers: benchmarks page · JSON · CSV.
An agent that explores a codebase with Grep and Read pays for every call: each call is one more turn, and each turn reads the whole conversation again. Nexus-MCP answers a question about code in fewer calls. search returns the whole code of its top results, find_symbol returns the code of several names in one call, and graph returns every text reference beside the call edges.
The north star of the project is lower token use with the same accuracy. It is measured, not estimated: see Token efficiency and benchmarks/.
Decide with your own numbers. The quick check is free, offline and calls no LLM:
uvx nexus-mcp-ci eval # the current folder
uvx nexus-mcp-ci eval path/to/project # another folder uvx nexus-mcp-ci eval https://github.com/pallets/flask # a public repo (shallow clone) uvx nexus-mcp-ci eval --example # the Nexus-MCP source, offline
It asks about 30 questions made from your own code and compares Grep and Read with one Nexus-MCP search. The right answer is the file that defines the symbol, from the parser, never from the Nexus-MCP ranking. On this repo's source (59 files) it gave "Likely fit": 1,234 median tokens to reach the right file against 5,385, and the right file first in 93% of questions against 70%. On Chromium's base/ (3,638 files of C++, Java and Python) it gave "Strong fit": 950 median tokens against 17,998 (95% fewer), and the right file first in 70% of questions against 40%. On pallets/click (91 files, from its URL) it gave "Strong fit": 1,301 median tokens against 24,774 (95% fewer), and the right file first in 97% of questions against 27%. On a tiny project Grep and Read win, and the report says so.
Want the real agent cost? The agent tier runs your own Claude Code or Codex login on tasks from your code, with and without Nexus-MCP. It shows the cost first and asks:
nexus-mcp-ci eval --agent claude # Claude Sonnet
nexus-mcp-ci eval --preset efficient --agent claude:haiku,claude:sonnet
Results are saved in ~/.nexus-mcp/evals/ (eval list, eval show ). eval share posts the numbers (no code, no paths) to the community table, only after you say yes. Full guide: docs/EVALUATE.md. In Claude Code, the plugin adds /nexus-mcp:evaluate.
Your code stays on your machine. The server makes no network calls and has no telemetry.
NEXUS_OFFLINE=1 after that). eval also runs a git clone.eval --agent (prompts and code go to Anthropic or OpenAI through your own CLI) or eval share (numbers only). Both ask first. /.nexus/ (it holds code: add it to .gitignore), the model in ~/.cache/huggingface/, eval results in ~/.nexus-mcp/evals/.nexus-mcp-ci data where # every location and its size
nexus-mcp-ci data clear --all # dry run; add --yes to delete
Every location, the shell commands that do the same, and the uninstall steps: docs/PRIVACY.md.
You need uv. Nothing else.
Ask your agent. Open your agent (Claude Code, Codex, Cursor, Gemini CLI) in your project and say:
Install Nexus-MCP from https://github.com/jaggernaut007/Nexus-MCP
The agent reads llms-install.md and runs one command. You can run the same command yourself:
uvx nexus-mcp-ci setup
setup finds the MCP clients on your machine, shows each change, and asks before it writes anything. It adds the server and a short skill that tells the agent when to use each tool. Add --dry-run to see the changes only, --client codex to pick one client, and --uninstall to remove what it wrote. Then reload your client (or start a new session) and ask something like "where do we retry failed payments?". The agent calls search, and index once, the first time in a project.
The server sends its own usage instructions when it connects, so the agent knows which tool answers which question even without the skill.
Other ways in, each with the same server:
nexus-mcp.mcpb from the latest release and open itgemini extensions install https://github.com/jaggernaut007/Nexus-MCPdocker run -i --rm -v "$PWD:/workspace" -v nexus-data:/data ghcr.io/jaggernaut007/nexus-mcpuses: jaggernaut007/Nexus-MCP@v2All channels, and what each needs: docs/DISTRIBUTION.md.
The plugin registers the server and the same routing skill. It runs the server through uvx, so it needs only uv, no pip install:
/plugin marketplace add jaggernaut007/Nexus-MCP
/plugin install nexus-mcp@nexus-mcp
Use setup or the plugin for Claude Code, not both, or the server is registered twice. Tool names differ by route: mcp__nexus-mcp__search after setup, mcp__plugin_nexus-mcp_nexus-mcp__search through the plugin. The rest of this README writes bare names (search) and you do not need the prefix in prompts.
If you want the rules in your own project file, a short block is enough:
## Code Navigation
The nexus-mcp server is connected. For questions about how this codebase works:
index only if a tool says the project is not indexed.search to find code, find_symbol for symbols, map for structure.graph with transitive=true before you change a shared function. The call graph is static, so also use search for dynamic call sites.
The full routing guide is in docs/AGENT_ROUTING.md.
Source files
│ ├─ Step 1: Discover ──────── walk tree, filter by ext/size/.gitignore │ ├─ Step 2: Parse symbols ─── tree-sitter (parallel ThreadPool) │ extracts: functions, classes, methods │ captures: name, signature, docstring, line_start/end, language │ ├─ Step 3: Parse graph ────── ast-grep (sequential for consistency) │ extracts: containment edges, import edges, callee names of each function │ (indexing/call_resolver.py makes CALLS edges after the
Only the beginning is shown; read the rest in the repo