项目简介
Contrast MCP 服务器是一个基于 Model Context Protocol (MCP) 实现的后端应用,旨在将 Contrast Security 平台中收集到的应用程序安全数据和能力暴露给大型语言模型 (LLM) 客户端和AI Agent。通过集成这个服务器,LLM 和 Agent 可以直接查询 Contrast Assess (IAST)、Contrast Scan (SAST)、Contrast SCA 以及 Contrast Protect/ADR (RASP) 的信息,从而帮助用户更高效地理解、分析和解决软件安全漏洞。
主要功能点
该服务器提供以下核心功能:
- 获取漏洞信息: 允许查询特定应用程序的漏洞列表或获取单个漏洞的详细信息(包括修复建议、堆栈跟踪和HTTP请求详情)。
- 管理软件组件(SCA): 可以列出应用程序使用的第三方库,并查找受特定 CVE 影响的应用程序和服务器,辅助管理开源组件风险。
- 查看 SAST 扫描结果: 获取 Contrast Scan 项目的最新静态代码分析结果(以 SARIF 格式)。
- 获取 ADR/Protect 规则: 检索应用程序或服务器的运行时保护 (RASP) 规则配置和攻击事件信息,了解哪些安全规则正在生效以及攻击是否被拦截。
- 提供安全上下文: 为 LLM 提供关于不同安全工具(IAST, SAST, SCA, RASP)的角色和概念的引导信息,帮助 LLM 更好地理解和利用安全数据。
安装步骤
该服务器是一个 Java 应用,需要 Java 17 或更高版本。
- 克隆仓库: 从 GitHub 克隆 'mcp-contrast' 仓库。
- 构建项目: 使用 Maven 构建项目,生成可执行 JAR 文件。通常命令是 'mvn clean install'。这将在 'target' 目录下生成 JAR 文件。
服务器配置
MCP 服务器通过标准输入/输出 (Stdio) 或其他支持的传输协议与 MCP 客户端通信。配置服务器通常需要在 MCP 客户端的配置文件中添加条目。配置信息一般是 JSON 格式,用于告诉客户端如何启动和连接到这个 MCP 服务器。
以下是配置服务器的关键信息:
- 服务器名称: 在客户端配置中为此服务器指定一个唯一的名称,例如 'contrastmcp' 或 'contrast-mcp'。
- 启动命令 (command): 指定如何启动服务器进程。
- 如果是直接运行 JAR 包,命令通常是 'java'。
- 如果是通过 Docker 运行,命令通常是 'docker'。
- 启动参数 (args): 指定传递给启动命令的参数。
- 对于 Java JAR 包,参数通常包括 '-jar' 路径以及连接 Contrast Security API 所需的配置参数,例如 '--CONTRAST_HOST_NAME', '--CONTRAST_API_KEY', '--CONTRAST_SERVICE_KEY', '--CONTRAST_USERNAME', '--CONTRAST_ORG_ID'。这些参数需要填写您自己的 Contrast API 凭据。
- 对于 Docker 运行,参数通常包括 'run', '-e' (传递环境变量,用于API凭据), '-i' (保持标准输入打开), '--rm' (停止容器后自动移除), 镜像名称 ('contrast/mcp-contrast:latest' 或您本地构建的镜像名称), 以及传输协议参数如 '-t stdio'。
- 重要的配置参数 (作为 'args' 或通过 'env' 传递):
- 'CONTRAST_HOST_NAME': 您的 Contrast Security 平台主机名(例如 'example.contrastsecurity.com')。
- 'CONTRAST_API_KEY': 您的 Contrast API 密钥。
- 'CONTRAST_SERVICE_KEY': 您的 Contrast 服务密钥。
- 'CONTRAST_USERNAME': 您的 Contrast 用户名(通常是邮箱地址)。
- 'CONTRAST_ORG_ID': 您的 Contrast 组织 ID。
- 环境变量 (env): 可以在客户端配置中指定启动服务器进程时需要设置的环境变量,这通常是传递敏感的 API 凭据的一种方式,尤其是在使用 Docker 时。
请查阅您使用的 MCP 客户端(如 VS Code 插件或 'oterm')的具体文档,以了解如何在客户端界面或配置文件中添加和管理 MCP 服务器。务必妥善保护您的 Contrast API 凭据。
基本使用方法
成功配置并在 MCP 客户端中启动 Contrast MCP 服务器后,LLM 或 Agent 客户端将能够发现该服务器提供的工具和 Prompt。您可以在客户端的聊天界面或通过特定的 Agent 命令,利用这些工具和 Prompt 与服务器交互,查询安全信息并触发相关操作。
例如,您可以尝试向 LLM 客户端提问:
- "列出我的应用程序 'MyWebApp' 的所有漏洞。"
- "请告诉我漏洞 ID 'a1b2c3d4-e5f6-7890-1234-567890abcdef' 在应用 'AnotherApp' 中的详细信息和修复建议。"
- "查找所有受 CVE-2021-44228 影响的应用程序和服务器。"
- "Application 'MyWebApp' 中有哪些高危或严重漏洞的库正在被使用?"
- "应用程序 'ProductionApp' 的运行时保护规则是什么?"
LLM 客户端会通过 MCP 协议调用 Contrast MCP 服务器上对应的工具来获取这些信息,并将结果呈现给您。
信息
分类
开发者工具