依赖跟踪MCP服务器
     
MCP(模型上下文协议)服务器 OWASP依赖性跟踪 -使AI助手能够与您的软件组合分析平台进行交互。
✨ API全面覆盖:100%的依赖性跟踪API v4.13.6端点实现了909个通过测试和100%的代码覆盖率。
特性
🎯 核心SCA功能
- 项目管理 (28个工具):完整生命周期、层次结构、克隆、批处理操作、标签
- 成分分析 (24种工具):依赖关系、CPE/PURL/SWID、内部识别、许可
- 漏洞管理 (22个工具):CRUD操作、任务分配、受影响的项目查询
- 查找分析 (12个工具):分类决策、分析状态、评论、压制
- 信息系统安全度量 (16个工具):投资组合/项目指标、历史数据、趋势
- 政策合规 (18个工具):政策管理、条件、违规行为、执行
- SBOM运营 (8个工具):上传/导出CycloneDX/SPDX、验证、基于令牌的上传
- 搜索 (6个工具):跨项目、组件、漏洞、服务的高级搜索
📚 参考数据和元数据
- 许可证 (10个工具):支持SPDX的许可证和许可证组管理
- 标签 (9个工具):项目/政策标签、收集项目
- 警戒与报警设备 (2个工具):常见弱点枚举参考数据
- 仓库 (8个工具):存储库类型管理、元数据解析
- 服务 (8个工具):服务组件跟踪和管理
- 使烦恼 (3个工具):漏洞利用交换文档
🔧 管理和配置
- 团队 (8个工具):团队管理,API密钥生成
- 用户 (11个工具):LDAP和托管用户、团队成员
- 权限 (4个工具):细粒度权限管理
- ACL (7个工具):项目团队访问控制映射
- 通知 (17个工具):发布者、规则、警报、测试(Slack、电子邮件、webhooks等)
- 轻量级目录访问协议 (3个工具):LDAP集成和团队同步
- 开放ID连接 (6个工具):OpenID Connect组管理和映射
- 属性 (11个工具):自定义项目/组件属性、系统配置
🛠️ 系统和集成
- 版本 (1个工具):应用程序版本和构建信息
- 徽章 (3个工具):SVG徽章生成漏洞
- 计算器 (1个工具):CVSS v2/v3分数计算
- 集成 (4个工具):第三方集成管理
- 事件 (1个工具):系统事件监控
安装
pip install dependency-track-mcp或者从源代码安装:
git clone https://github.com/secprog/dependency-track-mcp.git
cd dependency-track-mcp
pip install -e .配置
安全警告⚠️ - 需要OAuth 2.1
此MCP服务器需要OAuth 2.1承载令牌身份验证 如所述 MCP授权规范.
所有请求都必须包含有效的OAuth 2.1承载令牌:
Authorization: Bearer 遵循以下安全最佳实践:
- 配置OAuth 2.1发行者 -设置
MCP_OAUTH_ISSUER您的OAuth提供商 - 永远不要提交API密钥 -基于以下内容使用环境变量或环境文件 .env.示例 (已被忽略 微笑。)
- 仅使用HTTPS -始终使用有效证书通过HTTPS连接到依赖跟踪
- 最小范围 -仅请求您的用例所需的范围
- 轮换凭据 -定期更改API密钥和令牌
- 安全客户端配置 -限制MCP客户端配置文件的文件权限
📖 看 KEYCLOAK_SETUP.md 和 .env.示例 OAuth 2.1设置和配置示例。
环境变量
设置以下环境变量:
# OAuth 2.1 Authorization (REQUIRED)
export MCP_OAUTH_ISSUER=https://auth.example.com
export MCP_OAUTH_JWKS_URL=https://auth.example.com/.well-known/jwks.json # Optional (auto-derived if omitted)
export MCP_OAUTH_AUDIENCE=dependency-track-mcp # Optional
export MCP_OAUTH_REQUIRED_SCOPES="read:projects read:vulnerabilities" # Optional
export MCP_OAUTH_RESOURCE_URI=https://your-mcp-host.example.com/mcp # Optional
# Dependency Track Backend (for server-to-API auth only)
export DEPENDENCY_TRACK_URL=https://dependency-track.example.com
export DEPENDENCY_TRACK_API_KEY=your-dtrack-api-key
# Optional
export DEPENDENCY_TRACK_TIMEOUT=30
export DEPENDENCY_TRACK_VERIFY_SSL=true
export DEPENDENCY_TRACK_MAX_RETRIES=3
# Server Settings (HTTPS by default)
export MCP_SERVER_HOST=0.0.0.0
export MCP_SERVER_PORT=9000
export MCP_SERVER_TLS_CERT="-----BEGIN CERTIFICATE-----\n...\n-----END CERTIFICATE-----"
export MCP_SERVER_TLS_KEY="-----BEGIN PRIVATE KEY-----\n...\n-----END PRIVATE KEY-----"
export MCP_SERVER_TLS_CA_CERTS="-----BEGIN CERTIFICATE-----\n...\n-----END CERTIFICATE-----" # Optional
export MCP_SERVER_TLS_KEYFILE_PASSWORD=your_password # Optional或者基于以下内容创建环境文件 .env.示例.
OAuth 2.1设置
- 配置您的OAuth提供程序 使用JWT令牌支持OpenID Connect
- 发布JWKS端点 用于令牌签名验证
- 设置令牌声明 包括
sub,iat,exp,以及scope或scopes - 使用HTTPS 适用于所有OAuth端点
- 设置适当的令牌生存期 (例如,1小时)
获取依赖关系跟踪API密钥
API密钥用于 仅服务器到API身份验证 并且不暴露于MCP客户端。
- 以管理员身份登录依赖跟踪
- 导航到管理>访问管理>团队
- 选择或创建团队
- 为团队生成新的API密钥
- 复制密钥(不会再次显示)
- 将其存储在
DEPENDENCY_TRACK_API_KEY环境变量
用法
运行服务器
# Using the installed entry point
dependency-track-mcp
# Or run directly
python -m dependency_track_mcp.main这将启动一个具有OAuth 2.1 JWT身份验证的FastAPI服务器,并在以下位置挂载MCP端点 /mcp。如果提供了TLS证书,则它提供HTTPS。仅当满足以下条件时才允许使用HTTP MCP_DEV_ALLOW_HTTP=true.
HTTP端点
/mcp-MCP协议端点(受OAuth 2.1承载令牌保护)/.well-known/oauth-protected-resource-OAuth资源元数据(RFC 8707)/health-健康检查
生产配置
所需的环境变量(或基于以下内容的环境文件 .env.示例):
# OAuth 2.1 (required)
MCP_OAUTH_ISSUER=https://keycloak.example.com/realms/mcp
MCP_OAUTH_AUDIENCE=mcp-api
# TLS certificates (required for HTTPS)
MCP_SERVER_TLS_CERT="-----BEGIN CERTIFICATE-----\n...\n-----END CERTIFICATE-----"
MCP_SERVER_TLS_KEY="-----BEGIN PRIVATE KEY-----\n...\n-----END PRIVATE KEY-----"
# Dependency Track backend
DEPENDENCY_TRACK_URL=https://dtrack.example.com
DEPENDENCY_TRACK_API_KEY=your-api-key本地开发
对于使用HTTP的本地开发(永远不要在生产中使用):
# Enable HTTP for local testing
MCP_DEV_ALLOW_HTTP=true
MCP_OAUTH_ISSUER=http://localhost:8083/realms/mcp
DEPENDENCY_TRACK_URL=http://localhost:8081看 KEYCLOAK_SETUP.md 用于设置本地Keycloak。
快速启动脚本
如果您更喜欢带有环境文件验证的简单启动器,请使用 start_services.py.
客户端配置(HTTP传输)
将MCP客户端指向HTTP端点并包含Bearer令牌:
- MCP端点: `https://:
/mcp (使用 http:// 只有当 MCP_DEV_ALLOW_HTTP=true`)
- 授权标头:
Authorization: Bearer
安全说明:
- 依赖跟踪API密钥仅存储在服务器端(不向客户端公开)
- OAuth令牌在运行时传输(不存储在配置中)
- TLS证书可以作为PEM内容提供(使用
\n对于新生儿) - 限制任何包含机密的客户端配置上的文件权限
MCP范围
服务器实现 细粒度OAuth 2.1作用域 为了实现精确的访问控制:
核心SCA运营
| 范围 | 描述 |
|---|---|
read:projects | 列出和查看项目 |
write:projects | 创建、更新和删除项目 |
read:components | 列出和查看组件 |
write:components | 创建/更新组件 |
read:vulnerabilities | 查看漏洞和发现 |
write:vulnerabilities | 创建、更新、删除漏洞 |
write:analysis | 记录分析决策(分诊) |
read:metrics | 查看安全指标 |
read:policies | 查看违反策略的行为 |
write:policies | 创建/更新策略 |
upload:bom | 上传SBOM文件 |
upload:vex | 上传VEX文档 |
search | 搜索功能 |
参考数据
| 范围 | 描述 |
|---|---|
read:licenses | 列出和查看许可证 |
write:licenses | 创建/更新许可证组 |
read:tags | 列出和查看标签 |
write:tags | 创建/更新标签 |
read:services | 列出和查看服务 |
write:services | 创建/更新服务 |
read:repositories | 列出和查看存储库 |
write:repositories | 创建/更新存储库 |
read:cwe | 查看CWE参考数据 |
管理(细粒)
| 范围 | 描述 |
|---|---|
read:teams | 列出并查看团队 |
write:teams | 创建、更新、删除团队 |
manage:api-keys | 生成、重新生成、删除API密钥 |
read:users | 列出和查看用户 |
write:users | 创建、更新、删除用户 |
manage:user-teams | 在团队中添加/删除用户 |
read:permissions | 列出权限 |
write:permissions | 授予/撤销权限 |
read:acl | 查看访问控制映射 |
write:acl | 管理访问控制映射 |
read:notifications | 列出通知发布者和规则 |
write:notification-publishers | 创建/更新/删除通知发布者 |
write:notification-rules | 创建/更新/删除通知规则 |
test:notifications | 发送测试通知 |
read:ldap | 列出LDAP组 |
write:ldap | 管理LDAP团队映射 |
read:oidc | 检查OIDC可用性,列出组 |
write:oidc | 管理OIDC组和映射 |
read:config | 列出/查看配置属性 |
write:config | 更新配置属性 |
系统和集成
| 范围 | 描述 |
|---|---|
system:version | 版本和系统信息 |
system:badges | 项目徽章 |
system:calculator | CVSS计算器 |
system:integrations | 管理集成 |
system:events | 查看系统事件 |
令牌范围声明:您的OAuth令牌应包含以下格式之一的作用域:
"scope": "read:projects read:vulnerabilities write:analysis"
"scopes": "read:projects read:vulnerabilities write:analysis"可用工具
API全面覆盖:实现并测试了依赖性跟踪API 4.13.6版中的所有160多个端点。
工具组已在中注册 src/redependy_track_mcp/tools:
核心SCA工具
- 项目 (28个工具):完整的项目生命周期、层次结构、克隆、批处理操作
- 组件 (24个工具):组件管理、依赖关系、CPE、PURL、SWID
- 漏洞 (22个工具):漏洞CRUD、任务、受影响的项目
- 研究结果 (12个工具):查找分析、分类、评论、抑制
- 指标 (16个工具):包含历史数据的投资组合和项目指标
- 政策 (18个工具):政策管理、条件、违规行为、执行
- 物料清单 (8个工具):上传/导出SBOM(CycloneDX/SPDX),基于令牌的上传
- 搜索 (6个工具):跨项目、组件、漏洞的高级搜索
参考数据工具
- 许可证 (10个工具):许可证和许可证组管理
- 标签 (9个工具):标签管理、项目/政策关联
- 警戒与报警设备 (2个工具):常见弱点枚举参考
- 仓库 (8个工具):存储库类型管理和元数据
- 服务 (8个工具):服务组件跟踪
- 使烦恼 (3个工具):漏洞利用交换文档
属性工具
- 项目属性 (4个工具):自定义项目元数据
- 组件属性 (4个工具):自定义组件元数据
- 配置属性 (3个工具):系统配置管理
管理工具
- 团队 (8个工具):团队管理和API关键操作
- 用户 (11个工具):用户管理、LDAP/管理用户、团队成员
- 权限 (4个工具):权限管理和分配
- ACL (7个工具):项目团队访问控制映射
- 通知 (17个工具):发布者、规则、警报和测试
- 轻量级目录访问协议 (3个工具):LDAP集成和团队映射
- 开放ID连接 (6个工具):OpenID Connect组管理
系统和集成工具
- 版本 (1个工具):应用程序版本和构建信息
- 徽章 (3个工具):为项目生成SVG徽章
- 计算器 (1个工具):CVSS分数计算
- 集成 (4个工具):第三方集成管理
- 事件 (1个工具):系统事件监控
质量与测试
测试覆盖率
- 909测试 -100%通过
- 100%代码覆盖率 -所有3313行代码都经过全面测试
- API覆盖率100% -所有依赖关系跟踪API v4.13.6版端点
- 单元测试 -客户端、配置、OAuth、模型、作用域、所有工具
- 集成测试 -端到端工具验证
- 基于模拟 -使用respx HTTP模拟快速执行
代码质量
- 拉夫 -所有衣襟规则均通过(E、F、I、N、W、UP)
- 类型提示 -全类型注释覆盖率
- 派丹蒂克 -已验证所有API类型的模型
- 异步优先 -所有I/O操作都使用async/await
- 错误处理 -全面的异常层次结构
安全标准
- OAuth 2.1 -使用JWKS进行完整的JWT验证
- HTTPS/TLS -默认情况下启用证书验证
- 范围验证 -细粒度权限检查
- 输入验证 -所有输入的Pydantic模型
- 日志中没有秘密 -正确屏蔽敏感数据
发展
设置
git clone https://github.com/secprog/dependency-track-mcp.git
cd dependency-track-mcp
pip install -e ".[dev]"运行测试
# Run all tests (909 tests)
pytest
# Run with coverage report (100% coverage)
pytest --cov=src/dependency_track_mcp --cov-report=html
# Run specific test categories
pytest -m unit # Unit tests only
pytest -m integration # Integration tests only
# Run specific test file
pytest tests/test_client.py
# Run with verbose output
pytest -v
# Run tests matching a pattern
pytest -k "test_oauth"代码格式化
ruff check .
ruff format .安全
此MCP服务器根据需要实现OAuth 2.1承载令牌授权 MCP规范.
关键安全功能:
- 🔐 OAuth 2.1承载令牌 -根据MCP规范要求
- ✅ JWT验证 -结构、到期、发行人和范围验证
- 🔒 HTTPS/TLS -默认情况下启用证书验证
- 🔑 安全的API密钥管理 -仅通过环境变量提供后端密钥
- 🛡️ 输入验证 -所有输入/输出的Pydantic模型
- 🚫 无令牌传递 -OAuth令牌未发送到后端
- 📊 基于范围的授权 -细粒度权限控制
- ⚡ 重试/回退 -具有重试功能的弹性HTTP客户端
OAuth 2.1要求:
- 所有请求都必须在Authorization标头中包含有效的Bearer令牌
- 令牌必须是具有所需声明的有效JWT(
sub,iat,exp,scope/scopes) - 服务器验证令牌过期、颁发者和所需范围
- MCP客户端负责从OAuth提供程序获取令牌
- 令牌签名验证使用JWKS(自动从发卡机构导出)执行
要在本地验证您的配置,请运行 verify_security.py.
许可证
MIT许可证-请参阅 许可证 了解详情。
