@esankhan3/code-search-mcp

中文文档
1.1.7发布于 2026/11/13MITES Module构建来源已验证近 30 天下载 2211

多repo 代码搜索的 MCP 服务器 — GitHub org 或本地路径, 零配置

中文使用文档
文档目录16 节
  1. 目录
  2. 你的经纪人可以问什么
  3. 快开始
  4. 工具
  5. 搜索
  6. 图
  7. 简介和索引
  8. 如何运作
  9. 规模业绩
  10. 如何运行它
  11. 配置
  12. 安保和行动
  13. 支持的语言
  14. 设计原则
  15. 发展
  16. 许可证

代码搜索-mcp

npm license: MIT

密码搜索人工智能特工 遍及你拥有的所有仓库.

code-search-mcp 是一个用于索引许多 即时寄存器并给出任何 MCP 客户端( Claude Code, Claude Desktop, 咒语,或者你自己的经纪人) 三件事 grep 和纯向量搜索 无法:

  • 找到正确代码的混合搜索. 它处理精确的识别器, 在一个查询路径中部分名称、错误字符串和纯英语问题.
  • 密码图. 特工可以看见呼叫者 被呼叫者 呼叫链 死亡密码, 和爆炸半径 diff.
  • 一个系统图横跨仓库. 它连接到HTTP路线, gRPC 服务、Kafka专题、数据库表格、环境 vars 和共享类型 连接您的服务, 因此“ 谁消费这个话题 ” 有一个答案 .

它运行在笔记本电脑在stdio, 或者作为一个共享的HTTP服务器为整个团队. 它被测试在超过100万个索引代码块.

npm install -g @esankhan3/code-search-mcp
ollama pull bge-m3                                   # or use an OpenAI / Voyage / Mistral key
claude mcp add code-search -- code-search-mcp --local ~/code

就是这样。 你的探员现在知道你的密码了 这个 分步向导 覆盖一切方法运行它.


目录


你的经纪人可以问什么

问题代理工具
"我们在哪里核实JWTs?"search_code:语义+关键词+符号搜索,已连接
"寻找 CompanySearchResponse/"任何名称 *SearchResponse? 吗search_exact: 精确和部分标识匹配,不需要嵌入器
"谁打电话 createInvoice,从哪一个收回?"find_callers
如果我改变 billing/tax.ts,什么中断?"impact_analysis (跟随受抚养人交叉重置)
"这是什么diff触摸?"detect_changes: diff hunks – 更改实体 – 其受抚养人
"请求如何从 checkout 改为 ledgerWrite? 吗trace_path: 最短的呼叫链
哪个部门读取 orders.created 话题?"get_cross_repo_edges
"这雷波做什么 如何铺设?"get_repo_profile 编号 : get_architecture

快开始

1. 安装. 需要20个节点或更新 git。 。 。 .

npm install -g @esankhan3/code-search-mcp

此安装三个命令: code-search (CLI), (中文(简体) ), code-search-mcp (MCP服务器)和 code-search-daemon (表-再指数).

2. 选个嵌入器. 默认( E)auto)使用它发现的第一个:

你有过用这个
CODE_SEARCH_EMBEDDING_BASE_URL 设定任何与 OpenAI 兼容的终点
Ollama 本地运行奥拉玛,模型 bge-m3 (完全下线)
MISTRAL_API_KEY编码嵌入
OPENAI_API_KEY开放AI
VOYAGE_API_KEY阴道
GEMINI_API_KEY 编号 : GOOGLE_API_KEY 或登入双子座CLI双子座

3. 终点站的索引和查询.

code-search index ~/code --project acme       # one repo, or a folder full of repos
code-search query --project acme "where do we retry failed webhooks"
code-search query --project acme "WebhookRetryPolicy" --mode bm25

4. 连接您的MCP客户端.

# Claude Code
claude mcp add code-search -- code-search-mcp --local ~/code --project acme
// Claude Desktop (claude_desktop_config.json) or Cursor (~/.cursor/mcp.json)
{
  "mcpServers": {
    "code-search": {
      "command": "code-search-mcp",
      "args": ["--local", "/Users/me/code", "--project", "acme"]
    }
  }
}

该指南涵盖团队服务器、Docker、GitHub orgs、对象存储和 排除出问题 : 运行中。 。 。 .


工具

十七种工具分四组. 每个工具都验证其反对的论据 其策略和返回 isError: true 当他们错了,有原因.

工具它会做什么
search_code混合搜索:矢量+关键字+符号+短语分级,被熔接后再通过代码图扩展并可选地重新排序
search_semantic唯向量:解释和意图
search_exact以精确和部分符号名和精确口号为首的文字搜索;没有嵌入器的作品
get_code_snippet一个实体的名称来源比阅读整个文件便宜

