MCP 集成
了解 SIREN 提供的 MCP 集成功能
SIREN Server 内置 模型上下文协议(MCP)服务。支持 MCP 的 AI 客户端可以通过它列出在线 SIREN 客户端、在指定客户端执行排查命令,或通过 SOAR 获取告警详情。Agentic 应急响应 也依赖这组工具。
启用与访问
MCP 服务由配置文件中的 mcp.enabled 控制,默认启用。它和 Web 控制台 共用 webui.listen / webui.port,默认监听 0.0.0.0:8080,并通过 /mcp 暴露。
mcp.enabled 与 webui.enabled 相互独立。关闭 WebUI 后,只要 mcp.enabled 仍为 true,服务端仍会在共享 HTTP 端口上提供 /mcp;关闭 MCP 后,WebUI 可以继续独立运行。
`/mcp` 端点不鉴权
/mcp 不使用 WebUI 的 Session 鉴权。WebUI 账号只保护浏览器页面和 API,不能保护 MCP 客户端。任何能访问共享 HTTP 端口的人,都可能通过 run 工具在受害主机上执行命令。请把 webui.listen 绑定到可信网络,如 127.0.0.1 或内网,或在反向代理、VPN、ACL 之后再开放访问。
从 v1.x 升级
v2.0.0 起,MCP 不再占用独立端口,mcpPort 配置项和 --mcp-port 参数已移除。MCP 客户端仍访问 /mcp 路径,但端口应改为 webui.port。
在 MCP 客户端中添加 SIREN Server 的 /mcp 地址:
{
"siren": {
"type": "http",
"url": "http://<SIREN Server IP>:8080/mcp"
}
}可用工具
| 工具 | 参数 | 描述 |
|---|---|---|
ls | 无 | 列出在线 SIREN 客户端,包含 ID、操作系统、连接地址、备注和已安装插件 |
run | client_id, command | 在指定 SIREN 客户端上执行命令并返回结果。执行前会检查命令黑名单,超时时间跟随 recon.commandTimeout,输出过长时会被截断 |
get_alarm_detail | uid, event_id | 通过 SOAR 获取指定安全告警详情,需要先配置 SOAR 凭证 |
WebUI Project 作用域
外部 MCP 客户端直接访问 /mcp 时使用全局视图,ls 会列出所有在线 SIREN 客户端。WebUI AIR 在 Project 视图下会自动注入带 Project 作用域的 MCP 地址,ls 只返回当前 Project 的客户端,run 也会拒绝操作其他 Project 的客户端。
慢命令超时
如果需要让 MCP / AIR 执行更慢的排查命令,请在服务端和客户端配置中保持 recon.commandTimeout 一致或至少让服务端等待时间不短于客户端执行时间。
命令黑名单
run 工具在下发命令前会检查服务端配置中的 mcp.cmdBlacklist。命中黑名单时,命令不会发给客户端执行,AI 客户端会收到明确的错误信息。
默认黑名单主要阻断破坏性变更,保留常见只读排查命令,例如 cat、grep、journalctl、systemctl status、iptables -L。默认拦截以下类别:
- 删除文件、清空文件、格式化或写入块设备
- 终止进程、关机、重启或切换运行级别
- 停止、禁用、重启或重载系统服务
- 清空防火墙规则
- 修改账号、用户组、密码、文件属主或关键权限
- 清除计划任务或 Shell 历史
为了减少误报,普通引号中的说明文本不会直接触发黑名单,比如 echo "rm -rf /tmp/x" 不会被拒绝。通过 sh -c、bash -c 等方式包装执行时,SIREN 仍会检查实际命令,因此 bash -c 'rm -rf /tmp/x' 会被拦截。
自定义
黑名单规则使用 Go 正则表达式语法。遇到误报时,建议只收窄命中的那条规则,不要直接清空整组黑名单;修改 server_config.yaml 后需要重启 SIREN Server。