Token导航 LogoToken导航TokenDH.com
Coderag Go logo
开发工具stdio官方级别未说明来源级核验

Coderag Go

MCP Server

@modelcontextprotocol/inspector

CodeRAG-Go是一个混合代码库搜索工具,支持BM25关键词搜索和可选的向量搜索,提供MCP服务器集成,适用于Cursor、Claude等开发工具。

工具数

2

提示词数

0

GitHub Stars

0

资源数

0
代码搜索混合搜索GoClaude开发工具集成Claude DesktopClaudeCursor

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

matperez

提供方

matperez

最后核验

2026/5/17 20:21

运行时

Node.js

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

命令预览

npx @modelcontextprotocol/inspector -- ./bin/coderag-mcp --root <codebase path>

详细介绍

CodeRAG Go

混合代码库搜索(BM25关键字搜索+可选矢量搜索)作为一个Go二进制文件,带有MCP服务器,可与Cursor、Claude等集成。

受启发于 SylphxAI/代码 (使用AST分块、混合TF-IDF+向量、MCP就绪的闪电般快速的语义代码搜索)。

安装和使用

要求: 转到1.25+

默认版本包括用于可选矢量搜索的LanceDB。在运行时设置相关环境变量时启用嵌入;没有它们,只使用BM25搜索。

# Clone and build (with LanceDB for hybrid search)
git clone https://github.com/matperez/coderag-go.git && cd coderag-go
# One-time: download native LanceDB libraries (required for build with embeddings)
make download-lancedb
# Build with embeddings (Makefile sets CGO_LDFLAGS automatically)
make build
# Or build without embeddings (BM25 only, no CGO)
make build-no-embeddings

