代码搜索服务

一个基于Zoekt的快速本地源代码搜索服务,支持多种查询语言和跨平台使用。

  • by trondhindenes
  • Go
  • 本地部署
  • 7 星标
  • 更新于
在 GitHub 查看 trondhindenes/code-index-mcp

使用说明

代码索引MCP服务器

用于快速本地源代码搜索的MCP(模型上下文协议)服务器 正在搜索.

特性

  • 快速代码搜索:使用Zoekt基于三元组的索引进行快速子字符串和正则表达式匹配
  • 按目录索引:每个索引目录都有自己的索引存储在用户配置文件中
  • 丰富的查询语言:支持正则表达式、文件过滤器、语言过滤器和布尔运算符
  • 跨平台:适用于macOS和Linux

安装

此服务器可在 MCP注册表.

下载预构建MCPB包(实验)

下载相应的 .mcpb 从捆绑包为您的平台 GitHub发布 页面:

  • code-index-mcp-darwin-arm64.mcpb -macOS苹果硅
  • code-index-mcp-darwin-amd64.mcpb -macOS英特尔
  • code-index-mcp-linux-amd64.mcpb -Linux x64
  • code-index-mcp-linux-arm64.mcpb -Linux ARM64

这 .mcpb 该文件是一个包含二进制文件和清单的ZIP存档。您可以直接在Claude Desktop中打开它进行安装

手动安装(推荐)

为了将二进制文件加载到您的计算机上,您可以执行以下操作之一:

从发布中下载

首选 GitHub发布 并下载 适当的文件(不是mcpb,而是与您的平台对应的tar/gzi压缩文件)。 例如:

curl -sL https://github.com/trondhindenes/code-index-mcp/releases/download/1.0.13/code-index-mcp-darwin-arm64.tar.gz | tar xz
chmod +x code-index-mcp

使用Go

go install github.com/trondhindenes/code-index-mcp@latest

从源代码构建

git clone https://github.com/trondhindenes/code-index-mcp
cd code-index-mcp
go build -o code-index-mcp .

配置

现在您已经在本地安装了二进制文件,可以在您选择的工具中注册它。 如果您是通过mcpb捆绑包安装的,则不需要这样做,但您的里程可能会有所不同。

克劳德桌面版

添加到您的Claude Desktop配置(~/Library/Application Support/Claude/claude_desktop_config.json 在macOS上):

{
  "mcpServers": {
    "code-index": {
      "command": "/path/to/code-index-mcp"
    }
  }
}

克劳德代码

运行以下命令:

claude mcp add --scope user --transport stdio code-index /path/to/code-index-mcp

环境变量

  • CODE_INDEX_DIR:覆盖默认索引存储位置

默认索引位置:

  • macOS: ~/Library/Application Support/code-index/
  • Linux: ~/.local/share/code-index/ 或 $XDG_DATA_HOME/code-index/

可用工具

index_directory

为源代码目录建立索引,以便快速搜索。

参数:

  • directory (必填):要索引的目录的路径

例子:

Index the directory /Users/me/projects/myapp

search_code

在索引目录中搜索代码。返回类似grep的紧凑输出,以最大限度地减少上下文窗口的使用。

参数:

  • query (必填):使用Zoekt语法的搜索查询
  • directory (可选):将搜索限制到特定的索引目录
  • max_files (可选):要返回的最大文件数(默认值:20)
  • max_lines_per_file (可选):每个文件的最大匹配数(默认值:3)
  • files_only (可选):仅返回文件路径,无行内容(默认值:false)

输出格式:

/path/to/file.go:42: matching line content here
/path/to/file.go:58: another matching line
  ... and 5 more matches in this file

查询语法示例:

  • func main -简单文本搜索
  • file:\.go$ func main -仅在.go文件中搜索
  • lang:python class.*Model -在Python文件中搜索
  • -test func main -排除包含“测试”的文件
  • case:yes MyFunc -区分大小写的搜索

list_indexes

列出所有索引目录及其位置。

delete_index

删除特定目录的索引。

参数:

  • directory (必填):应删除其索引的目录的路径

index_info

获取有关索引配置的信息,包括存储位置。

跳过目录

在索引过程中会自动跳过以下目录:

  • 隐藏目录(以开头 .)
  • node_modules, vendor, __pycache__
  • target, build, dist
  • venv, .venv, env, .env

跳过的文件

二进制文件和常见的非代码文件会自动跳过,包括:

  • 可执行文件(.exe, .dll, .so, .dylib)
  • 档案(.zip, .tar, .gz)
  • 图片(.png, .jpg, .gif)
  • 文件(.pdf, .doc, .docx)

许可证

麻省理工学院