返回市场
深度来源MCP服务器

深度来源MCP服务器

作者:sapientpants6 星标更新:2025-10-28

项目介绍

DeepSource MCP Server

主要 DeepSource DeepSource DeepSource npm 版本 npm 下载量 许可证

一个与DeepSource集成的Model Context Protocol (MCP)服务器,为AI助手提供访问代码质量指标、问题和分析结果的能力。

目录

概述

DeepSource MCP Server使像Claude这样的AI助手能够通过Model Context Protocol与DeepSource的代码质量分析功能进行交互。这种集成允许AI助手:

  • 获取代码指标和分析结果
  • 访问并按分析器、路径或标签过滤问题
  • 检查质量状态并设置阈值
  • 分析项目质量随时间的变化
  • 访问安全合规报告(OWASP、SANS、MISRA-C)
  • 监控依赖项漏洞
  • 管理质量门和阈值

快速开始

1. 获取您的DeepSource API密钥

  1. 登录到您的DeepSource账户
  2. 导航至设置API访问
  3. 点击生成新令牌
  4. 复制您的API密钥并妥善保管

2. 在Claude桌面中安装

  1. 打开Claude桌面
  2. 转到设置开发者编辑配置
  3. 将以下配置添加到mcpServers部分:
{
  "mcpServers": {
    "deepsource": {
      "command": "npx",
      "args": ["-y", "deepsource-mcp-server@latest"],
      "env": {
        "DEEPSOURCE_API_KEY": "your-deepsource-api-key"
      }
    }
  }
}
  1. 重启Claude桌面

3. 测试连接

询问Claude:“我有哪些可以访问的DeepSource项目?”

如果配置正确,Claude将列出您可访问的项目。

安装

NPX(推荐)

使用DeepSource MCP Server最简单的方法:

{
  "mcpServers": {
    "deepsource": {
      "command": "npx",
      "args": ["-y", "deepsource-mcp-server@latest"],
      "env": {
        "DEEPSOURCE_API_KEY": "your-deepsource-api-key",
        "LOG_FILE": "/tmp/deepsource-mcp.log",
        "LOG_LEVEL": "INFO",
        "RETRY_MAX_ATTEMPTS": "3",
        "RETRY_BASE_DELAY_MS": "1000",
        "RETRY_MAX_DELAY_MS": "30000",
        "RETRY_BUDGET_PER_MINUTE": "10",
        "CIRCUIT_BREAKER_THRESHOLD": "5",
        "CIRCUIT_BREAKER_TIMEOUT_MS": "30000"
      }
    }
  }
}

Docker

适用于容器化环境:

{
  "mcpServers": {
    "deepsource": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "-e",
        "DEEPSOURCE_API_KEY",
        "-e",
        "LOG_FILE=/tmp/deepsource-mcp.log",
        "-v",
        "/tmp:/tmp",
        "sapientpants/deepsource-mcp-server"
      ],
      "env": {
        "DEEPSOURCE_API_KEY": "your-deepsource-api-key"
      }
    }
  }
}

本地开发

用于开发或定制:

{
  "mcpServers": {
    "deepsource": {
      "command": "node",
      "args": ["/path/to/deepsource-mcp-server/dist/index.js"],
      "env": {
        "DEEPSOURCE_API_KEY": "your-deepsource-api-key",
        "LOG_FILE": "/tmp/deepsource-mcp.log",
        "LOG_LEVEL": "DEBUG"
      }
    }
  }
}

配置

环境变量

变量必需默认值描述
DEEPSOURCE_API_KEY-您的DeepSource API密钥用于身份验证
LOG_FILE-日志文件路径。如果没有设置,则不写入日志
LOG_LEVELDEBUG最低日志级别:DEBUGINFOWARNERROR
RETRY_MAX_ATTEMPTS3失败请求的最大重试次数
RETRY_BASE_DELAY_MS1000指数退避的基本延迟(毫秒)
RETRY_MAX_DELAY_MS30000重试之间的最大延迟(毫秒)
RETRY_BUDGET_PER_MINUTE10每分钟所有操作允许的最大重试次数
CIRCUIT_BREAKER_THRESHOLD5断路器打开前的失败次数
CIRCUIT_BREAKER_TIMEOUT_MS30000断路器尝试恢复的时间(毫秒)

性能考虑

  • 分页:使用适当的页面大小(10-50项)来平衡响应时间和数据完整性
  • 自动重试:服务器实现了智能重试逻辑,包括:
    • 使用抖动的指数退避以防止雷同效应
    • 断路器模式以防止级联故障
    • 重试预算以限制资源消耗
    • 尊重来自API的Retry-After头
  • 速率限制:被速率限制的请求(429)会自动重试,并带有适当的延迟
  • 容错性:优雅地处理瞬时故障(网络、502、503、504)
  • 缓存:结果不会被缓存。考虑对频繁访问的数据实现缓存

可用工具

1. projects

列出所有可用的DeepSource项目。

参数:无

示例响应

[
  {
    "key": "https://api-key@app.deepsource.com",
    "name": "my-python-project"
  }
]

2. project_issues

从DeepSource项目获取问题,支持过滤和分页。

参数类型必需描述
projectKey字符串DeepSource项目的唯一标识符
first数字返回的项数(向前分页)
after字符串前向分页的游标
last数字返回的项数(向后分页)
before字符串向后分页的游标
path字符串按文件路径过滤问题
analyzerIn字符串数组按分析器过滤(例如,["python", "javascript"])
tags字符串数组按问题标签过滤

