代码搜索与管理服务器

Sourcegraph MCP Server 是一个全面的模型上下文协议服务器,为AI代理提供访问所有Sourcegraph功能,包括代码搜索、仓库管理、文件浏览和代码智能等。

  • by Tylder
  • TypeScript
  • 本地部署
  • 更新于
在 GitHub 查看 Tylder/sourcegraph-mcp

使用说明

源图MCP服务器

全面 模型上下文协议 (MCP)服务器,为AI代理提供访问 所有Sourcegraph功能 包括代码搜索、存储库管理、文件浏览、代码智能等。

特性

  • 🔍 高级代码搜索 -使用过滤器(repo:、lang:、file:等)搜索所有代码
  • 📚 库管理 -列出、查询和浏览存储库
  • 📁 文件操作 -浏览目录树,读取文件,查看git责备
  • 🧠 代码智能 -查找参考文献,转到定义,悬停信息(当LSIF/SCP可用时)
  • 🔄 批量更改 -创建和管理大规模代码更改(计划中)
  • 🔔 代码监控 -为代码模式设置警报(计划)
  • 📓 笔记本和见解 -带有实时代码示例的文档(计划中)
  • ☁️ 云和自托管 -适用于Sourcegraph.com和您的私有实例

安装

npm install -g sourcegraph-mcp

或与 npx:

npx sourcegraph-mcp

快速开始

1.获取Sourcegraph访问令牌

  • Sourcegraph.com: https://sourcegraph.com/user/settings/tokens
  • 自托管: https://your-instance/.../settings/tokens

2.配置您的AI代理

添加到您的MCP客户端配置中(例如Amp、Claude Desktop):

{
  "mcpServers": {
    "sourcegraph": {
      "command": "npx",
      "args": ["-y", "sourcegraph-mcp"],
      "env": {
        "SRC_ENDPOINT": "https://sourcegraph.com",
        "SRC_ACCESS_TOKEN": "sgp_YOUR_TOKEN_HERE"
      }
    }
  }
}

对于自托管Sourcegraph:

{
  "SRC_ENDPOINT": "http://localhost:7080",
  "SRC_ACCESS_TOKEN": "sgp_local_YOUR_TOKEN_HERE"
}

3.在您的AI代理中使用

示例查询:

  • “在我的仓库中搜索身份验证函数”
  • “列出我有权访问的所有存储库”
  • “显示repo/src/的目录结构”
  • “查找对User类的所有引用”

可用工具

第一阶段(现在可用)

工具 说明
connection_test 测试连接并返回版本/用户信息
user_info 返回当前Sourcegraph用户的用户名、电子邮件和组织
search_code 使用过滤器进行高级代码搜索
search_symbols 搜索符号(函数、类)
search_commits 搜索git提交消息和差异
repo_list 列出可访问的存储库
repo_info 获取详细的存储库信息
repo_branches 列出存储库分支
file_tree 浏览目录结构
file_get 获取文件内容
file_blame 获取文件的git责备

未来阶段

看 规格.md 完整的路线图,包括代码智能、批处理更改等(共29个工具)。

配置

环境变量

变量 必填 默认 描述
SRC_ENDPOINT 没有 https://sourcegraph.com 源代码图实例URL
SRC_ACCESS_TOKEN 是 - 源图访问令牌
TIMEOUT_MS 没有 30000 API超时(以毫秒为单位)
LOG_LEVEL 没有 info 日志记录级别(错误、警告、信息、调试)

例子

搜索代码

// AI agent can call:
search_code({
  query: "repo:myorg/myrepo lang:typescript function authenticate",
  limit: 10
})

源代码图查询语法:

  • repo:pattern -按存储库筛选
  • lang:typescript -按语言筛选
  • file:regex -按文件路径筛选
  • case:yes -区分大小写的搜索
  • 布尔运算符 AND, OR, NOT
  • 正则表达式: /pattern/

列出存储库

repo_list({
  query: "myorg",
  limit: 20
})

浏览文件

file_tree({
  repo: "github.com/myorg/myrepo",
  path: "src/",
  rev: "main"
})

发展

先决条件

  • Node.js 22+
  • npm或pnpm
  • 源图访问令牌

设置

git clone https://github.com/Tylder/sourcegraph-mcp.git
cd sourcegraph-mcp
npm install

开发工作流程

# Run in development mode
npm run dev

# Run tests
npm test

# Run tests with coverage
npm run coverage

# Lint and format
npm run lint
npm run format

# Type check
npm run typecheck

# Build
npm run build

分阶段文件工作流

我们通过以下方式对分阶段的TypeScript文件强制执行格式化和linting 皮棉上演.

  • 哈士奇跑 npm run lint-staged 作为预提交钩子的一部分。
  • 全部上演 *.ts/*.tsx 文件将使用ESLint自动处理( --fix)和Prettier。
  • 如果文件被钩子修改,请重新暂存该文件(git add <file>)在重试提交之前。

测试

我们保持 100%测试覆盖率。参见 代理商.md 用于测试原理和工作流程。

# Run all tests
npm test

# Run tests with coverage
npm run coverage

# Run integration tests (requires SRC_ACCESS_TOKEN)
npm run test:integration

集成测试

集成测试验证MCP服务器是否与真实的Sourcegraph实例兼容。它们要求:

  1. 访问令牌:设置 SRC_ACCESS_TOKEN 在你的 .env 文件或环境

    • 从以下位置获取一个:https://sourcegraph.com/user/settings/tokens(适用于Sourcegraph.com)
    • 或者您的自托管实例: https://your-instance/.../settings/tokens
  2. 环境设置:

    # Create .env file in project root
    echo "SRC_ACCESS_TOKEN=your_token_here" > .env
    echo "SRC_ENDPOINT=https://sourcegraph.com" >> .env
    
  3. 运行集成测试:

    npm run test:integration
    

如果 SRC_ACCESS_TOKEN 如果未设置,集成测试将自动跳过。

建筑

  • 语言:带有ESM模块的TypeScript
  • 协议:模型上下文协议(MCP)
  • API:源代码图GraphQL API
  • 运输:stdio(HTTP/SSE计划用于第6阶段)
  • 测试:Vitest的覆盖率目标为100%

看 规格.md 了解详细的架构和工具规格。

贡献

我们欢迎捐款!请看 代理商.md 用于:

  • 开发工作流程
  • 代码质量标准
  • 测试要求
  • Git挂钩和CI/CD

路线图

  • ✅ 第一阶段:搜索、存储库、文件(当前)
  • 🚧 第2阶段:代码智能(参考、定义)
  • 📋 第三期:批量更改
  • 📋 阶段4:代码监控
  • 📋 阶段5:笔记本和见解
  • 📋 第6阶段:HTTP/SSE传输

看 规格.md 完整的路线图。

许可证

麻省理工学院

鸣谢

内置:


问题? 打开问题或检查 Sourcegraph 文档.