jelmervdm/sophos-firewall-mcp

GitHub: jelmervdm/sophos-firewall-mcp

为 Sophos Firewall 提供异步 MCP 服务器,使 AI 助手能够通过自然语言管理和审计防火墙的安全策略、网络对象、NAT 规则及 VPN 配置。

Stars: 0 | Forks: 0

# Sophos Firewall MCP Server (`sophos-firewall-mcp`) [![Docker 镜像](https://img.shields.io/badge/docker-ghcr.io-blue.svg)](https://github.com/jelmervdm/sophos-firewall-mcp) [![许可证](https://img.shields.io/badge/License-Apache_2.0-blue.svg)](LICENSE) [![Python 版本](https://img.shields.io/badge/python-3.11%20%7C%203.12%20%7C%203.13-blue.svg)](pyproject.toml) [![TDQS 评分](https://img.shields.io/badge/TDQS-5.00%2F5.00%20(Tier%20A%2B)-success.svg)](https://github.com/glama-ai/tool-definition-quality-score) 一款用于 Sophos Firewall (SFOS) 的异步 [Model Context Protocol (MCP)](https://modelcontextprotocol.io/) server,使 AI 助手(如 Antigravity IDE、Claude Desktop、VS Code 和 Cursor)能够管理、审计和排查 Sophos Firewall 网络安全基础设施。 ## 🌟 核心功能 * **异步 XML API 集成:** 基于 `httpx.AsyncClient` 构建,通过 Sophos SFOS XML API endpoint (`/webconsole/APIController`) 实现高吞吐量、非阻塞 IO。 * **7 大综合工具领域(28 个工具):** * **系统与状态:** 系统版本、序列号、运行时间、服务运行状态以及网络接口配置。 * **防火墙规则:** 安全策略列表、创建、状态切换以及规则删除。 * **主机与网络对象:** IP 主机定义、网络子网、IP 主机组和 FQDN 对象。 * **服务:** 自定义 TCP/UDP 服务对象、端口范围和服务组。 * **NAT 规则:** SNAT 和 DNAT 端口转发规则检查。 * **用户管理:** 本地用户账户配置和实时用户会话监控。 * **VPN 管理:** IPsec 站点到站点隧道和 SSL VPN 远程访问策略。 * **FastMCP 资源:** 通过 URI (`sophos://system/info`, `sophos://interfaces`, `sophos://services/status`) 提供只读系统状态。 * **引导式提示词:** 上下文安全审计 (`audit_firewall_rules`) 和流量故障排查 (`troubleshoot_connectivity`)。 * **语义工具路由:** 采用 FastEmbed 文本嵌入路由实现智能工具选择 (`USE_ROUTER=true`)。 * **Tier A+ 质量评分:** 100% 的参数描述,完整的 `ToolAnnotations` 安全元数据,以及 100% 的测试覆盖率。 ## 🏆 工具定义质量评分 (TDQS) 此 server 已通过 **[Tool Definition Quality Score (TDQS)](https://github.com/glama-ai/tool-definition-quality-score)** 框架的审核,以保证 LLM 的最佳函数调用、类型安全和运行时安全。 ``` ---------------- SCORECARD METRICS ---------------- Tools Evaluated : 39 Behavioral Annotations : 39 / 39 (100.0%) 100% Parameter Descriptions : 39 / 39 (100.0%) Usage Guidelines (Docstrings): 39 / 39 (100.0%) Overall TDQS Score : 5.00 / 5.00 TDQS Quality Tier : Tier A+ ======================================================== ``` - **行为注解 (`ToolAnnotations`):** 100% 的工具指定了 `readOnlyHint`、`destructiveHint` 和 `idempotentHint` 元数据。 - **参数描述 (`Annotated[..., Field(...)]`):** 每个参数都包含明确的类型和人类可读的描述。 - **使用指南:** 标准化的 docstring 详细说明了确切的触发条件(“Use when...”)。 ## ⚙️ Sophos Firewall API 前置条件 在将 `sophos-firewall-mcp` 连接到您的 Sophos Firewall (SFOS) 设备之前,请确保已启用 XML API,并且您的客户端 IP 已被列入白名单: 1. **登录 Web 管理控制台**:在浏览器中打开 `https://:4444`。 2. **启用 API 访问**: - 导航至 **System** > **Administration** > **API Access**(或 **API Configuration**)。 - 勾选 **API Configuration** 切换开关/复选框以启用 API 服务。 3. **将客户端 IP 地址列入白名单**: - 在 **Allowed IP Addresses** 下,点击 **Add** 并指定运行 `sophos-firewall-mcp` 的机器或容器主机的 IP 地址。 - *注意*:Sophos Firewall 会拒绝任何未明确添加到此白名单的 IP 地址发出的 API 请求。 4. **管理员账户**: - 确保配置的用户账户 (`SOPHOS_USERNAME`) 具有有效的管理员权限。 ## 🔧 环境变量 | 变量 | 描述 | 默认值 | | :--- | :--- | :--- | | `SOPHOS_HOST` | Sophos Firewall IP 地址或 FQDN | `172.16.16.16` | | `SOPHOS_PORT` | Web Console API 端口 | `4444` | | `SOPHOS_USERNAME` | API 管理员用户名 | `admin` | | `SOPHOS_PASSWORD` | API 管理员密码 | *(必填)* | | `SOPHOS_API_VERSION` | Sophos XML API 版本(例如,`2200.1` 对应 SFOS v22) | `2200.1` | | `SOPHOS_VERIFY_SSL` | 验证 SSL/TLS 证书(自签名证书请设置为 `false`) | `false` | | `SOPHOS_TIMEOUT` | API 请求超时时间(秒) | `30.0` | | `USE_ROUTER` | 设置为 `true` 以启用 FastEmbed 语义工具路由 | `false` | ## 🛠 客户端集成 将与您的环境匹配的配置代码片段添加到您的 MCP 设置文件中(例如 Antigravity IDE、Claude Desktop 或 VS Code 中的 `.vscode/mcp.json` 或 `mcp_config.json`)。 ### 选项 1:Docker / Podman 插入式容器部署 Podman 作为 Docker 在 Fedora/RHEL/Linux 上的无 root 插入式替代方案受到完全支持: ``` { "mcpServers": { "sophos-firewall": { "command": "podman", "args": [ "run", "-i", "--rm", "-e", "SOPHOS_HOST", "-e", "SOPHOS_PORT", "-e", "SOPHOS_USERNAME", "-e", "SOPHOS_PASSWORD", "-e", "SOPHOS_API_VERSION", "-e", "SOPHOS_VERIFY_SSL", "-e", "USE_ROUTER", "ghcr.io/jelmervdm/sophos-firewall-mcp:latest" ], "env": { "SOPHOS_HOST": "172.16.16.16", "SOPHOS_PORT": "4444", "SOPHOS_USERNAME": "admin", "SOPHOS_PASSWORD": "your_secure_password_here", "SOPHOS_API_VERSION": "2200.1", "SOPHOS_VERIFY_SSL": "false", "USE_ROUTER": "false" } } } } ``` ### 选项 2:本地 Python 执行(不使用 PyPI) #### 通过 `uv`(本地工作区目录): ``` { "mcpServers": { "sophos-firewall": { "command": "uv", "args": [ "--directory", "/path/to/sophos-firewall-mcp", "run", "sophos-firewall-mcp-server" ], "env": { "SOPHOS_HOST": "172.16.16.16", "SOPHOS_PORT": "4444", "SOPHOS_USERNAME": "admin", "SOPHOS_PASSWORD": "your_secure_password_here", "SOPHOS_VERIFY_SSL": "false" } } } } ``` #### 通过 `python`(可编辑安装 `pip install -e .`): ``` { "mcpServers": { "sophos-firewall": { "command": "python", "args": ["-m", "sophos_firewall_mcp.server"], "env": { "SOPHOS_HOST": "172.16.16.16", "SOPHOS_PORT": "4444", "SOPHOS_USERNAME": "admin", "SOPHOS_PASSWORD": "your_secure_password_here", "SOPHOS_VERIFY_SSL": "false" } } } } ``` #### 直接从 GitHub 代码库通过 `uvx`: ``` { "mcpServers": { "sophos-firewall": { "command": "uvx", "args": [ "--from", "git+https://github.com/jelmervdm/sophos-firewall-mcp.git", "sophos-firewall-mcp-server" ], "env": { "SOPHOS_HOST": "172.16.16.16", "SOPHOS_PORT": "4444", "SOPHOS_USERNAME": "admin", "SOPHOS_PASSWORD": "your_secure_password_here", "SOPHOS_VERIFY_SSL": "false" } } } } ``` ## 🧠 语义工具路由 当将 `sophos-firewall-mcp` 连接到具有受限上下文窗口的 AI 模型时,请设置 `USE_ROUTER=true`(或 `TOOL_ROUTING=true`)。 启用后: 1. server 仅公开 2 个元工具:`route_tools` 和 `call_routed_tool`。 2. `route_tools` 使用本地 CPU 嵌入(带有 `BAAI/bge-small-en-v1.5` 的 `fastembed`)在 5-10ms 内搜索匹配的防火墙工具。 3. `call_routed_tool` 使用参数动态调用匹配的工具。 ## 🧪 测试与质量保证 运行综合测试套件、代码检查、mypy 类型检查和 TDQS 审计: ``` # 评估 Tool Definition Quality Score (TDQS) uv run python scripts/check_tdqs.py # 运行 pytest 单元测试套件(39 个测试) uv run pytest -v # 代码风格和语法 linting uv run flake8 src tests scripts # 静态类型验证 uv run mypy src ``` ## 📄 许可证 在 Apache 2.0 许可证下分发。详情请参阅 [LICENSE](LICENSE)。
标签:MCP服务器, Sophos, 人工智能, 用户模式Hook绕过, 系统集成, 请求拦截, 运行时操纵, 逆向工具, 防火墙