关于 tokennuke
TokenNuke 是为编码 Agent 和开发者索引代码仓库的 MCP 服务。它结合语法感知的符号提取、混合搜索、调用图和直接源码读取,并可增量索引变更文件。
主要功能
- 01索引本地和远程仓库
- 02提取 10 种语言的符号
- 03混合关键词与向量搜索
- 04按字节偏移读取符号源码
- 05追踪调用方和被调用方
- 06增量重新索引已修改文件
适用场景
- 01入门代码库时查找相关代码
- 02修改函数前检查其调用方
- 03重构前梳理依赖关系
- 04比较索引间的符号变更
MCP 相关
FastMCP 通过 stdio 或 HTTP 暴露 15 个代码索引和搜索工具。MCP 客户端可用其索引仓库、搜索符号与文本并检查源码关系。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
TokenNuke
智能代码索引 MCP 服务。提供 15 个工具,支持 10 种语言、tree-sitter AST 提取、混合搜索(FTS5 + 向量)、调用图、远程仓库索引和增量索引。
节省 99% 的令牌——通过字节偏移定位直接获取准确的函数源码,无需读取整个文件。
原名为
codemunch-pro。代码不变,名称更好。
安装
pip install tokennuke
快速开始
Claude Desktop / Cline
添加到 MCP 客户端配置中:
{
"mcpServers": {
"tokennuke": {
"command": "tokennuke"
}
}
}
HTTP 服务
tokennuke --transport streamable-http --port 5002
15 个 MCP 工具
| 工具 | 描述 |
|---|---|
index_folder | 为本地目录建立索引(增量式,基于 SHA-256) |
index_repo | 为 GitHub/GitLab 仓库建立索引(下载 tarball,无需 git) |
list_repos | 列出所有已建立索引的仓库及其统计信息 |
invalidate_cache | 强制为仓库重新建立索引 |
file_tree | 获取目录树及文件数量 |
file_outline | 列出单个文件中的符号 |
repo_outline | 列出仓库中的所有符号(摘要) |
get_symbol | 获取单个符号的完整源码(O(1) 字节定位) |
get_symbols | 批量获取多个符号 |
search_symbols | 混合搜索(FTS5 + 向量 RRF) |
search_text | 在文件内容中进行全文搜索 |
get_callees | 这个函数调用了什么? |
get_callers | 谁调用了这个函数? |
diff_symbols | 与上次建立索引相比有哪些变化?(PR 审查) |
dependency_map | 这个文件依赖什么?哪些文件依赖它? |
10 种语言
Python、JavaScript、TypeScript、Go、Rust、Java、C、C++、C#、Ruby
全部通过 tree-sitter-language-pack 实现——无需编译,提供预构建二进制文件。
主要功能
O(1) 符号获取
每个符号都会存储其字节偏移和长度。get_symbol 会直接定位到函数源码——无需读取整个文件。从 40KB 文件中获取一个 200 字节的函数,可节省 99.5% 的令牌。
增量索引
文件会经过哈希处理(SHA-256)。只会重新解析变更过的文件。修改一个文件后,为包含 10K 个文件的仓库重新建立索引只需几毫秒。
混合搜索(FTS5 + 向量)
使用互惠排名融合,将 BM25 关键词匹配与语义向量相似度相结合。搜索“身份验证中间件”,即可找到 auth_middleware、verify_token 和 login_handler。
调用图
通过 AST 跟踪函数调用。get_callees("main") 会显示 main 调用了什么。get_callers("authenticate") 会显示谁调用了 authenticate。支持深度遍历。
远程仓库索引
通过 URL 为任意公开的 GitHub 或 GitLab 仓库建立索引——无需 git 二进制文件。通过 API 下载 tarball,解压并建立索引。缓存保存在本地,并通过 SHA 检查数据新鲜度。支持使用身份验证令牌访问私有仓库,也支持稀疏路径。
全文内容搜索
搜索原始文件内容——字符串字面量、TODO 注释、配置值、错误消息等。不仅限于符号名称。
工作原理
- 解析——tree-sitter 为每个源文件构建 AST
- 提取——遍历 AST,查找函数、类、方法、类型和接口
- 存储——为每个仓库创建 SQLite 数据库,其中包含 FTS5 虚拟表
- 嵌入——FastEmbed(ONNX,仅用 CPU)生成 384 维向量,用于语义搜索
- 构图——从函数体中提取调用表达式,存储并解析边
- 提供服务——FastMCP 通过 stdio 或 HTTP 暴露 15 个工具
架构
~/.tokennuke/
├── myproject_a1b2c3d4e5f6.db # Per-repo SQLite database
├── otherproject_7890abcdef.db
└── ...
Each DB contains:
├── files # Indexed files with SHA-256 hashes
├── symbols # Functions, classes, methods, types
├── symbols_fts # FTS5 full-text search index
├── symbols_vec # sqlite-vec 384-dim vector index
├── call_edges # Call graph (caller → callee)
└── file_content_fts # Raw file content search
使用场景
- AI 编码 Agent:让 Agent 精准访问代码库,同时避免耗尽上下文
- 代码审查:修改函数签名前,查找所有调用方
- 新人上手:通过语义搜索查找符号——搜索“错误处理在哪里?”即可找到相关代码
- 重构:在模块间移动函数之前,绘制调用图
- 文档编写:提取所有公开 API 及其签名和文档字符串
许可证
MIT
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。