sandfly MCP 服务器(Sandfly 安全 Fabric 后端)
使用说明(Markdown 格式要点):
-
项目简介
- 这是一个基于 Model Context Protocol 的 MCP 服务器实现。它将 Sandfly 安全平台的 REST API 暴露为 39 个可调用的 MCP 工具,并提供标准 MCP 传输方式(STDIO、HTTP/StreamableHTTP)。支持通过网关进行路由注册与心跳保活,便于在 Claude 等客户端环境中进行上下文感知与外部功能调用。
-
主要功能点
- 提供 39 个 Sandfly 相关工具,涵盖系统信息、主机管理、凭证、扫描、结果、检测脚本、计划任务、跳板主机、通知、报告、审计等领域。
- 实现 MCP 服务器核心能力:列出工具、调用工具、返回结构化 MCP 响应。
- 支持两种传输模式:
- Standalone HTTP 模式(通过 MCP_HTTP_PORT 启用,使用 StreamableHTTP 传输)
- Standalone stdio 模式(无 MCP_HTTP_PORT 时,使用标准输入输出传输与 MCP 客户端通信)
- 网关注册与心跳(可选):
- GATEWAY_URL 存在时,向网关注册并定期发送 Keepalive。
- 内置 aiana_query 支持:
- 通过 aiana_query 请求,优先使用 Sandfly 实时 API 获取上下文信息,其次利用内置的知识库库(Library)读取文档,提供上下文与置信度。
- Library(知识库)支持基于 Git 仓库的文档读取与部分 GitHub 原文读取,作为查询的辅助上下文来源。
-
安装步骤
- 安装环境:Node.js(项目已提供 TypeScript 代码及构建产物)
- 获取代码并安装依赖
- 配置环境变量(请参阅下方“服务器配置”部分的参数说明)
- 启动方式:
- HTTP 模式(网关/独立 HTTP 块)
- 设置 MCP_HTTP_PORT,例如 8200
- 设置 SANDFLY_HOST、SANDFLY_USERNAME、SANDFLY_PASSWORD
- (可选)设置 GATEWAY_URL 以启用网关注册
- 运行命令:node bin/cli.js
- stdio 模式
- 仅设置 SANDFLY_HOST、SANDFLY_USERNAME、SANDFLY_PASSWORD
- 运行命令:node bin/cli.js
- HTTP 模式(网关/独立 HTTP 块)
- 参考端点
- GET /health 或 /healthz:健康检查
- GET /tools:列出全部工具(名称与描述)
- POST /mcp/tools/call:调用某个工具,或处理 aiana_query
- POST /mcp:MCP StreamableHTTP 传输端点(若使用 HTTP 模式)
-
服务器配置(MCP 客户端所需.json 配置示例) 说明:以下配置用于 MCP 客户端(如 Claude 等)连接该 MCP 服务器。包括服务器名称、启动命令、参数及所需环境变量示例。请按实际运行环境替换占位信息。 { "server_name": "sandfly", "command": "node", "args": ["bin/cli.js"], "env": { "SANDFLY_HOST": "<Sandfly Server URL,如 https://sandfly.example.org>", "SANDFLY_USERNAME": "<用户名>", "SANDFLY_PASSWORD": "<密码>", "SANDFLY_VERIFY_SSL": "false", // 如使用自签名证书可设为 false,否则可省略 "MCP_HTTP_PORT": 8200 // Standalone HTTP 模式开启端口;若使用 STDIO 模式则可不设置 // 其他可选变量(如网关、Ollama 相关)可在需要时添加: // "GATEWAY_URL": "http://gateway:8080", // "POD_IP": "0.0.0.0", // "LIBRARY_DIR": "/path/to/library" }, "notes": "若启用网关注册,请确保 GATEWAY_URL 设置并允许网关访问。Standalone HTTP 模式需要 MCP_HTTP_PORT,才会通过 HTTP 传输;-STDIO 模式下走标准输入输出传输。" }
-
基本使用方法
- 启动后,若开启网关注册,服务器会在启动后尝试向网关注册并定期保持心跳;若未配置网关,则仅作为独立 MCP 服务器运行。
- 客户端交互遵循 MCP 标准:通过 ListTools 请求获取工具列表,通过 CallTool 请求执行具体工具,必要时通过 aiana_query 请求获取上下文信息。
- 如需查询 Sandfly 实时数据与文档,系统将优先使用 Sandfly 实时接口,其次查询本地知识库以获得“如何做/为何如此”等上下文。
-
运行与维护提示
- 确保 Sandfly 服务可用且 SANDFLY_HOST 配置正确,及 SANDFLY_USERNAME/SANDFLY_PASSWORD 有效。
- 若 Sandfly 使用自签证书,请设置 SANDFLY_VERIFY_SSL=false。
- 如果通过网关路由,请确保网关可访问到本 MCP 服务器的端口,并正确配置 GATEWAY_URL。