项目简介
Sourcegraph MCP 服务器是一个基于 Model Context Protocol (MCP) 构建的后端应用程序,旨在将 Sourcegraph 的强大功能(如代码搜索、代码智能、安全漏洞扫描等)以标准化的方式暴露给兼容MCP的LLM客户端(如AI助手)。它允许用户通过自然语言或结构化请求与代码库交互,无需离开AI助手界面。
主要功能点
该服务器提供以下主要能力:
- 代码搜索: 使用Sourcegraph查询语法在海量代码库中搜索文件内容。
- 提交搜索: 根据作者、消息、日期等条件搜索Git提交记录。
- 差异搜索: 查找特定代码更改或Pull Request。
- GitHub仓库搜索: 针对特定的GitHub仓库执行搜索。
- 代码智能:
- 查找定义: 跳转到函数、类、变量等符号的定义位置。
- 查找引用: 查找符号在代码库中的所有使用位置。
- 查找实现: 查找接口或抽象方法的具体实现。
- 悬停文档: 获取符号的文档和类型信息。
- 文档符号: 列出文件中所有符号(函数、类等)。
- 仓库内容:
- 获取文件内容: 获取指定文件的原始代码内容。
- 获取文件Blame: 查看文件各行代码的提交历史和作者信息。
- 安全分析:
- CVE查询: 查找影响仓库或软件包的已知CVE漏洞。
- 软件包漏洞查询: 检查特定软件包的漏洞信息。
- Exploit搜索: 查找已知漏洞的利用代码。
- 厂商安全公告: 查找特定厂商和产品的安全公告。
- 实用工具: 提供连接测试、可用工具列表等辅助功能。
安装步骤
在您的系统上安装 Node.js 和 npm (或 yarn)。
-
通过 'npx' 直接运行 (最简单): 打开终端,运行以下命令:
npx sourcegraph-mcp-server(首次运行会下载依赖)
-
全局安装后运行: 打开终端,运行安装命令:
npm install -g sourcegraph-mcp-server安装完成后,运行服务器:
sourcegraph-mcp-server
服务器配置
在使用服务器之前,您需要配置连接到 Sourcegraph API 所需的凭据。
- 在服务器运行目录或用户主目录下创建一个名为 '.env' 的文件。
- 在 '.env' 文件中添加您的 Sourcegraph 实例URL和API Token:
请确保替换为您的实际 Sourcegraph 实例地址和 API Token。SOURCEGRAPH_URL=https://your-sourcegraph-instance.com SOURCEGRAPH_TOKEN=your_api_token # 可选:指定MCP服务器的HTTP监听端口,默认为3002 # MCP_PORT=3002
LLM客户端配置(如 Claude Desktop App)
MCP客户端需要知道如何启动和连接到MCP服务器。根据您希望使用的传输协议 (Stdio 或 HTTP/SSE),配置信息有所不同。以下是常见的配置示例(JSON格式,您可能需要根据您的MCP客户端界面进行填写):
传输协议: Stdio
服务器通过标准输入/输出与客户端通信。
{ "name": "Sourcegraph", "description": "通过 Sourcegraph API 提供代码搜索、代码智能和安全分析。", "transport": "stdio", "command": "npx", "args": ["-y", "sourcegraph-mcp-server"] // 说明: // - "name": 在客户端界面显示的服务器名称 // - "description": 服务器的简要描述 // - "transport": 使用的传输协议,Stdio 表示通过标准输入/输出通信 // - "command": 用于启动服务器进程的命令 // - "args": 传递给启动命令的参数数组。npx -y sourcegraph-mcp-server 会运行安装的或下载的服务器可执行文件。 }
传输协议: HTTP / SSE
服务器通过HTTP监听端口,客户端通过SSE连接获取消息,通过POST请求发送命令。
{ "name": "Sourcegraph (HTTP)", "description": "通过 Sourcegraph API 提供代码搜索、代码智能和安全分析 (HTTP/SSE)。", "transport": "sse", "url": "http://localhost:3002/" // 说明: // - "name": 在客户端界面显示的服务器名称 // - "description": 服务器的简要描述 // - "transport": 使用的传输协议,sse 表示通过Server-Sent Events通信 // - "url": 服务器监听的HTTP地址和路径。默认情况下,HTTP服务器运行在端口 3002。 }
请注意:HTTP/SSE 传输通常要求服务器在运行 MCP 客户端之前已经启动。STDIO 传输通常由 MCP 客户端自动启动服务器进程。
基本使用方法
成功连接MCP服务器后,您可以在LLM客户端中通过调用服务器提供的工具来使用其功能。
- 查找可用工具: 使用客户端的工具列表功能,或尝试调用服务器的 'debug' 工具(如果客户端支持)。
- 调用工具: 根据您的LLM客户端界面,通常通过输入特定前缀(如 '/' 或 '/tool')后跟工具名称来调用。例如,在某些客户端中,您可以输入 '/tool search-code' 并按提示填写参数来执行代码搜索。
- 提供参数: 根据工具的描述提供必要的参数(例如,对于 'search-code' 工具,需要提供 'query' 参数)。
参考“主要功能点”中的工具列表,根据您的需求选择合适的工具并按照其参数要求调用。
故障排除
- 确保已正确设置 '.env' 文件中的 'SOURCEGRAPH_URL' 和 'SOURCEGRAPH_TOKEN'。
- 检查 Sourcegraph 实例是否可访问。
- 对于 HTTP/SSE 传输,确保服务器已启动并在监听配置的端口。
- 尝试使用 'test-connection' 工具来诊断与 Sourcegraph 的连接问题。
- 使用 'debug' 工具查看服务器注册的工具列表。
信息
分类
开发者工具