图

工具它会做什么
find_callers 编号 : find_dependencies谁叫符号,什么叫符号. calls 默认边缘; relations 增加进口、使用、类型参考和继承
trace_path两个符号之间最短的呼叫链,或者从一个符号可以到达的一切
impact_analysis文件或实体的依赖者,最多5跳,横跨仓库
detect_changes向行已更改的实体及其依附者映射 git diff
search_graph结构查询:按名称(regex),类型,文件或repo排列的节点,按连接排序
find_dead_code无参考文献( 高度)
get_repo_graph一个仓库的实体和边缘
get_cross_repo_edges存放处之间的联系,每个存放处都与产生它的证据相联系
get_architecture项目概览:存储器的作用、关键流量、连接

符号有确切名称或全称匹配 repo::file::entity 编号. fuzzy: true 匹配对大小写不敏感的子字符串。 多跳转弯 绑定( 50k 节点, 1 s), 因此大圆形的中枢符号得到部分 回答是这么说的 永远不要挂断.

简介和索引

工具它会做什么
list_repos 编号 : get_repo_profile每个存储器的技术堆栈、结构和入口
index_status每次重播、嵌入器、上次索引时间、矢量指数健康

加上MCP资源: code-search://repos, (中文(简体) ), code-search://system-graph, (中文(简体) ), code-search://repo/{name}/profile, (中文(简体) ), code-search://repo/{name}/graph。 。 。 .


如何运作

flowchart LR
  subgraph Index["Indexing (incremental)"]
    direction TB
    A[Discover repos] --> B[Change check per repo<br/>git SHA + working-tree snapshot]
    B --> C[AST chunking<br/>tree-sitter, 8 languages]
    C --> D[Per-repo code graph<br/>calls, imports, types, inheritance]
    C --> E[Cross-repo signals<br/>routes, topics, tables, env vars, ...]
    E --> F[Hash-join correlation<br/>14 strategies]
    D & F --> G[(System graph<br/>SQLite)]
    C --> H[Embed only changed chunks<br/>reuse vectors by content hash]
    H --> I[(LanceDB<br/>vectors + full-text + trigram indexes)]
  end
  subgraph Query["Query"]
    direction TB
    Q[Query] --> K[Classify:<br/>identifier, path, error, natural language]
    K --> V[Vector] & BM[Keyword BM25<br/>tokens + identifier parts] & S[Symbol names<br/>exact + trigram substring] & P[Exact phrase]
    V & BM & S & P --> R[Weighted rank fusion<br/>+ exact-symbol pin + dedupe]
    R --> X[Graph expansion<br/>callers, callees, type refs]
    X --> RR[Optional cross-encoder rerank]
  end
  I --> V & BM & S & P
  G --> X

春克跟随代码的结构. 文件在定义边界中分割 (功能,类,方法,顶级常数),不是每个N行. 每个 块带上下文前缀( 文件路径、 模块和导入) 嵌入着它.

四个检索级平行运行. 矢量搜索捕获意图. BM25在原始标志和复合识别器上运行 所以 "预期的积压数"发现 verifyExpectedBacklogCount符号级 通过三克索引将实体名称精确匹配为子字符串, 所以 SearchResponse 发现 CompanySearchResponse选项 字符串单词。 查询分类器对每个查询的分级权重 : 标识符依靠关键字,问题依靠向量.

图表比绘图要多. 它提供检索(种子点击拉入) 直接回答结构性问题. 交叉储存地边缘来自14个探测器:npm和工作空间 依赖性,共享类型,env vars, Kafka等主题, HTTP 路由 (包括模板-语言客户端URL),gRPC服务,数据库计划, Redis 密钥、 S3 桶、 OpenAPI 合同、 插头编组和 Kubernetes 服务参考和共享常数.

指数保持不变.

  • 每个周期只触及变化:
    • 同时检查仓库;
    • 只重装已更改的文件;
    • 只有文本被重新嵌入的块;
    • 系统图已更新.
  • 向量指数随着体积的增大而回转.
  • 每个查询所探测的IVF分区数是自动校正以击中 0.95 准确扫描时召回.
  • 嵌入器按指数被固定: 使用不同的模型查询或 维度大小是一个错误,从不沉默错误的结果.

规模业绩

用一台12分多分的手提电脑测量,360块超过115万块 ,包含600个混合查询(精确识别码、部分名称、, 自然语言和短语). 这本书是复制真实的 存储器。 使用一个嵌入器,所以时间排除了 嵌入式提供方延迟.

