一个与DeepSource集成的Model Context Protocol (MCP)服务器,为AI助手提供访问代码质量指标、问题和分析结果的能力。
DeepSource MCP Server使像Claude这样的AI助手能够通过Model Context Protocol与DeepSource的代码质量分析功能进行交互。这种集成允许AI助手:
mcpServers部分:{
"mcpServers": {
"deepsource": {
"command": "npx",
"args": ["-y", "deepsource-mcp-server@latest"],
"env": {
"DEEPSOURCE_API_KEY": "your-deepsource-api-key"
}
}
}
}
询问Claude:“我有哪些可以访问的DeepSource项目?”
如果配置正确,Claude将列出您可访问的项目。
使用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"
}
}
}
}
适用于容器化环境:
{
"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_LEVEL | 否 | DEBUG | 最低日志级别:DEBUG,INFO,WARN,ERROR |
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 | 断路器尝试恢复的时间(毫秒) |
列出所有可用的DeepSource项目。
参数:无
示例响应:
[
{
"key": "https://api-key@app.deepsource.com",
"name": "my-python-project"
}
]
从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="
}
}
列出项目中的分析运行,支持过滤。
| 参数 | 类型 | 必需 | 描述 |
|---|---|---|---|
projectKey | 字符串 | 是 | DeepSource项目的唯一标识符 |
first | 数字 | 否 | 返回的项数(向前分页) |
after | 字符串 | 否 | 前向分页的游标 |
last | 数字 | 否 | 返回的项数(向后分页) |
before | 字符串 | 否 | 向后分页的游标 |
analyzerIn | 字符串数组 | 否 | 按分析器过滤 |
获取特定分析运行的详细信息。
| 参数 | 类型 | 必需 | 描述 |
|---|---|---|---|
projectKey | 字符串 | 是 | DeepSource项目的唯一标识符 |
runIdentifier | 字符串 | 是 | 运行ID(UUID)或提交ID(提交哈希) |
isCommitOid | 布尔值 | 否 | 是否运行ID是提交哈希(默认:false) |
获取分支上最近一次分析运行的问题。
| 参数 | 类型 | 必需 | 描述 |
|---|---|---|---|
projectKey | 字符串 | 是 | DeepSource项目的唯一标识符 |
branchName | 字符串 | 是 | 分支名称 |
first | 数字 | 否 | 返回的项数 |
after | 字符串 | 否 | 前向分页的游标 |
获取项目依赖项的安全漏洞。
| 参数 | 类型 | 必需 | 描述 |
|---|---|---|---|
projectKey | 字符串 | 是 | DeepSource项目的唯一标识符 |
first | 数字 | 否 | 返回的项数 |
after | 字符串 | 否 | 前向分页的游标 |
示例响应:
{
"vulnerabilities": [
{
"id": "VUL-001",
"package": "requests",
"version": "2.25.0",
"severity": "HIGH",
"cve": "CVE-2021-12345",
"description": "远程代码执行漏洞"
}
],
"totalCount": 3
}
获取代码质量指标,支持可选过滤。
| 参数 | 类型 | 必需 | 描述 |
|---|---|---|---|
projectKey | 字符串 | 是 | DeepSource项目的唯一标识符 |
shortcodeIn | 字符串数组 | 否 | 按指标代码过滤(见下文) |
可用指标:
LCV - 行覆盖率BCV - 分支覆盖率DCV - 文档覆盖率DDP - 重复代码百分比SCV - 语句覆盖率TCV - 总覆盖率CMP - 代码成熟度更新质量指标的阈值。
| 参数 | 类型 | 必需 | 描述 |
|---|---|---|---|
projectKey | 字符串 | 是 | DeepSource项目的唯一标识符 |
repositoryId | 字符串 | 是 | GraphQL存储库ID |
metricShortcode | 字符串 | 是 | 指标代码(例如,“LCV”) |
metricKey | 字符串 | 是 | 语言或上下文键 |
thresholdValue | 数字或null | 否 | 新的阈值,或null以移除 |
更新指标报告和强制执行设置。
| 参数 | 类型 | 必需 | 描述 |
|---|---|---|---|
projectKey | 字符串 | 是 | DeepSource项目的唯一标识符 |
repositoryId | 字符串 | 是 | GraphQL存储库ID |
metricShortcode | 字符串 | 是 | 指标代码 |
isReported | 布尔值 | 是 | 是否报告此指标 |
isThresholdEnforced | 布尔值 | 是 | 是否强制执行阈值 |
获取安全合规报告。
| 参数 | 类型 | 必需 | 描述 |
|---|---|---|---|
projectKey | 字符串 | 是 | DeepSource项目的唯一标识符 |
reportType | 字符串 | 是 | 报告类型(见下文) |
可用报告类型:
OWASP_TOP_10 - 网络应用安全漏洞SANS_TOP_25 - 最危险的软件错误MISRA_C - 安全关键C代码指南CODE_COVERAGE - 代码覆盖率报告CODE_HEALTH_TREND - 质量趋势随时间变化ISSUE_DISTRIBUTION - 问题分类ISSUES_PREVENTED - 预防的问题数量ISSUES_AUTOFIXED - 自动修复的问题数量跟踪项目质量指标随时间的变化:
“显示我的主分支的代码覆盖率趋势”
这结合了多个工具来:
为CI/CD实施质量门:
“设置质量门:80%行覆盖率,0个关键安全问题”
这将:
全面的安全分析:
“分析我项目中的所有安全漏洞,包括依赖项”
这将执行:
获取AI驱动的代码审查见解:
“最近提交到feature/new-api的最关键问题是什么?”
这将:
跟踪团队代码质量指标:
“显示我们所有Python项目的代码质量指标”
这将聚合:
DeepSource MCP Server使用现代TypeScript模式以提高可维护性和类型安全性。
┌─────────────────┐ ┌──────────────────┐ ┌─────────────────┐
│ Claude/AI │────▶│ MCP Server