检查马克思mcp
Shell脚本和MCP服务器 Checkmarx One REST API。同一数据的两个接口:用自然语言(MCP)询问Claude,或运行可组合的CLI脚本以获得可重复的报告和管道。
这里有什么
| 目录 | 内容 | 语言 |
|---|---|---|
mcp-server/ | MCP服务器-允许Claude直接访问API(15个工具) | TypeScript |
utils/ | 可组合的CLI实用程序——JSON到stdout,管道 jq (15个脚本) | Bash |
docs/ | Checkmarx One REST API和CLI参考文档 | Markdown |
根(*.sh) | 独立演示脚本(身份验证流、CSV报告) | Bash |
快速开始
选项A:MCP服务器(与Claude一起使用)
cd mcp-server && npm install && npm run build添加到Claude代码设置(.claude/settings.json):
{
"mcpServers": {
"checkmarx": {
"command": "node",
"args": ["/path/to/checkmarx-mcp/mcp-server/dist/index.js"],
"env": {
"CHECKMARX_TENANT": "your-tenant",
"CHECKMARX_BASE_URI": "https://ast.checkmarx.net",
"CHECKMARX_API_KEY": "your-api-key"
}
}
}
}然后问克劳德: *“我所有项目的安全状况如何?”*
选项B:CLI脚本
cp .env.example .env # fill in your credentials
./utils/checkmarx.list-projects.sh | jq '.[].name'看 CLAUDE.md 获取完整的CLI文档。
你能用这个做什么
项目库存和状态报告
在一次通话中获取每个项目的最后一次扫描状态——无需再点击门户:
# Via CLI: all projects for an application with their last scan info
./utils/checkmarx.list-projects-last-scan.sh --application-id "$APP_ID"
# Via Claude: "Show me all projects in the OneApp application with their scan status"漏洞摘要和分布
按严重性、语言、查询类型或文件细分结果:
# Top 10 SAST vulnerability types for a scan
./utils/checkmarx.sast-aggregate.sh --scan-id "$SID" --group-by QUERY --limit 10
# Severity distribution
./utils/checkmarx.sast-aggregate.sh --scan-id "$SID" --group-by SEVERITY扫描比较(“发生了什么变化?”)
比较两次扫描,查看新的、固定的和复发的发现:
./utils/checkmarx.sast-compare.sh --scan-id "$NEW_SID" --base-scan-id "$OLD_SID" --group-by QUERY随时间变化的趋势分析
按月度、季度或年度粒度跟踪严重性计数和净变化:
# Severity trend for a project over the last 6 months
./utils/checkmarx.trend-severity.sh --project-id "$PID" --period monthly --range 6
# Net change (are we introducing faster than fixing?) — quarterly for an entire app
./utils/checkmarx.trend-new-vs-fixed.sh --application-id "$APP_ID" --period quarterly --range 4
# Filter to specific engines
./utils/checkmarx.trend-severity.sh --project-id "$PID" --period monthly --range 12 --engines sast,sca
# Via Claude: "Show me the severity trend for MyApp over the last year, quarterly"分类和合规状态
检查分流历史记录,并通过查找生命周期进行筛选:
# Only new (untriaged) findings
./utils/checkmarx.list-results.sh --scan-id "$SID" --status "NEW" --severity "HIGH,CRITICAL"
# Triage history for a specific finding
./utils/checkmarx.get-sast-predicates.sh --similarity-id "12345"输出格式
所有脚本输出 原始JSON 到stdout。不生成可视化图表或Excel文件——脚本生成结构化数据,您可以将其路由到任何需要的地方:
| 格式 | 如何 | 最适合 |
|---|---|---|
| JSON | 默认输出 | 仪表板(Grafana、Power BI)、编程功耗、Claude/MCP |
| CSV | 管道贯通 cx_format_csv | Excel/Google表格——经理可以制作透视表和图表 |
| 标记语言 | 管道贯通 cx_format_table | 粘贴到Slack、Confluence、电子邮件 |
| 自然语言 | 通过MCP工具——Claude以对话方式格式化JSON | 临时管理器请求(“将其总结为表格”,“趋势是什么?”) |
# JSON (default) — pipe to jq, files, or dashboards
./utils/checkmarx.trend-severity.sh --project-id "$PID" --period monthly --range 6 > trend.json
# CSV for Excel — open in spreadsheets, build charts there
source lib.sh
./utils/checkmarx.trend-severity.sh --project-id "$PID" --period monthly --range 6 \
| jq '[.[] | {period, critical: .total.critical, high: .total.high, medium: .total.medium}]' \
| cx_format_csv .period .critical .high .medium > severity-trend.csv
# Markdown table — paste into Slack or Confluence
./utils/checkmarx.trend-new-vs-fixed.sh --project-id "$PID" --period quarterly --range 4 \
| jq '[.[] | {period, net: .total.net_change}]' \
| cx_format_table .period .net
# Via Claude (MCP): "Show me the severity trend for MyApp, quarterly, as a table"
# Claude calls trend_severity, gets JSON, formats it however you askPower BI仪表板
生成完整的数据包并导入Power BI:
# Generate CSVs for an application
./utils/checkmarx.generate-report-data.sh --application-id "$APP_ID"
# Output: ~/Downloads/checkmarx-reports/2026-03-30/trend-severity.csv, trend-new-vs-fixed.csv, metadata.json
# (Falls back to ~/checkmarx-reports/ on headless Linux)
# Open in Power BI Desktop: Get Data > Text/CSV > select the files
# See reports/powerbi-setup.md for step-by-step dashboard configurationMCP工具返回JSON——Claude以对话方式处理格式化(“使其成为CSV”、“在表中总结”)。
MCP服务器工具(18)
项目和库存
| 工具 | 说明 |
|---|---|
list_projects | 在租户中列出/搜索项目(子字符串名称过滤器) |
get_project | 按UUID或确切名称获取项目 |
list_projects_last_scan | 每个引擎具有上次扫描状态的项目库存-单个API调用 |
扫描
| 工具 | 说明 |
|---|---|
list_scans | 使用项目/状态筛选器进行列表扫描,将最近的扫描排序在第一位 |
get_scan | 按ID(状态、引擎、分支、元数据)获取单次扫描 |
scan_summary | 扫描的严重性/状态计数,可选按查询/文件细分 |
结果与发现
| 工具 | 说明 |
|---|---|
list_results | 列出所有引擎(SAST/SCA/KICS/APISec)的统一发现。支持严重性、状态和状态(新/重复/固定)过滤器 |
list_sast_results | 具有丰富过滤器的SAST特定结果:查询名称、语言、CWE ID、源/接收文件、合规性框架、类别。返回代码路径上下文 |
SAST分析
| 工具 | 说明 |
|---|---|
sast_aggregate | 按QUERY、SEVERITY、STATUS、LANGUAGE、SOURCE_FILE或SINK_FILE分组的聚合SAST计数。用于分发报告和前N名列表 |
sast_compare | 比较两种扫描:按语言或QUERY分组的NEW、RECURRENT和FIXED计数。“什么改变了”报告 |
get_sast_predicates | 按相似性ID对发现进行分类历史记录——严重性覆盖、状态更改、注释。用于合规性报告 |
趋势与报告
| 工具 | 说明 |
|---|---|
trend_severity | 严重性按月度/季度/年度的粒度随时间而计数。支持每引擎过滤和项目/应用程序/租户范围 |
trend_new_vs_fixed | 调查结果的净变化。负面=改善,正面=回归。相同的范围和发动机选项 |
generate_report_data | 完整数据包:严重性+所有粒度和引擎的净变化。返回Power BI、Excel或任何BI工具的结构化数据 |
组织
| 工具 | 说明 |
|---|---|
list_applications | 列出应用程序分组(名称、关键性、项目ID) |
list_groups | 列出访问管理组 |
list_presets | 列出SAST查询预设(Checkmarx默认值、OWASP前10名等) |
报告
| 工具 | 说明 |
|---|---|
get_report | 生成扫描报告(PDF/JSON/CSV/SARIF),轮询完成情况,返回下载URL |
CLI脚本(19)
每个脚本将JSON输出到stdout,将日志记录到stderr,并支持 -v/--verbose.
| 脚本 | 描述 | 关键标志 |
|---|---|---|
list-projects.sh | 列出/搜索项目 | --name, --limit |
get-project.sh | 按UUID或名称 | 位置参数获取项目 |
list-projects-last-scan.sh | 包含上次扫描信息的项目清单 | --application-id, --scan-status, --sast-status, --sca-status, --kics-status, --use-main-branch |
list-scans.sh | 列表扫描 | --project-id, --statuses, --limit |
get-scan.sh | 获取单次扫描 | 位置UUID |
scan-summary.sh | 严重性/状态计数 | --scan-id (可重复), --include-queries, --include-files |
list-results.sh | 统一的调查结果 | --scan-id, --severity, --state, --status, --limit |
list-sast-results.sh | SAST的具体发现 | --scan-id, --query, --language, --cwe-id, --source-file, --sink-file, --compliance, --include-nodes |
sast-aggregate.sh | SAST按类别统计 | --scan-id, --group-by (可重复), --severity, --status, --language |
sast-compare.sh | 区分两次扫描 | --scan-id, --base-scan-id, --group-by, --severity, --status |
get-sast-predicates.sh | 分类历史 | --similarity-id, --project-ids, --scan-id |
scan-timeline.sh | 时间线:每个周期一次扫描(构建块) | --period, --range, --project-id, --application-id, --branch |
trend-severity.sh | 严重性随时间变化 | --period, --range, --project-id, --application-id, --engines |
trend-new-vs-fixed.sh | 同期净变化 | --period, --range, --project-id, --application-id, --engines |
generate-report-data.sh | Power BI就绪CSV数据包 | --project-id, --application-id, --output-dir, --engines |
list-applications.sh | 列出应用程序 | --name |
list-groups.sh | 列出组 | --search |
list-presets.sh | 列出SAST预设 | (无) |
get-report.sh | 生成+下载报告 | --scan-id, --project-id, --format, --output |
所有脚本名称都以前缀 checkmarx. (例如。, ./utils/checkmarx.list-projects.sh).
配置
CLI脚本和MCP服务器都需要Checkmarx One凭据:
| 变量 | CLI(.env) | MCP服务器 | 必需 |
|---|---|---|---|
| 租户 | TENANT | CHECKMARX_TENANT | 是的 |
| 基本URL | BASE_URI | CHECKMARX_BASE_URI | 是的 |
| API密钥 | APIKEY | CHECKMARX_API_KEY | * |
| 客户端ID | CLIENT_ID | CHECKMARX_CLIENT_ID | * |
| 客户端密码 | CLIENT_SECRET | CHECKMARX_CLIENT_SECRET | * |
\*提供API密钥 或 客户端ID+密码。
区域基础URL
| 区域 | URL |
|---|---|
| 美国 | https://ast.checkmarx.net |
| 欧盟 | https://eu.ast.checkmarx.net |
| 美国2 | https://us.ast.checkmarx.net |
| 德 | https://deu.ast.checkmarx.net |
| ANZ | https://anz.ast.checkmarx.net |
| 印度 | https://ind.ast.checkmarx.net |
| 新加坡 | https://sng.ast.checkmarx.net |
先决条件
- CLI脚本:
curl,jq,巴什 - MCP服务器: Node.js>=18
许可证
麻省理工学院