search_code 延迟(p50, 1名客户)36分钟
search_exact 延迟(p50, 1名客户)17分钟
吞吐量,8个同时客户26个q/s (单位:千美元)search_code, (中文(简体) ), 39个q/s (单位:千美元)search_exact(中文(简体) )
矢量召回@ 10 vs 精确扫描( 自动校正)0.977 (英语)
重新指数,没什么变化~15 s (韩语)
在一个文件编辑后重新索引( 重排、 图表、 嵌入)~30–70 s (英语)
系统图中的交叉存储边454克级

在同一查询中,预期文件以100%的比例排在前十 两个搜索工具中的精确识别查询。 自然语言 91%的问题 search_code 和80% search_exact。 。 。 .


如何运行它

模式命令用它来
当地、 stdiocode-search-mcp --local ~/code一个开发者; 索引存在于您的机器上
GitHub 键code-search-mcp --local "github:my-org/api-*"克隆或刷新匹配的重置器,然后为它们服务
团队服务器code-search-mcp --serve ~/code --auth api-key每个人一个索引,超流式HTTP at /mcp
远程代理code-search-mcp --remote https://search.internal连接团队服务器的细长本地 stdio 桥; 无任何本地索引
守护进程code-search-daemon --workspace ~/code查看文件和关于更改的再索引; CLI 通过本地套接字查询
夹克docker build -f Dockerfile.all-in-one …Ollama的一幅图像 嵌入器和重排器模型

