
NervaPack
io.github.ramdhavepreetam由 GitHub 账号 ramdhavepreetam 发布v0.5.8更新于 Oct 24, 2026
Offline codebase knowledge graph: 91% token reduction vs naive RAG, plus cross-session agent memory.
概览
离线代码库知识图谱 MCP 服务器,用聚焦且省 token 的上下文回答代码问题,并提供跨会话的智能体记忆。
- 可以做什么
- 查询已索引的代码库:向量检索加 K 跳图遍历,返回聚焦的 Markdown 上下文块和 token 节省数据
- 查看图谱状态:节点与边数量、语言分布、未同步文件提醒,并浏览已索引的类、函数、导入和文档
- 影响分析:反向依赖查询,找出依赖某个实体的内容
- 管理智能体记忆:开启与结束会话,存储事实、决策、流程和偏好,在 token 预算内召回,并获取实体档案、决策理由和时间线
- 维护记忆:确认或反驳条目、遗忘或清除节点、列出与清空会话、切换命名空间、批量导入,以及标记源文件已变更的记忆
- 关联记忆与代码:查找涉及某个文件或代码行的记忆,以及某条记忆涉及的代码位置
- 适用场景
- 适合在本地 git 仓库中反复工作的场景:希望代码问题基于紧凑的结构化上下文回答,而不是整份文件塞入;或希望决策与约定跨聊天会话保留,无需每次重新粘贴上下文。
- 运行要求
- 以 Python 包形式通过 stdio 在本地运行(需 Python 3.10+),用 uvx 启动;项目必须是 git 仓库。需先用 ingest 命令构建图谱。可选的文档与代码语义绑定需要 LLM:默认使用本地 Ollama,云端则需 ANTHROPIC_API_KEY 或 OPENAI_API_KEY 环境变量。首次运行会下载约 30 MB 的 ONNX 嵌入模型。
安装
在 SourceWeft 中
- 打开 控制台中的 NervaPack,将其添加到工作区。
- 为需要使用其工具的对话启用该服务。
Desktop only,通过 STDIO。 STDIO 服务会启动本地进程,因此需要 SourceWeft 桌面宿主。
其他 MCP 客户端
参照 仓库 中的启动说明。
README
NervaPack
[PyPI version] [Python Versions] [License: MIT] [Token Reduction] [Verified] [MCP Registry]
NervaPack is a privacy-first, offline knowledge graph for your codebase. It solves two fundamental problems with standard Vector RAG:
- Token waste — chunk-based RAG retrieves blobs of text that may only tangentially relate to your query, bloating your context window.
- Privacy risk — sending code to cloud embedding APIs leaks your proprietary logic.
NervaPack runs 100% on your machine. It uses tree-sitter to parse your codebase into a deterministic Abstract Syntax Tree graph, then uses a local Ollama model to draw hard semantic edges between your documentation and your code. Queries traverse this graph with a K-Hop BFS, returning a hyper-targeted, token-efficient context window — no cloud required.
Verified Performance
91.2% Average Token Reduction — independently verified on real-world codebases.
Cost Savings: $181–$724 per developer per year (GPT-4o to Claude Sonnet)
📊 View Full Benchmarks · 🧪 Messy Code Performance
Code quality impact: 90–99% reduction on clean code, 50–75% on legacy/messy code. Even poorly structured codebases benefit significantly.
Why NervaPack vs. standard Vector RAG
Prerequisites
- Python 3.10+
- Git — your project must be a git repository (
git initif not)
(Optional for semantic code-doc binding) — an LLM provider. Structural graph indexing and basic queries work out-of-the-box with zero configuration and no cloud connection.
Installation
On first run, ChromaDB downloads an ONNX embedding model (~30 MB) to
~/.cache/chroma/. This is a one-time download.
Quick Start
Command Reference
nervapack ingest [PATH] — Build the graph
Scans PATH (default: .) and builds the full knowledge graph.
What happens:
- Walks the directory tree with tree-sitter, skipping
dist/,build/,node_modules/,venv/,site/,.tox/, and dozens of other build directories automatically. - Parses source files into exact AST nodes: classes, functions, imports.
- Chunks all
.mdfiles by header hierarchy. - Embeds every entity into a local ChromaDB vector store (ONNX by default, Ollama optional).
- Optionally binds doc chunks to code nodes via an LLM, adding
EXPLAINSedges. - Saves the graph once to
.nervapack/graph.graphml.
Re-ingesting is safe — upsert is used throughout, so running ingest twice does not duplicate data.
Supported languages (bundled): Python, JavaScript, JSX, TypeScript, TSX
Additional languages:
Exclude directories — create .nervapackignore in your project root (gitignore syntax):
nervapack query PROMPT — Query the graph
Retrieves focused context for a natural-language prompt and prints a token savings dashboard.
What happens:
- Intent detection — "what breaks if I change X" routes to impact analysis (reverse BFS); exact symbol names bypass vector search.
- ChromaDB returns the top-3 most semantically similar nodes.
- Those nodes seed a K-Hop BFS through the NetworkX graph (default: 1 hop, both directions).
- Adjacent nodes — including any markdown docs via
EXPLAINSedges and memory notes viaTOUCHESedges — are collected. - A focused Markdown context block is printed, ready to paste into an LLM prompt.
- Token efficiency panel shows savings vs. naive "dump the whole file" RAG.
Example output:
nervapack sync [PATH] — Incremental update
Updates only the files that changed since the last ingest. Uses GitPython to diff the working tree.
A full ingest on a large project can take minutes. sync turns that into a 2–5 second surgical update per file. Re-parses changed files, batch-upserts new vectors, and saves the graph once at the end.
nervapack clean [OPTIONS] — Remove ingested data
Wipe graph data and start fresh. Use this when you have duplicate vectors, ingested the wrong directory, or need to reduce disk usage.
Never deleted by clean: memory.db — your agent memory is always safe.
Typical workflow after a bad ingest:
nervapack enrich [PATH] — Add semantic edges
Runs LLM doc-to-code binding on an already-ingested graph. Use this if you:
- Ran
ingestwithout an LLM and want to addEXPLAINSedges now. - Added new documentation and want to bind it without a full re-ingest.
nervapack status [--detailed] — Graph health
Health score (0–100) factors in documentation coverage, node connectivity, graph density, and edge diversity. A structural-only graph typically scores 30–40; after enrich it rises to 70–90.
nervapack visualize [OPTIONS] — Interactive HTML graph
Produces a standalone HTML file with no external dependencies — drag, zoom, search, find shortest paths between nodes.
nervapack explore TARGET [--hops N] — Focused subgraph
Extract and visualize the N-hop neighbourhood of a specific file, class, or function.
nervapack dependencies [FILE] — Import dependency analysis
Analyze file-level import chains, detect circular dependencies, and visualize the dependency graph.
nervapack hotspots [OPTIONS] — Change frequency analysis
Show which files change most often in git history — prime targets for documentation and review.
nervapack history [OPTIONS] — Query history
nervapack serve [--port N] — Web dashboard
Requires nervapack[dashboard]. Shows graph overview, language distribution, analytics, query history trends, and an interactive graph explorer.
nervapack doctor — Environment check
Verifies Python version, tree-sitter grammars, embedding backend, Ollama connectivity, and MCP config. Run this after installation or when troubleshooting.
Storage Layout
Everything lives in .nervapack/ inside your project root:
Add .nervapack/ to .gitignore to keep it out of version control.
Disk usage guide:
chroma_db/— typically 10–100 MB depending on project size. Runnervapack clean --vectors && nervapack ingest .if it grows unexpectedly.graph.graphml— typically 0.5–5 MB.memory.db— grows with agent usage; rarely exceeds a few MB.
MCP Integration (Claude Code, Cursor, Windsurf)
NervaPack ships two MCP servers in the same package. Drop this .mcp.json in your project root:
Knowledge Graph MCP tools (nervapack-mcp)
Agent Memory MCP tools (nervapack-memory-mcp) — 17 tools
CLAUDE.md template
Add to your CLAUDE.md to wire NervaPack into every Claude Code session:
Architecture
Key source modules:
nervapack.memory — Agent Memory
Stop re-pasting project context into every new chat.
Token efficiency:
CLI:
Data model: 8 node kinds, 7 edge kinds, bi-temporal (valid_from/valid_until), never hard-deletes by default.
Privacy
NervaPack is 100% offline by default:
- Embeddings use ChromaDB's built-in ONNX model (runs on CPU, no cloud).
- LLM calls (when using Ollama) go to
localhost:11434only. - All graph and vector data lives in
.nervapack/inside your project. - No telemetry, no analytics, no network calls at runtime.
Only if you explicitly pass --llm claude or --llm openai does any code leave your machine.
Contributing
- Fork the repo and create a branch.
- Run tests:
python3 -m pytest tests/memory/ -q - Run docs check:
python3 -m mkdocs build --strict - Open a pull request against
master.
Bug reports and feature requests: issue tracker.
License
MIT — see LICENSE.
来源:README.md,提交 a3a0548
工具
0版本历史
1- v0.5.8最新Sep 16, 2026
评分
已满足适用检查项的 50%
该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。
- 近 30 天内可连通25 分
请保持端点能够响应 MCP 握手;SourceWeft 每 30 天探测一次。
- 已声明认证方式10 分
请在注册中心条目中声明凭据请求头,或保持端点能够响应探测,以便判定其认证方式。
- 已列出工具15 分
请让服务器在无凭据时响应 tools/list,或发布可在沙箱中无凭据启动的软件包。
- 描述必需15 分
- 图标10 分
- 文档15 分
- 许可证10 分