代码搜索与提取服务

一个基于Go的模型上下文协议(MCP)服务器,用于通过ElasticSearch和AST-grep进行代码搜索和提取,支持代码块提取和高级代码查询。

  • by EdmondFrank
  • Go
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 EdmondFrank/mcp-probe-go

使用说明

mcp探头启动

基于Go的模型上下文协议(MCP)服务器,用于使用ElasticSearch和AST grep搜索和提取代码,支持代码块提取和高级代码查询。

特征

  • 搜索代码 在您的存储库中使用ElasticSearch查询。
  • 查询代码 使用ast-grep结构模式匹配。
  • 提取代码块 根据行号或符号名称从文件中提取。
  • 支持过滤、上下文行、测试代码包含和输出格式。
  • 超时保护 --每次探测调用都受到2分钟全局超时的限制;进程在到期时被杀死和收获。

入门指南

先决条件

构建

cd cli
go build -o probe-mcp-server main.go

跑

./probe-mcp-server

服务器将启动并监听stdio请求。

用法

服务器注册了以下工具:

  • search_code:使用ElasticSearch查询搜索代码。
  • query_code:使用ast-grep模式搜索代码。
  • extract_code:按行或符号提取代码块。

每个工具都公开了一组参数,用于灵活的代码搜索和提取。有关每个工具选项的详细信息,请参阅代码。

超时

通过MCP工具进行的每次探测CLI调用都受到全局2分钟超时的限制。当超时到期时,探测进程将收到 SIGTERM (优雅关机)。如果它在5秒内没有退出,它将被强行杀死 SIGKILL孩子的过程总是收获颇丰——没有僵尸被留下。

设置 值 描述
DefaultMCPTimeout 2 * time.Minute 应用于每次探测调用
MCP_PROBE_TIMEOUT env var 覆盖超时(例如。 30s, 5m; 0 禁用)
# Use default 2-minute timeout
./probe-mcp-server

# Override to 30 seconds
MCP_PROBE_TIMEOUT=30s ./probe-mcp-server

# Disable timeout entirely
MCP_PROBE_TIMEOUT=0 ./probe-mcp-server

超时错误会被清楚地报告,这样调用者就可以区分资源耗尽和普通故障。

发展

  • 主服务器逻辑在 main.go 和 cli/main.go.
  • 工具处理程序在 search_code.go, query_code.go,以及 extract_code.go.
  • 使用 mcp走 服务器框架。

许可证

MIT许可证。看 许可证 了解详情。