项目简介

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)。

  1. 通过 'npx' 直接运行 (最简单): 打开终端,运行以下命令:

    npx sourcegraph-mcp-server

    (首次运行会下载依赖)

  2. 全局安装后运行: 打开终端,运行安装命令:

    npm install -g sourcegraph-mcp-server

    安装完成后,运行服务器:

    sourcegraph-mcp-server

服务器配置

在使用服务器之前,您需要配置连接到 Sourcegraph API 所需的凭据。

  1. 在服务器运行目录或用户主目录下创建一个名为 '.env' 的文件。
  2. 在 '.env' 文件中添加您的 Sourcegraph 实例URL和API Token:
    SOURCEGRAPH_URL=https://your-sourcegraph-instance.com
    SOURCEGRAPH_TOKEN=your_api_token
    # 可选:指定MCP服务器的HTTP监听端口,默认为3002
    # MCP_PORT=3002 
    请确保替换为您的实际 Sourcegraph 实例地址和 API Token。

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' 工具查看服务器注册的工具列表。

信息

分类

开发者工具