DeepSource MCP 服务器
与 DeepSource 集成的模型上下文协议 (MCP) 服务器为 AI 助手提供对代码质量指标、问题和分析结果的访问权限。
概述
DeepSource MCP 服务器使 AI 助手能够通过模型上下文协议 (MCP) 与 DeepSource 的代码质量分析功能进行交互。这种集成使 AI 助手能够:
检索代码指标和分析结果
访问和过滤问题
检查质量状态
分析项目质量随时间的变化
Related MCP server: Codebase MCP
特征
DeepSource API 集成:通过 GraphQL API 连接到 DeepSource
MCP 协议支持:实现 AI 助手集成的模型上下文协议
质量指标和阈值:使用阈值检索和管理代码质量指标
安全合规性报告:访问 OWASP Top 10、SANS Top 25 和 MISRA-C 合规性报告
依赖项漏洞:访问有关依赖项的安全漏洞信息
TypeScript/Node.js :使用 TypeScript 构建,以实现类型安全和现代 JavaScript 功能
跨平台:适用于 Linux、macOS 和 Windows
强大的错误处理:针对网络、身份验证和解析问题的全面错误处理
与 Claude Desktop 一起使用
编辑
claude_desktop_config.json:打开 Claude 桌面
前往
Settings->Developer->Edit Config将以下配置之一添加到
mcpServers部分
重新启动 Claude Desktop 以应用更改
示例查询
连接后,您的 AI 助手可以使用 DeepSource 数据进行如下查询:
What issues are in the JavaScript files of my project?这将使用带有过滤器的project_issues工具:
{
"projectKey": "your-project-key",
"path": "src/",
"analyzerIn": ["javascript"],
"first": 10
}要过滤分析运行:
Show me the most recent Python analysis runs这将使用带有过滤器的project_runs工具:
{
"projectKey": "your-project-key",
"analyzerIn": ["python"],
"first": 5
}对于代码质量指标:
What's my code coverage percentage? Is it meeting our thresholds?这将使用quality_metrics工具:
{
"projectKey": "your-project-key",
"shortcodeIn": ["LCV", "BCV", "CCV"]
}对于安全合规性报告:
Are we compliant with OWASP Top 10 security standards?这将使用compliance_report工具:
{
"projectKey": "your-project-key",
"reportType": "OWASP_TOP_10"
}设置阈值:
Update our line coverage threshold to 80%这将使用update_metric_threshold工具:
{
"projectKey": "your-project-key",
"repositoryId": "repo-id",
"metricShortcode": "LCV",
"metricKey": "AGGREGATE",
"thresholdValue": 80
}环境变量
服务器支持以下环境变量:
DEEPSOURCE_API_KEY(必需):用于身份验证的 DeepSource API 密钥LOG_FILE(可选):日志写入文件的路径。如果未设置,则不会写入任何日志LOG_LEVEL(可选):写入的最低日志级别(DEBUG、INFO、WARN、ERROR)。默认为 DEBUG
带有日志记录的示例配置:
{
"mcpServers": {
"deepsource": {
"command": "npx",
"args": [
"-y",
"deepsource-mcp-server@1.1.0"
],
"env": {
"DEEPSOURCE_API_KEY": "your-deepsource-api-key",
"LOG_FILE": "/tmp/deepsource-mcp.log",
"LOG_LEVEL": "DEBUG"
}
}
}
}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",
"LOG_FILE": "/tmp/deepsource-mcp.log"
}
}
}
}NPX
{
"mcpServers": {
"deepsource": {
"command": "npx",
"args": [
"-y",
"deepsource-mcp-server@1.1.0"
],
"env": {
"DEEPSOURCE_API_KEY": "your-deepsource-api-key"
}
}
}
}可用工具
DeepSource MCP 服务器提供以下工具:
projects:列出所有可用的 DeepSource 项目参数:
无必需参数
project_issues:通过过滤从 DeepSource 项目中获取问题参数:
projectKey(必需)- DeepSource 项目的唯一标识符分页参数:
offset(可选)- 分页时要跳过的项目数first(可选)- 返回的项目数(默认为 10)after(可选)- 用于向前分页的光标before(可选)- 向后分页的光标last(可选) - 在“before”光标之前返回的项目数(默认值:10)
过滤参数:
path(可选)- 通过特定文件路径过滤问题analyzerIn(可选) - 通过特定分析器过滤问题 (例如,[“python”、“javascript”])tags(可选)- 按标签过滤问题
project_runs:列出 DeepSource 项目的分析运行,并进行过滤参数:
projectKey(必需)- DeepSource 项目的唯一标识符分页参数:
offset(可选)- 分页时要跳过的项目数first(可选)- 返回的项目数(默认为 10)after(可选)- 用于向前分页的光标before(可选)- 向后分页的光标last(可选) - 在“before”光标之前返回的项目数(默认值:10)
过滤参数:
analyzerIn(可选) - 通过特定的分析器过滤运行 (例如,[“python”、“javascript”])
run:通过 runUid 或 commitOid 获取特定分析运行参数:
runIdentifier(必需)- 用于标识运行的 runUid(UUID)或 commitOid(提交哈希)
recent_run_issues:获取特定分支上最近运行的分析中的问题,并支持分页参数:
projectKey(必需)- DeepSource 项目的唯一标识符branchName(必需)- 获取最新运行的分支名称分页参数:
first(可选)- 返回的问题数(默认为 10)after(可选)- 用于向前分页的光标last(可选) - 光标前返回的问题数 (默认值:10)before(可选)- 向后分页的光标
返回:
有关分支上最近一次运行的信息
项目中的当前问题(注意:问题是存储库级别的,而不是运行特定的)
分页信息,包括光标和页面状态
关于运行和分支的元数据
dependency_vulnerabilities:从 DeepSource 项目获取依赖漏洞参数:
projectKey(必需)- DeepSource 项目的唯一标识符分页参数:
offset(可选)- 分页时要跳过的项目数first(可选)- 返回的项目数(默认为 10)after(可选)- 用于向前分页的光标before(可选)- 向后分页的光标last(可选) - 在“before”光标之前返回的项目数(默认值:10)
quality_metrics:通过过滤从 DeepSource 项目获取质量指标参数:
projectKey(必需)- DeepSource 项目的唯一标识符shortcodeIn(可选) - 通过特定的短代码过滤指标 (例如,[“LCV”, “BCV”])
返回如下指标:
线路覆盖率 (LCV)
分支机构覆盖率 (BCV)
文档覆盖率 (DCV)
重复代码百分比 (DDP)
每个指标包括当前值、阈值和通过/失败状态
update_metric_threshold:更新特定质量指标的阈值参数:
projectKey(必需)- DeepSource 项目的唯一标识符repositoryId(必需)- GraphQL 存储库 IDmetricShortcode(必需)- 要更新的指标的短代码metricKey(必需)- 指标的语言或上下文键thresholdValue(可选) - 新的阈值,或为 null 以删除阈值
示例:设置 80% 线路覆盖率阈值:metricShortcode="LCV", metricKey="AGGREGATE", thresholdValue=80
update_metric_setting:更新质量指标的设置参数:
projectKey(必需)- DeepSource 项目的唯一标识符repositoryId(必需)- GraphQL 存储库 IDmetricShortcode(必需)- 要更新的指标的短代码isReported(必需)- 是否应报告该指标isThresholdEnforced(必需)- 是否应强制执行阈值(可能会检查失败)
compliance_report:从 DeepSource 项目获取安全合规性报告
参数:
projectKey(必需)- DeepSource 项目的唯一标识符reportType(必需) - 要获取的合规性报告类型( OWASP Top 10 、 SANS Top 25或MISRA-C )
返回全面的安全合规性数据,包括:
按类别和严重程度统计的安全问题
合规状态(通过/未通过)
显示随时间变化的趋势数据
改善安全态势的分析和建议
发展
克隆存储库:
git clone https://github.com/sapientpants/deepsource-mcp-server.git
cd deepsource-mcp-server安装依赖项:
pnpm install构建项目:
pnpm run build配置 Claude 桌面
{
"mcpServers": {
"deepsource": {
"command": "node",
"args": [
"/path/to/deepsource-mcp-server/dist/index.js"
],
"env": {
"DEEPSOURCE_API_KEY": "your-deepsource-api-key"
}
}
}
}先决条件
Node.js 20 或更高版本
pnpm 10.7.0 或更高版本
Docker(用于容器构建)
脚本
pnpm run build构建 TypeScript 代码pnpm run start启动服务器pnpm run dev以开发模式启动服务器pnpm run test- 运行测试pnpm run lint- 运行 ESLintpnpm run format- 使用 Prettier 格式化代码
故障排除
启用调试日志记录
如果您遇到问题,请启用调试日志记录以查看详细信息:
将
LOG_FILE环境变量设置为应写入日志的文件路径将
LOG_LEVEL设置为DEBUG(这是默认值)检查日志文件以获取详细的错误信息
示例配置:
{
"mcpServers": {
"deepsource": {
"command": "npx",
"args": ["-y", "deepsource-mcp-server@1.1.0"],
"env": {
"DEEPSOURCE_API_KEY": "your-api-key",
"LOG_FILE": "/tmp/deepsource-mcp.log",
"LOG_LEVEL": "DEBUG"
}
}
}
}然后检查日志文件:
tail -f /tmp/deepsource-mcp.log常见问题
身份验证错误:确保您的
DEEPSOURCE_API_KEY正确且具有必要的权限没有出现日志:验证
LOG_FILE路径是否可写以及父目录是否存在工具错误:检查日志文件以获取详细的错误消息和堆栈跟踪
执照
麻省理工学院