Token导航 LogoToken导航

MCP Server · 开发工具

opencodesearch

opencodesearch是一个异步的Rust代码搜索系统,支持通过MCP协议进行代码检索,适用于大型代码库的搜索和管理。

未说明官方级别未说明来源级核验工具 1
代码搜索RustClaude异步处理

快速开始

公开资料没有提供安装命令,按仓库或官方文档接入。
作者 / 组织
BrosnanYuen
提供方
BrosnanYuen

工具数量

1

来源目录标注

资源数量

0

来源目录标注

提示词数量

0

来源目录标注

GitHub Star

1

仓库热度

收录来源

1 个

MCP World

选型结论

opencodesearch 属于开发工具类 MCP Server,公开资料标注 1 个工具,通过传输方式未标注接入,适配 Claude,没有现成的安装命令;接入前要先准备 会话凭据。

分类

开发工具

传输方式

未说明

认证方式

会话凭据

部署方式

公开资料未说明

安装与配置

公开目录没有给出安装命令,需要按仓库 README安装;下面按同类条目的通用流程说明。

公开命令不是通用的启动方式,拼不出可靠配置示例;请在客户端 MCP 配置里按官方文档填写 command 和 args。

上手步骤

  1. 1

    先确认运行方式

    公开资料没有标注传输方式,先看仓库 README,确认是本地进程还是远程地址。

  2. 2

    获取服务

    公开目录没有给出安装命令,按仓库 README里的步骤安装或获取服务。

  3. 3

    写入客户端配置

    在客户端的 MCP 配置里填启动命令和参数,保存后完全退出客户端再打开,让新配置生效。

  4. 4

    验证是否可用

    连接成功后客户端会列出 1 个工具,随便调一个只读工具确认能返回结果。

接入前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

公开资料仍需确认:安装命令

详细介绍

开放式代码搜索

opencodesearch 是一个具有模型上下文协议(MCP)服务器的异步Rust代码搜索系统。 它将大型存储库索引到矢量+关键字后端,并通过MCP工具提供搜索结果。

特性

  • 完全异步运行时(tokio)
  • 4个独立过程:

- 编排器(状态机+监督) - 背景故事 - MCP服务器进程 - git监视器进程

  • 运行时代码中集成和使用的所需板条箱:

- opencodesearchparser - qdrant-client - ollama-rs - rmcp

  • 混合检索:

- 语义搜索(Qdrant向量) - 关键字搜索(Quickwit HTTP+本地影子回退)

  • MCP服务器与使用流式HTTP和stdio传输的MCP客户端兼容

建筑

编排器中的状态机:

  • SPINUP:负载 config.json
  • NORMAL:run ingestor + mcp + watchdog
  • UPDATE:保持 watchdog,停止 ingestor + mcp 在更新窗口期间
  • CLOSING:优雅地阻止所有孩子

更新流程:

  • 看门狗跟踪自上次同步以来的git提交
  • 当阈值(commit_threshold)已达到:

- 发送 UPDATE_START 到编排器 - pull+计算更改/删除的文件 - 删除过时的文档 - 重新索引更改的文件 - 发送 UPDATE_END

需求

  • 防锈工具链
  • Docker+Docker组合
  • 本地网络访问:

- 奥拉马(11434) - Qdrant(6333 HTTP, 6334 gRPC) - 机智(7280)

配置

config.json 架构:

{
  "codebase": {
    "directory_path": "/path/to/massive/repo",
    "git_branch": "main",
    "commit_threshold": 50,
    "mcp_server_name": "My cool codebase",
    "mcp_server_url": "http://localhost:9443",
    "background_indexing_threads": 2
  },
  "ollama": {
    "server_url": "http://localhost:11434",
    "embedding_model": "qwen3-embedding:0.6b",
    "context_size": 2000
  },
  "qdrant": {
    "server_url": "http://localhost:6334",
    "collection_name": "opencodesearch-code-chunks",
    "api_key": null
  },
  "quickwit": {
    "quickwit_url": "http://localhost:7280",
    "quickwit_index_id": "opencodesearch-code-chunks"
  }
}

重要提示:

  • qdrant.server_url 应以gRPC终结点端口为目标(6334)for qdrant-client.
  • quickwit.quickwit_url 应该以HTTP为目标(7280).

启动后端服务

运行所有本地依赖项:

docker compose up -d

检查容器:

docker ps

运行系统

1) 编排器模式(推荐)

启动并监督所有子进程。

cargo run -- orchestrator --config config.json

2) 单个流程模式

您可以直接运行每个进程进行调试。

英格斯托:

cargo run -- ingestor --config config.json

MCP服务器:

cargo run -- mcp --config config.json

通过stdio的MCP服务器(用于本地MCP客户端):

cargo run -- mcp-stdio --config config.json

看门狗(需要编排器IPC环境):

OPENCODESEARCH_IPC_SOCKET=/tmp/opencodesearch.sock cargo run -- watchdog --config config.json

MCP服务器使用情况

MCP服务器支持:

  • 通过流式传输HTTP cargo run -- mcp --config config.json
  • stdio通过 cargo run -- mcp-stdio --config config.json