团队服务器在首个索引运行前绑定它的端口,所以健康 探测器立即回答(/ready 是503,直到指数可以服务为止. 它服务于每一个 /mcp 以无国籍方式请求,这就使得重新开始是免费的,而且 让它横跨核心 CODE_SEARCH_WORKERS=N在模式一中 初级是所有写作和N工人服务.

对于无国籍的吊舱,矢量可以活在S3或MinIO(s3:// LanceDB URIs)和 互联网档案馆的存檔,存档日期2013-12-02 蒙戈DB的索引文物. 见 运行. md § 对象存储。 。 。 .


配置

五层,最低至最高优先级:

  1. 内置默认值
  2. ~/.code-search/config.yaml (每个用户)
  3. <workspace>/.code-search.yaml (每个工作区)
  4. CODE_SEARCH_* 环境变量
  5. CLI 旗: 任何设置为 --<dotted.path> <value>,比如说. --retrieval.max-chunks 12

code-search --print-config 用秘密打印解析结果 已编辑 。 一个身份不明的旗下出口有2级,而不是被忽略.

# .code-search.yaml
embedding:
  provider: openai          # auto | ollama | openai | voyage | codestral | openai-compatible | gemini-oauth | custom
  model: text-embedding-3-small
  dimensions: 1536
reranker:
  provider: none            # ollama (default, qwen2.5-coder:7b) | cohere | voyage | openai-compatible | none
retrieval:
  max_chunks: 12
indexing:
  reindex_interval_ms: 1800000   # team server: re-index every 30 min
变量( E)CODE_SEARCH_…(中文(简体) )目的
EMBEDDING_PROVIDER 编号 : _MODEL 编号 : _DIMENSIONS 编号 : _API_KEY 编号 : _BASE_URL嵌入器
RERANKER_PROVIDER 编号 : _MODEL 编号 : _API_KEY 编号 : _BASE_URL重排( R)none 要禁用)
DATA_DIR指数所在( 默认) ~/.anvil/knowledge-base(中文(简体) )
PORT 编号 : HOSTHTTP 绑定( 默认) 127.0.0.1:3100(中文(简体) )
AUTH_MODE 编号 : AUTH_API_KEYS 编号 : AUTH_JWT_SECRETnone 编号 : api-key 编号 : jwt
REINDEX_INTERVAL30m, (中文(简体) ), 1h, (中文(简体) ), 6h 或者说 0
WORKERSHTTP工人流程(2-16)
SERVER 编号 : API_KEY远程代用目标及其关键
VECTOR_NPROBES在每个查询中修补IVF探测器( 覆盖自动校正; 下行 = 速度快, 回回转更慢)
STORAGE_VECTOR_URI, (中文(简体) ), STORAGE_BLOB_BACKEND, (中文(简体) ), STORAGE_MONGO_*, (中文(简体) ), STORAGE_S3_*物体储存部署

完整名单在 运行. md § 配置引用。 。 。 .


安保和行动

  • 奥特.
    • none: 绑定 127.0.0.1 只有这个.
    • api-key数字 : Authorization: Bearer …,以恒定时间比较.
    • jwt: HS256; 签字、发行人和所需 exp 验证,加 nbf 此时此刻 服务器拒绝在没有秘密的情况下启动 .
    • 一个没有认证的公开绑定记录了警告.
  • 限制. 每名身份滑入-窗口率限制(默认为100分/分). 每个项目的范围和查询配额来自 <dataDir>/projects/<name>/project.yaml。 。 。 .
  • 端点.
    • GET /health, (中文(简体) ), /ready, (中文(简体) ), /version, (中文(简体) ), /status。 。 。 .
    • GET /metrics: 查询计数的Prometheus度量衡,纬度直方图,出错,索引年龄,每回波块和矢量-索引健康.
    • GET /admin/api/status。 。 。 .
    • POST /index:按需重新索引.
  • 记录和追踪. CODE_SEARCH_STRUCTURED_LOGS=1 发出JSON日志. 查询文本不会留下痕迹,除非您选择加入 CODE_SEARCH_TELEMETRY_RECORD_QUERIES=1。 。 。 .

支持的语言

支助语文/文件
AST 分块、 代码图、 交叉检索信号TypeScript, TSX, JavaScript, Python, Go, Java, Rust, PHP 软件
索引搜索以上,加上外壳、YAML、Terraform/HCL、TOML、, Dockerfile, (中文(简体) ), Makefile, (中文(简体) ), Jenkinsfile

.gitignore 受到尊重,以及 node_modules, (中文(简体) ), dist, (中文(简体) ), build, (中文(简体) ), vendor, (中文(简体) ), target 和类似目录被跳过.


设计原则

  • 多发相先. 有趣的问题交叉存储库 边框,所以索引,图表和工具都一样.
  • 缩小范围. 每个指数周期的成本与 换了,不是换了尸体 每个查询层都是以索引为基础的. 每一图相通相入相入相入相.
  • 永不默然错入. 嵌入器不匹配是一个硬错误. 截断 路人说他们被截断了 坏的工具参数返回原因 .
  • 默认本地, 需要时共享 . 同样的二进制服务 笔记本电脑在Stdio或整个团队 在HTTP.
  • 很少移动部分. 嵌入 LanceDB 和 SQLite, 没有数据库服务器可用 运行,一个手滚动的 HTTP 层和零依赖性度量.

发展

这个软件包住在一个单列波 与它的检索引擎, @esankhan3/anvil-knowledge-core。 。 。 .

npm install                                        # at the repo root
npm -w @esankhan3/anvil-knowledge-core run build
npm -w @esankhan3/code-search-mcp run build        # esbuild bundle → dist/
npm -w @esankhan3/code-search-mcp test
npm -w @esankhan3/code-search-mcp run smoke        # end-to-end, needs Ollama with bge-m3

内部 : 四、建 议。检索引擎: 知识核心。 。 。 .

许可证

麻省理工学院

版本与发布记录

@esankhan3/code-search-mcp 共发布 33 个版本,首次发布于 2026/04/21;过去 12 个月发布了 33 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
1.1.7latest2026/11/131 天前
1.1.62026/11/121 天前
1.1.52026/11/122 天前
1.1.42026/10/2520 天前
1.1.32026/10/2420 天前
1.1.22026/10/2420 天前

关于 @esankhan3/code-search-mcp 的常见问题

@esankhan3/code-search-mcp 是什么?

多repo 代码搜索的 MCP 服务器 — GitHub org 或本地路径, 零配置

如何安装 @esankhan3/code-search-mcp?

在项目目录运行 npm install @esankhan3/code-search-mcp,或使用 pnpm add / yarn add / bun add。它还提供命令行工具 code-search、code-search-mcp、code-search-daemon,可以用 npx code-search 直接运行。

@esankhan3/code-search-mcp 支持 TypeScript 吗?

该包的 package.json 没有声明类型入口。需要类型提示时,可以在 npm 上查找社区维护的 @types/esankhan3__code-search-mcp 是否存在。

@esankhan3/code-search-mcp 支持 ESM 还是 CommonJS?

以 ES Module 形式发布,推荐使用 import 引入。在 CommonJS 项目中,Node.js 20.19+ / 22.12+ 可以直接 require() 不含顶层 await 的 ES Module,更早的版本需要改用动态 import()。

@esankhan3/code-search-mcp 可以商用吗?

@esankhan3/code-search-mcp 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@esankhan3/code-search-mcp 的下载量有多少?

根据 npm 官方下载统计,@esankhan3/code-search-mcp 在 2026/10/14 – 2026/11/12 这 30 天内被下载 2,211 次,日均约 74 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@esankhan3/code-search-mcp 还在维护吗?

最新版本 1.1.7 发布于 2026/11/13(1 天前);至今共发布 33 个版本,其中过去 12 个月发布了 33 个;首次发布于 2026/04/21。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。