InsightAppSec MCP服务器
模型上下文协议(MCP)服务器,为人工智能助手提供对Rapid7 InsightAppSec API的访问,用于应用程序安全扫描、漏洞管理和报告。
概述
此MCP服务器使Claude等AI助手能够与Rapid7 InsightAppSec交互,使您能够:
- 管理应用程序及其安全配置
- 启动并监控安全扫描
- 查询和分类漏洞
- 生成安全报告
- 自动安排扫描时间
- 搜索所有InsightAppSec资源
- 配置身份验证 (OAuth、基于表单、宏、流量文件)
- 管理令牌替换 (CSRF、会话令牌、动态参数)
先决条件
- Node.js 18.0.0或更高版本
- 具有API访问权限的Rapid7 InsightAppSec帐户
- 来自的API密钥 Rapid7洞察平台
安装
来源
# Clone the repository
git clone https://github.com/yourusername/insightappsec-mcp.git
cd insightappsec-mcp
# Install dependencies
npm install
# Build the project
npm run build配置
创建 .env 基于所提供模板的文件:
cp .env.example .env编辑 .env 使用您的凭据文件:
INSIGHTAPPSEC_API_KEY=your-api-key-here
INSIGHTAPPSEC_REGION=us支持的地区:
| 地区 | 代码 |
|---|---|
| 美国 | us |
| 欧洲 | eu |
| 亚太地区 | ap |
| 加拿大 | ca |
| 澳大利亚 | au |
使用Claude Desktop
将以下内容添加到您的Claude Desktop配置文件中:
窗户: %APPDATA%\Claude\claude_desktop_config.json macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
{
"mcpServers": {
"insightappsec": {
"command": "node",
"args": ["C:/path/to/insightappsec-mcp/build/index.js"],
"env": {
"INSIGHTAPPSEC_API_KEY": "your-api-key-here",
"INSIGHTAPPSEC_REGION": "us"
}
}
}
}重新启动Claude Desktop以加载MCP服务器。
可用工具
应用程序管理
| 工具 | 说明 |
|---|---|
list_apps | 列出所有具有分页和排序功能的应用程序 |
get_app | 获取特定应用程序的详细信息 |
create_app | 创建新应用程序 |
update_app | 更新应用程序名称或描述 |
delete_app | 删除应用程序和所有相关数据 |
manage_app_tags | 在应用程序中添加或删除标签 |
扫描操作
| 工具 | 说明 |
|---|---|
list_scans | 具有分页和筛选功能的列表扫描 |
get_scan | 获取特定扫描的详细信息 |
submit_scan | 根据扫描配置提交新的扫描 |
delete_scan | 删除失败的扫描 |
control_scan | 暂停、恢复、停止或取消正在运行的扫描 |
get_scan_execution_details | 获取扫描的实时执行指标 |
get_scan_engine_events | 获取扫描的引擎事件日志 |
扫描配置
| 工具 | 说明 |
|---|---|
list_scan_configs | 列出所有扫描配置 |
get_scan_config | 获取特定扫描配置的详细信息 |
create_scan_config | 创建新的扫描配置 |
update_scan_config | 更新扫描配置设置 |
delete_scan_config | 删除扫描配置 |
漏洞管理
| 工具 | 说明 |
|---|---|
list_vulnerabilities | 使用分页和排序列出漏洞 |
get_vulnerability | 获取有关漏洞的详细信息 |
update_vulnerability | 更新漏洞状态或严重性 |
get_vulnerability_discoveries | 获取漏洞的发现历史记录 |
list_vulnerability_comments | 列出对漏洞的所有评论 |
add_vulnerability_comment | 为漏洞添加注释 |
调度和自动化
| 工具 | 说明 |
|---|---|
list_schedules | 列出所有扫描计划 |
get_schedule | 获取特定日程的详细信息 |
create_schedule | 创建定期扫描计划 |
update_schedule | 更新计划频率或时间 |
delete_schedule | 删除扫描计划 |
遮光窗
| 工具 | 说明 |
|---|---|
list_blackouts | 列出所有遮光窗 |
get_blackout | 获取特定遮光窗的详细信息 |
create_blackout | 创建遮光窗口以防止扫描 |
update_blackout | 更新遮光窗设置 |
delete_blackout | 删除遮光窗口 |
报告
| 工具 | 说明 |
|---|---|
list_reports | 列出所有生成的报告 |
generate_report | 生成新的漏洞报告 |
get_report_status | 检查报告生成的状态 |
搜索
| 工具 | 说明 |
|---|---|
search | 使用DSL查询语法在所有InsightAppSec资源中进行通用搜索 |
基础设施
| 工具 | 说明 |
|---|---|
list_engines | 列出所有已注册的扫描引擎 |
get_engine | 获取特定扫描引擎的详细信息 |
list_engine_groups | 列出所有发动机组 |
get_engine_group | 获取特定发动机组的详细信息 |
文件管理
| 工具 | 说明 |
|---|---|
list_files | 列出应用程序的所有文件(宏、流量、selenium等) |
get_file | 按ID获取文件元数据 |
create_file | 创建文件元数据条目 |
upload_file_content | 上传二进制文件内容(base64编码) |
delete_file | 删除文件 |
download_file | 以base64格式下载文件内容 |
支持的文件类型:
MACRO-记录的身份验证序列(.rec)RECORDED_TRAFFIC-HTTP流量捕获(.har、.trec、.saz)SELENIUM-浏览器自动化脚本(.html、.side)CERTIFICATE-SSL证书(.pfx)SWAGGER-API规范(.json、.yaml)WSDL-Web服务定义(.wsdl)GRAPHQL-GraphQL模式(.graphqls)
身份验证和令牌管理
| 工具 | 说明 |
|---|---|
get_scan_config_options | 获取完整的扫描配置选项,包括身份验证设置 |
configure_form_auth | 配置基于表单的身份验证(用户名/密码) |
configure_oauth | 配置OAuth 2.0身份验证 |
configure_token_replacement | 配置全局令牌提取/注入规则 |
configure_session_handling | 配置会话检测、Cookie、重新登录触发器 |
configure_csrf_handling | 配置自动CSRF令牌检测和注入 |
configure_macro_auth | 将宏文件链接到扫描配置以进行身份验证 |
configure_traffic_auth | 将流量文件链接到扫描配置以进行身份验证 |
对话示例
列出应用程序
“在InsightAppSec中显示我的所有应用程序”
助理将使用 list_apps 检索和显示您的应用程序。
启动安全扫描
“使用‘Production Web App’扫描配置启动扫描”
助理将:
- 使用
list_scan_configs查找配置 - 使用
submit_scan开始扫描 - 报告扫描ID和状态
检查漏洞状态
“显示所有高严重性漏洞”
助理将使用 search 使用DSL查询:
type: VULNERABILITY
query: vulnerability.severity='HIGH'监视正在运行的扫描
“扫描abc-123的状态如何?”
助理将使用 get_scan 和 get_scan_execution_details 显示:
- 当前扫描状态
- 进度百分比
- 请求已完成
- 到目前为止发现的漏洞
分类漏洞
“将漏洞xyz-789标记为误报,并添加注释解释原因”
助理将:
- 使用
update_vulnerability将状态设置为FALSE_POSITIVE - 使用
add_vulnerability_comment添加说明
安排定期扫描
“每周一凌晨2点为生产应用程序设置每周扫描”
助理将使用 create_schedule 与:
- 频率:
WEEKLY - 开始时间:下周一凌晨2:00 UTC
配置OAuth身份验证
“为API扫描设置OAuth客户端凭据身份验证”
助理将使用 configure_oauth 与:
- 资助类型:
CLIENT_CREDENTIALS - 令牌URL、客户端ID、客户端密钥
为CSRF设置令牌替换
“配置扫描以自动处理CSRF令牌”
助理将使用 configure_csrf_handling 与:
auto_detect: true- 令牌名称的可选正则表达式模式
上传身份验证宏
“上传我录制的登录宏进行扫描”
助理将:
- 使用
create_file创建元数据(类型:MACRO) - 使用
upload_file_content具有base64编码的宏内容 - 使用
configure_macro_auth将其链接到扫描配置
搜索查询语法
这 search 该工具支持强大的DSL来查询资源:
运算符
| 操作员 | 描述 | 示例 |
|---|---|---|
= | 等于 | vulnerability.severity='HIGH' |
!= | 不等于 | scan.status!='COMPLETE' |
>, =, 7.0 | ||
CONTAINS | 子字符串匹配 | app.name CONTAINS 'prod' |
IN | 列表中的值 | vulnerability.status IN ['UNREVIEWED', 'VERIFIED'] |
AND, OR | 逻辑运算符 | severity='HIGH' AND status='UNREVIEWED' |
可搜索资源类型
VULNERABILITYSCANSCAN_CONFIGAPPSCHEDULEBLACKOUTMODULEATTACK_TEMPLATEENGINEENGINE_GROUP
查询示例
# Find critical vulnerabilities in production apps
type: VULNERABILITY
query: vulnerability.severity='HIGH' AND app.name CONTAINS 'prod'
# Find running scans
type: SCAN
query: scan.status='RUNNING'
# Find scan configs without recent scans
type: SCAN_CONFIG
query: scan_config.last_scan_date "- 配置扫描以使用它:
configure_macro_auth:
scan_config_id: "uuid"
macro_file_id: "uuid"
replay_speed: 1.0漏洞状态
| 状态 | 描述 |
|---|---|
UNREVIEWED | 新漏洞,尚未分类 |
FALSE_POSITIVE | 确定为假阳性 |
VERIFIED | 确认为真正的漏洞 |
IGNORED | 已确认但已接受的风险 |
REMEDIATED | 已在应用程序中修复 |
DUPLICATE | 重复另一项发现 |
严重级别
| 严重性 | 描述 |
|---|---|
SAFE | 无安全影响 |
INFORMATIONAL | 信息披露 |
LOW | 轻微安全问题 |
MEDIUM | 中等安全风险 |
HIGH | 严重安全漏洞 |
发展
项目结构
insightappsec-mcp/
├── src/
│ ├── index.ts # Entry point
│ ├── config.ts # Configuration management
│ ├── client/
│ │ └── api-client.ts # HTTP client for InsightAppSec API
│ ├── schemas/
│ │ └── common.ts # Shared Zod schemas
│ ├── tools/
│ │ ├── apps.ts # Application management tools
│ │ ├── scans.ts # Scan operation tools
│ │ ├── scan-configs.ts # Scan configuration tools
│ │ ├── vulnerabilities.ts # Vulnerability management tools
│ │ ├── schedules.ts # Schedule management tools
│ │ ├── blackouts.ts # Blackout window tools
│ │ ├── engines.ts # Engine management tools
│ │ ├── reports.ts # Reporting tools
│ │ ├── search.ts # Search tool
│ │ ├── files.ts # File management tools
│ │ └── auth.ts # Authentication configuration tools
│ └── utils/
│ └── response-formatter.ts # MCP response formatting
├── build/ # Compiled JavaScript output
├── package.json
├── tsconfig.json
└── .env.example脚本
# Build the project
npm run build
# Run in development mode
npm run dev
# Type checking
npm run typecheck
# Run tests
npm test添加新工具
- 在中创建或修改工具文件
src/tools/ - 使用
server.tool()注册工具的方法:
server.tool(
"tool_name",
"Tool description",
{
param1: z.string().describe("Parameter description"),
param2: z.number().optional().describe("Optional parameter"),
},
async ({ param1, param2 }) => {
const result = await client.get("/endpoint");
if (result.error) {
return formatErrorResponse(result.error);
}
return formatResponse(result.data);
}
);- 导入并注册
src/index.ts
错误处理
服务器正常处理常见的API错误:
| 状态代码 | 含义 |
|---|---|
| 400 | 错误请求-检查参数 |
| 401 | 身份验证失败-检查API密钥 |
| 403 | 禁止访问-权限不足 |
| 404 | 找不到资源 |
| 409 | 资源冲突 |
| 422 | 验证错误-检查请求正文 |
| 429 | 速率受限-等待并重试 |
| 5xx | 服务器错误-稍后重试 |
错误响应包括:
- 状态码
- 错误信息
- 相关ID(用于Rapid7支持)
- 详细的错误信息(如果可用)
api参考
此MCP服务器包装 Rapid7 InsightAppSec API v1.
有关API的详细文档,请参阅:
许可证
麻省理工学院
贡献
欢迎投稿!请随时提交问题和拉取请求。
支持
- 有关InsightAppSec API问题,请联系 Rapid7支持
- 对于MCP服务器问题,打开GitHub问题