已实施的MCP工具:

  • search_code

- 输入: - query: string - limit?: number (默认值8,最大值50) - 输出(结构化JSON):对象数组 - snippet - path - start_line - end_line - score - source

工具输入示例

{
  "query": "which function changes obj variable",
  "limit": 5
}

结果形状

{
  "hits": [
    {
      "path": "/repo/module.py",
      "snippet": "def mutate(obj): ...",
      "start_line": 10,
      "end_line": 22,
      "score": 0.92,
      "source": "qdrant"
    }
  ]
}

与MCP客户端一起使用

此服务器支持以下两种功能:

  • 可流式传输HTTP(cargo run -- mcp --config config.json)
  • 本地stdio(cargo run -- mcp-stdio --config config.json)

OpenAI 代码专家

Codex支持stdio和可流式传输的HTTP MCP服务器。

标准(CLI):

codex mcp add opencodesearch -- \
  cargo run --quiet --manifest-path /home/brosnan/opencodesearch/Cargo.toml -- \
  mcp-stdio --config /home/brosnan/opencodesearch/config.json

远程HTTP(~/.codex/config.toml 或 .codex/config.toml):

[mcp_servers.opencodesearch]
url = "http://localhost:9443/"

然后验证:

codex mcp list

开源代码

OpenCode配置使用 mcp 部分在 opencode.json (或 opencode.jsonc).

远程HTTP:

{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "opencodesearch": {
      "type": "remote",
      "url": "http://localhost:9443/",
      "enabled": true
    }
  }
}

本地标准:

{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "opencodesearch": {
      "type": "local",
      "command": [
        "cargo",
        "run",
        "--quiet",
        "--manifest-path",
        "/home/brosnan/opencodesearch/Cargo.toml",
        "--",
        "mcp-stdio",
        "--config",
        "/home/brosnan/opencodesearch/config.json"
      ],
      "enabled": true
    }
  }
}

克劳德代码

Claude Code支持HTTP、SSE和stdio MCP传输。

远程HTTP:

claude mcp add --transport http opencodesearch http://localhost:9443/

本地标准:

claude mcp add --transport stdio opencodesearch -- \
  cargo run --quiet --manifest-path /home/brosnan/opencodesearch/Cargo.toml -- \
  mcp-stdio --config /home/brosnan/opencodesearch/config.json

然后验证:

claude mcp list

TLS/HTTPS注释

  • 默认本地配置使用 http://localhost:9443.
  • 对于 https://...,提供您的MCP客户端信任的证书。
  • TLS证书和密钥默认值:

- certs/localhost-cert.pem - certs/localhost-key.pem

  • 使用以下内容覆盖TLS文件路径:

- OPENCODESEARCH_TLS_CERT_PATH - OPENCODESEARCH_TLS_KEY_PATH

  • 特别是对于Codex,您可以提供一个自定义CA包 CODEX_CA_CERTIFICATE.

参考文献

  • 食品法典委员会MCP文件:https://developers.openai.com/codex/mcp
  • OpenCode MCP文档:https://opencode.ai/docs/mcp-servers/
  • 克劳德代码MCP文档:https://code.claude.com/docs/en/mcp

快速卷曲测试

使用附带的脚本:

./test_mcp_curl.sh

可选:

  • MCP_URL=https://localhost:9443/ MCP_INSECURE=1 ./test_mcp_curl.sh

该脚本执行所需的MCP HTTP握手步骤:

  1. initialize
  2. 提取 mcp-session-id 从响应标头
  3. 发送 notifications/initialized 与相同 mcp-session-id
  4. 呼叫 tools/call 为了 search_code

手动卷曲顺序

初始化并捕获会话id:

curl -sS -D headers.txt http://localhost:9443/ \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json, text/event-stream' \
  -d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-03-26","capabilities":{},"clientInfo":{"name":"curl-test","version":"1.0"}}}'

发送初始化通知:

SESSION_ID="$(awk 'tolower($1)=="mcp-session-id:"{print $2}' headers.txt | tr -d '\r' | tail -n 1)"
curl -sS http://localhost:9443/ \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json, text/event-stream' \
  -H "mcp-session-id: ${SESSION_ID}" \
  -d '{"jsonrpc":"2.0","method":"notifications/initialized"}'

调用MCP工具:

curl -N http://localhost:9443/ \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json, text/event-stream' \
  -H "mcp-session-id: ${SESSION_ID}" \
  -d '{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"search_code","arguments":{"query":"which function mutates obj","limit":5}}}'

Rust API文档

板条箱公开了可重用的模块,用于嵌入、索引、MCP服务和过程控制。

模块

  • config:解析类型化的应用程序配置(AppConfig)
  • chunking:将源文件解析/拆分为块(chunk_file)
  • indexing:索引运行时(IndexingRuntime)
  • qdrant_store:矢量存储+语义查询(QdrantStore)
  • quickwit:关键字存储/查询(QuickwitStore)
  • mcp:MCP服务器类型(OpenCodeSearchMcpServer)
  • watchdog:git更新监视器(WatchdogProcess)
  • orchestrator:多流程主管(Orchestrator)