示例响应

{
  "issues": [
    {
      "id": "T2NjdXJyZW5jZTpnZHlqdnlxZ2E=",
      "title": "避免使用硬编码凭证",
      "shortcode": "PY-D100",
      "category": "SECURITY",
      "severity": "CRITICAL",
      "file_path": "src/config.py",
      "line_number": 42
    }
  ],
  "totalCount": 15,
  "pageInfo": {
    "hasNextPage": true,
    "endCursor": "YXJyYXljb25uZWN0aW9uOjQ="
  }
}

3. runs

列出项目中的分析运行,支持过滤。

参数类型必需描述
projectKey字符串DeepSource项目的唯一标识符
first数字返回的项数(向前分页)
after字符串前向分页的游标
last数字返回的项数(向后分页)
before字符串向后分页的游标
analyzerIn字符串数组按分析器过滤

4. run

获取特定分析运行的详细信息。

参数类型必需描述
projectKey字符串DeepSource项目的唯一标识符
runIdentifier字符串运行ID(UUID)或提交ID(提交哈希)
isCommitOid布尔值是否运行ID是提交哈希(默认:false)

5. recent_run_issues

获取分支上最近一次分析运行的问题。

参数类型必需描述
projectKey字符串DeepSource项目的唯一标识符
branchName字符串分支名称
first数字返回的项数
after字符串前向分页的游标

6. dependency_vulnerabilities

获取项目依赖项的安全漏洞。

参数类型必需描述
projectKey字符串DeepSource项目的唯一标识符
first数字返回的项数
after字符串前向分页的游标

示例响应

{
  "vulnerabilities": [
    {
      "id": "VUL-001",
      "package": "requests",
      "version": "2.25.0",
      "severity": "HIGH",
      "cve": "CVE-2021-12345",
      "description": "远程代码执行漏洞"
    }
  ],
  "totalCount": 3
}

7. quality_metrics

获取代码质量指标,支持可选过滤。

参数类型必需描述
projectKey字符串DeepSource项目的唯一标识符
shortcodeIn字符串数组按指标代码过滤(见下文)

可用指标

  • LCV - 行覆盖率
  • BCV - 分支覆盖率
  • DCV - 文档覆盖率
  • DDP - 重复代码百分比
  • SCV - 语句覆盖率
  • TCV - 总覆盖率
  • CMP - 代码成熟度

8. update_metric_threshold

更新质量指标的阈值。

参数类型必需描述
projectKey字符串DeepSource项目的唯一标识符
repositoryId字符串GraphQL存储库ID
metricShortcode字符串指标代码(例如,“LCV”)
metricKey字符串语言或上下文键
thresholdValue数字或null新的阈值,或null以移除

9. update_metric_setting

更新指标报告和强制执行设置。

参数类型必需描述
projectKey字符串DeepSource项目的唯一标识符
repositoryId字符串GraphQL存储库ID
metricShortcode字符串指标代码
isReported布尔值是否报告此指标
isThresholdEnforced布尔值是否强制执行阈值

10. compliance_report

获取安全合规报告。

参数类型必需描述
projectKey字符串DeepSource项目的唯一标识符
reportType字符串报告类型(见下文)

可用报告类型

  • OWASP_TOP_10 - 网络应用安全漏洞
  • SANS_TOP_25 - 最危险的软件错误
  • MISRA_C - 安全关键C代码指南
  • CODE_COVERAGE - 代码覆盖率报告
  • CODE_HEALTH_TREND - 质量趋势随时间变化
  • ISSUE_DISTRIBUTION - 问题分类
  • ISSUES_PREVENTED - 预防的问题数量
  • ISSUES_AUTOFIXED - 自动修复的问题数量

使用示例

监控代码质量趋势

跟踪项目质量指标随时间的变化:

“显示我的主分支的代码覆盖率趋势”

这结合了多个工具来:

  1. 获取主分支上的最近运行
  2. 检索每个运行的覆盖率指标
  3. 显示趋势

设置质量门

为CI/CD实施质量门:

“设置质量门:80%行覆盖率,0个关键安全问题”

这将:

  1. 更新行覆盖率阈值为80%
  2. 配置阈值的强制执行
  3. 检查当前的关键安全问题

调查安全漏洞

全面的安全分析:

“分析我项目中的所有安全漏洞,包括依赖项”

这将执行:

  1. 依赖项漏洞扫描
  2. 代码安全问题分析
  3. OWASP Top 10合规检查
  4. 提供优先的补救建议

代码审查辅助

获取AI驱动的代码审查见解:

“最近提交到feature/new-api的最关键问题是什么?”

这将:

  1. 查找该分支上的最近运行
  2. 过滤关键和高严重性问题
  3. 按文件和问题类型分组
  4. 提供建议的修复方法

团队生产力指标

跟踪团队代码质量指标:

“显示我们所有Python项目的代码质量指标”

这将聚合:

  1. 每个项目覆盖指标
  2. 按严重性统计的问题数量
  3. 上个月的趋势
  4. 团队表现洞察

架构

DeepSource MCP Server使用现代TypeScript模式以提高可维护性和类型安全性。

关键组件

┌─────────────────┐     ┌──────────────────┐     ┌─────────────────┐
│  Claude/AI      │────▶│   MCP Server