嵌入(可选): 若要启用混合BM25+矢量搜索,请为兼容OpenAI的API设置环境变量。启动时,二进制文件将创建一个嵌入提供程序和向量存储;然后,索引将把块嵌入写入LanceDB codebase_search 将使用混合排名。

  • OPENAI_API_KEY -API密钥(可以是本地服务器的任何值,例如。 ollama)
  • OPENAI_BASE_URL -API基本URL(默认值: https://api.openai.com/v1)
  • EMBEDDING_MODELOPENAI_EMBEDDING_MODEL --模型名称(默认值: text-embedding-3-small)

当地Ollama的例子:

export OPENAI_BASE_URL="http://localhost:11434/v1"
export OPENAI_API_KEY="ollama"
export EMBEDDING_MODEL="nomic-embed-text-v2-moe"
# Optional: set context size (e.g. 8192); also truncates long inputs so they fit (or set EMBEDDING_MAX_INPUT_CHARS explicitly)
export OLLAMA_NUM_CTX=8192
./coderag-mcp --root /path/to/project

如果无法访问嵌入API或无法打开矢量存储,则应用程序会记录警告并以BM25-only模式运行。

旗帜:

  • --root --项目根目录用于索引和搜索(默认值: .)
  • --index-only --运行索引并退出(不要启动MCP)
  • --max-size --最大文件大小(字节)(0=无限制)
  • --log-level --日志级别: debug, info, warn, error (默认值:从 CODERAG_LOGinfo)
  • --pprof --在地址处启用pprof HTTP服务器,例如。 :6060 (或设置 CODERAG_PPROF);用于索引期间的CPU/内存分析

登录中: 输出转到stderr(文本格式)。这 CODERAG_LOG 环境变量设置不使用标志时的级别(debug, info, warn, error).已记录:启动(root,data_dir);索引进度(每10个文件和完成时);处理完所有文件后——IDF计算、存储块和BM25向量,以及(在启用嵌入时)生成和写入嵌入;然后 indexing done;工具调用(代码库搜索、代码库索引状态);搜索错误;跳过的文件。

分析: 与...一起跑 --pprof :6060 (或 CODERAG_PPROF=:6060).然后打开 http://localhost:6060/debug/pprof/ 在浏览器中或运行 go tool pprof -http=:8080 http://localhost:6060/debug/pprof/profile?seconds=30 捕获30秒的CPU配置文件,或 go tool pprof http://localhost:6060/debug/pprof/heap 获取堆快照。使用此功能查看索引过程中CPU或内存的使用情况。

示例:

# Index a repository
./coderag-mcp --root /path/to/project --index-only

# Run MCP server (expects JSON-RPC on stdin/stdout)
./coderag-mcp --root /path/to/project

索引数据存储在 ~/.coderag-go/projects// (绝对值的哈希值 --root 路径)。

控制台CLI(coderag-CLI)

coderag-cli 是一个查询现有索引(无索引)的控制台客户端。可用于在不运行MCP服务器的情况下进行测试和脚本编写。

构建于 make build (输出 bin/coderag-clibin/coderag-mcp)或 make build-cli 仅适用于CLI。索引必须已经存在(使用创建它 coderag-mcp --root --index-only).

用途:

# Show index stats
coderag-cli --root /path/to/project status
coderag-cli --root /path/to/project --json status

# Search (same semantics as MCP codebase_search)
coderag-cli --root /path/to/project search "your query" [--limit N] [--include-content]
coderag-cli --root /path/to/project --json search "query" [--limit N] [--ext .go,.js] [--path-filter dir] [--exclude test]

全球旗帜: --root (项目根目录,默认 .), --json (机器可读输出 statussearch).

支持的文件格式

只有具有已知扩展名的文件才会被索引。对于每种具有 树保姆 语法,组块使用AST(函数、类、类型等);否则,内容将按字符拆分。这 .txt 扩展仅使用基于字符的分块(没有语法)进行索引。

使用AST分块的语言: Go,JavaScript/TypeScript(.js, .mjs, .cjs, .ts, .tsx)、CSS、Markdown、YAML、TOML、协议缓冲区(.proto)、JSON、Python(.py),鲁比(.rb),C/C++(.c, .h, .cpp, .cc, .cxx, .hpp, .hh, .hxxC.cs),巴什(.sh),HTML(.html, .htmJava.java),生锈(.rs),斯威夫特(.swift),PHP(.php),卢(.lua),科特林(.kt),Scala(.scala, .sc),Groovy(.groovy, .grvy, .gy, .gvy),灵丹妙药(.ex, .exs),榆树(.elm),OCaml(.ml, .mli),HCL(.hcl),提示(.cue)、Dockerfile、Svelte(.svelte),SQL(.sql).

索引过程中会忽略不支持的扩展名。

MCP配置

光标

在MCP设置中添加服务器,例如 .cursor/mcp.json 或在光标设置中:

{
  "mcpServers": {
    "coderag-go": {
      "command": "/path/to/coderag-mcp",
      "args": ["--root", "/path/to/your/project"]
    }
  }
}

首次使用前运行索引:

/path/to/coderag-mcp --root /path/to/your/project --index-only

Claude Desktop/其他客户

相同的想法:设置 command (路径到 coderag-mcp)以及 args: ["--root", " "].运输是标准的。

在没有游标/代理的情况下测试MCP: 使用 MCP检查员 调用工具(例如。 codebase_search, codebase_index_status)通过stdio:

npx @modelcontextprotocol/inspector -- ./bin/coderag-mcp --root 

MCP工具

  • 代码库搜索 --搜索代码库(BM25或启用嵌入时的BM25+向量): query, limit, file_extensions, path_filter, exclude_paths, include_content.响应为带有路径和可选代码段的markdown。最适合确切的术语、方法/类型/API名称和原型/合同名称;使用 path_filterfile_extensions 缩小到一种服务或语言。
  • 代码库_索引_状态 --索引状态: is_indexing, progress,文件和块计数;当索引时, current_file 包括在内。

文档

构建和测试

make build   # build both bin/coderag-mcp and bin/coderag-cli (with LanceDB)
make build-cli   # build only bin/coderag-cli
make build-no-embeddings   # build both without LanceDB (BM25 only)
make test    # go test ./...
make lint    # golangci-lint run

基准:go test -bench=. -benchmem ./internal/tokenizer/ ./internal/search/ ./internal/indexer/ 衡量标记化、搜索和索引性能;用于捕捉回归并证明优化的合理性。

要在没有LanceDB的情况下构建(仅BM25,没有矢量存储),请运行 make build-no-embeddings。当矢量存储不可用时,生成的二进制文件将仅使用BM25搜索。

许可证

MIT。看 许可证.

目录标签

目录标签

代码搜索混合搜索GoClaude开发工具集成本地部署MCP服务器AST分块

支持客户端

Claude DesktopClaudeCursor

接入字段

传输方式(transport,传输协议)

stdio

鉴权方式(authType,认证方式)

none

运行时(runtime,运行环境)

Node.js

来源包(packageName,安装包名)

@modelcontextprotocol/inspector

工具数量(toolCount,工具数)

2

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

stdionone部署方式未说明

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

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

来源信息

继续浏览同类 MCP