最小Rust索引示例

use opencodesearch::config::AppConfig;
use opencodesearch::indexing::IndexingRuntime;

#[tokio::main]
async fn main() -> anyhow::Result {
    let config = AppConfig::from_path("config.json")?;
    let runtime = IndexingRuntime::from_config(config)?;

    runtime.index_entire_codebase().await?;
    Ok(())
}

最小Rust语义搜索示例

use opencodesearch::config::AppConfig;
use opencodesearch::indexing::IndexingRuntime;

#[tokio::main]
async fn main() -> anyhow::Result {
    let config = AppConfig::from_path("config.json")?;
    let runtime = IndexingRuntime::from_config(config)?;

    let query_vec = runtime.embed_query("where is object mutated") .await?;
    let hits = runtime.qdrant.semantic_search(query_vec, 5).await?;

    for hit in hits {
        println!("{}:{}-{}", hit.path, hit.start_line, hit.end_line);
    }

    Ok(())
}

最小化Rust MCP服务器嵌入

use opencodesearch::config::AppConfig;
use opencodesearch::indexing::IndexingRuntime;
use opencodesearch::mcp::OpenCodeSearchMcpServer;

#[tokio::main]
async fn main() -> anyhow::Result {
    let config = AppConfig::from_path("config.json")?;
    let runtime = IndexingRuntime::from_config(config)?;
    OpenCodeSearchMcpServer::new(runtime)
        .run_streamable_http("http://localhost:9443")
        .await
}

测试

标准测试

cargo test

活容器集成测试

需要运行Docker服务和本地git:

cargo test -- --ignored

当前忽略的集成测试验证:

  • Ollama连接
  • Quickwit+Qdrant连接
  • 生成的Python项目上的完整索引流
  • 通过非精确查询短语的MCP搜索路径进行检索
  • 看门狗阈值行为的100次提交重构场景

故障排除

  • Quickwit健康端点:使用 http://localhost:7280/health/livez
  • 如果嵌入失败,请确认Ollama型号的可用性:

- qwen3-embedding:0.6b

  • Qdrant客户端需要gRPC端口(6334)在配置中
  • 如果集成测试在启动竞赛中失败,请在短暂的容器预热后重新运行

工具与能力

工具数量

1

资源数量

0

提示词数量

0

能力标签

代码搜索Rust本地部署异步处理MCP协议向量检索

支持客户端

Claude

数量来自来源目录的标注,具体工具清单以官方文档为准。

典型使用场景

让助手直接读代码

把仓库、提交记录和 issue 交给模型检索,补全和重构时不用来回复制文件。

在对话里跑命令

触发构建、测试和脚本,执行结果直接回到上下文,省去切终端。

接进开发流程

把 PR、CI 状态和代码审查接进助手,减少在几个工具之间跳。

选择建议

值得选的地方

  • 只提供 1 个工具,职责集中,接入后不容易误操作。
  • 公开说明写得比较完整,接入前能看清能力边界。

先想清楚的地方

  • 公开资料没有可直接复制的安装命令,第一次接入要自己找入口。
  • 需要自备会话凭据,没有凭据没法直接试。
  • 第三方目录整理,版本更新和行为细节以官方仓库为准。

更适合

  • 需要在开发工具场景里让模型直接调用外部能力的人。
  • 已经在用 Claude 的用户,接入路径最短。
  • 愿意照着官方文档一步步配环境的人。

不太适合

  • 暂时拿不到会话凭据的人。
  • 希望一条命令就装好、不想看文档的人。
  • 需要厂商级 SLA 和技术支持的生产环境。

同类对比

5 个同类
MCP Server工具数传输方式安装命令收录来源最后核验
opencodesearch

MCP World · 本页

1未说明未标注1 个2026-05-17
Git 838e2ec1

MCP World

12stdio有2 个2026-05-17
Markitdown MCP 2c653a5f

MCP World

1stdio有1 个2026-05-17
Context7 MCP C671e75a

MCP World

0stdio有1 个2026-05-17
Context7 831acf40

MCP World

0stdio有1 个2026-05-17

按同分类和工具数量挑出最接近的几条,字段以各自详情页为准。

常见问题

5 条

opencodesearch 怎么安装?

公开目录没有给出可以直接复制的安装命令,需要按仓库 README里的步骤安装;装好后写进客户端的 MCP 配置再重启。

opencodesearch 怎么在 Claude Desktop、Cursor 里配置?

它是传输方式未标注,客户端配置里要写启动命令和参数,运行环境是 未标注;保存后完全退出客户端再打开,配置才会生效。

opencodesearch 收费吗?

本站只整理公开资料,不代收费用,也没有标注具体价格。是否收费取决于服务本身和背后的接口额度,正式使用前按官方说明确认。

opencodesearch 需要 API Key 吗?

公开资料标注的认证方式是会话凭据,也就是要先拿到凭据才能连上;凭据只填在自己本地的配置里,不要写进公开仓库。

opencodesearch 支持哪些客户端?

公开资料标注支持 Claude;其他客户端只要能配置 MCP Server,也能用同样的命令或地址接入。

来源信息

继续浏览同类 MCP