rijul170/sophos-central-mcp
GitHub: rijul170/sophos-central-mcp
面向 Sophos Central 的 MCP 服务器,通过 AI 客户端实现对 33 个安全 API 域、334 个工具的多租户安全运营管理。
Stars: 0 | Forks: 0
# Sophos Central MCP Server
    [](https://github.com/rijul170/sophos-central-mcp)
[](https://github.com/rijul170/sophos-central-mcp/actions/workflows/test.yml)
[](https://www.npmjs.com/package/@rijul170/sophos-mcp)
[](https://registry.modelcontextprotocol.io/v0/servers?search=io.github.rijul170/sophos-central-mcp)
## 概述
一个用于 Sophos Central API 的 Model Context Protocol (MCP) server,通过 Claude 及其他兼容 MCP 的客户端实现 AI 驱动的安全运营。专为具备 Partner Super Admin 凭证的 MSP/MSSP 环境设计,它通过单一服务器实例提供跨所有客户租户的多租户管理——涵盖 endpoint 保护、威胁检测、Live Discover 取证、XDR 捕获、邮件安全、firewall 管理等。
## 功能
- **跨越 33 个 API 域的 334 个工具** — 全面的 Sophos Central API 覆盖
- **多租户 MSSP 支持** — 通过 Partner Super Admin 凭证枚举和定位任意客户租户
- **Endpoint 隔离与调查** — 隔离 endpoint,检查篡改保护,触发扫描
- **告警分诊** — 跨租户列出、过滤、确认和执行 Sophos 告警操作
- **Live Discover SQL 查询** — 直接在受管的 endpoint 上运行实时取证 SQL 查询
- **XDR Data Lake 捕获** — 使用 SQL 针对 Sophos XDR Data Lake 进行历史威胁捕获
- **威胁检测** — 查询、分组和统计行为检测
- **案例管理** — 端到端创建和管理调查案例
- **邮件安全** — 隔离区管理、邮箱列表、邮件投递后撤回
- **Firewall 管理** — CRUD 操作、群组管理、固件升级
- **DNS 保护** — 位置策略、自定义域名允许/阻止列表
- **SOC Playbooks** — 内置 `sophos_playbook_*` 工具,用于指导 IR 和威胁捕获工作流
- **三种传输模式** — stdio (Claude Desktop)、SSE 和 Streamable HTTP (Claude Code)
- **自动 OAuth2 token 管理** — token 自动刷新,无需人工干预
- **区域路由** — 请求自动路由到正确的数据区域(US、EU、CA、AU、JP、BR)
## 前置条件
## 安装说明
```
git clone https://github.com/rijul170/sophos-central-mcp.git
cd sophos-central-mcp
npm install
npm run build
```
## 配置
### 1. 创建 `.env` 文件
```
cp .env.example .env
```
使用您的凭证编辑 `.env`:
```
# 必需
SOPHOS_CLIENT_ID=your-client-id-here
SOPHOS_CLIENT_SECRET=your-client-secret-here
# 可选 — transport mode: stdio | sse | streamable-http (默认: stdio)
MCP_TRANSPORT=stdio
# 可选 — HTTP transports 的 host (默认: 127.0.0.1)
MCP_HOST=127.0.0.1
# 可选 — HTTP transports 的 port (默认: 3001)
MCP_PORT=3001
```
### 2. 在 Sophos Central 中创建 API 凭证
1. 登录 **Sophos Central Partner Dashboard**
2. 导航至 **Settings & Policies** → **API Credentials Management**
3. 点击 **Add Credential**
4. 将角色设置为 **Service Principal Super Admin**
5. 复制 **Client ID** 和 **Client Secret** — 该 secret 仅显示一次
| 变量 | 必填 | 描述 |
|:---|:---:|:---|
| `SOPHOS_CLIENT_ID` | 是 | 来自 Sophos Central 的 Partner Super Admin Client ID |
| `SOPHOS_CLIENT_SECRET` | 是 | 对应的 client secret |
| `MCP_TRANSPORT` | 否 | 传输模式:`stdio`、`sse` 或 `streamable-http`(默认:`stdio`)|
| `MCP_HOST` | 否 | HTTP 传输的绑定主机(默认:`127.0.0.1`)|
| `MCP_PORT` | 否 | HTTP 传输的端口(默认:`3001`)|
| `SOPHOS_MCP_READONLY` | 否 | 设置为 `true` 则仅注册只读工具 — 写入和破坏性工具永远不会暴露给 AI 客户端 |
| `SOPHOS_MCP_ALLOW_DESTRUCTIVE` | 否 | 破坏性工具(删除、endpoint 隔离、Live Discover 执行、撤回等)默认被禁用。设置为 `true` 以启用全部工具,或提供逗号分隔的工具名称列表以选择性启用 |
## Claude Code 集成 (HTTP 模式)
推荐 Claude Code 使用 HTTP 模式 — 它支持并发会话,且不需要在对话之间重启服务器。
**启动服务器:**
```
MCP_TRANSPORT=streamable-http MCP_PORT=3001 node build/index.js
```
或者在您的 `.env` 中设置 `MCP_TRANSPORT=streamable-http` 并运行:
```
node build/index.js
```
**添加到您的 Claude Code MCP 配置中**(`.claude/settings.json` 或全局设置):
```
{
"mcpServers": {
"sophos-mcp": {
"type": "http",
"url": "http://localhost:3001/mcp"
}
}
}
```
`http://localhost:3001/health` 提供了 `/health` endpoint 用于存活检查。
## Claude Desktop 集成 (stdio 模式)
stdio 模式是 Claude Desktop 的标准传输方式。服务器进程由 Claude Desktop 直接管理。
**添加到您的 Claude Desktop MCP 配置中**(`claude_desktop_config.json`):
```
{
"mcpServers": {
"sophos-mcp": {
"command": "node",
"args": ["/path/to/sophos-central-mcp/build/index.js"],
"env": {
"SOPHOS_CLIENT_ID": "your-client-id",
"SOPHOS_CLIENT_SECRET": "your-client-secret"
}
}
}
}
```
将 `/path/to/sophos-central-mcp` 替换为您克隆仓库的绝对路径。
## SSE 模式
```
MCP_TRANSPORT=sse MCP_PORT=3001 node build/index.js
```
SSE endpoint 位于 `http://localhost:3001/sse`。
## 工具域
| 域 | 工具 | 描述 |
|:---|:---:|:---|
| Alerts | 5 | 列出、获取、确认和操作 Sophos 告警 |
| Endpoint | 26 | 隔离、篡改保护、扫描、迁移、批量操作 |
| Detections | 7 | 基于查询的行为检测搜索、分组和计数 |
| Live Discover | 11 | 在受管 endpoint 上进行实时取证 SQL 查询 |
| XDR | 10 | 针对 Sophos XDR Data Lake 的历史 SQL 捕获 |
| Cases | 9 | 调查案例的创建、读取、更新、关闭和证据管理 |
| Partner | 23 | 租户枚举、管理员、角色、计费、权限集 |
| Organization | 2 | 用于组织类型账户的租户列表 |
| Policy | 7 | 对所有 Sophos 策略类型执行完整的 CRUD |
| Group | 8 | Endpoint 群组 CRUD 及成员管理 |
| SIEM | 2 | 用于 SIEM 集成的事件和告警导出 |
| Firewall | 20 | Firewall CRUD、群组管理、固件升级 |
| DNS Protection | 15 | 位置、策略、自定义域名允许/阻止列表 |
| Email | 31 | 隔离区管理、邮箱、邮件投递后撤回 |
| Directory | 15 | 用户和用户群组的完整 CRUD |
| Settings | 16 | 篡改保护、排除项、Web 控制、endpoint 标签 |
| Allowed/Blocked | 12 | SHA256 哈希、证书和路径的允许/阻止列表 |
| Exploit Mitigation | 8 | 应用级别的漏洞利用防护排除项 |
| IPS Exclusion | 10 | 网络 IPS 和隔离排除项管理 |
| Tenant Admin | 14 | 租户管理员 CRUD、角色分配、自定义角色 |
| Account Health | 4 | 健康检查报告、延迟及历史健康评分 |
| Account Management | 4 | 账户级别的设置和许可证管理 |
| Audit Events | 2 | 用于合规性和治理的审计日志检索 |
| Business Automation | 3 | 自动化规则和业务逻辑配置 |
| Licensing | 2 | 许可证授权和使用情况查询 |
| Mobile | 38 | 移动设备管理 — 注册、策略、设备操作 |
| Cloud Security | 6 | 云工作负载保护态势和发现 |
| Software | 9 | 安装程序下载、软件清单、软件包 |
| Switch | 3 | 网络交换机管理 |
| WiFi | 3 | 无线网络管理 |
| User Activity | 2 | 用户活动报告和会话数据 |
| Playbooks | 5 | SOC 事件响应和威胁捕获工作流指南 |
| Auth | 2 | OAuth2 身份验证和 WhoAmI 身份发现 |
## SOC Playbooks
服务器内置了五个 playbook 工具,为常见的 SOC 工作流提供结构化的分步指导。这些工具旨在在调查开始时调用,以引导响应方向。
| 工具 | 目的 |
|:---|:---|
| `sophos_playbook_incident_response` | 端到端 IR playbook:分诊 → 确定范围 → 遏制 → 补救 |
| `sophos_playbook_threat_hunt` | 基于假设和基于 IOC 的威胁捕获工作流 |
| `sophos_mitre_attack_guide` | MITRE ATT&CK 技术到 Sophos 工具的映射 |
| `sophos_soc_tool_guide` | 按 SOC 用例组织的所有 334 个工具的参考指南 |
| `sophos_playbook_edr_investigation` | 针对 endpoint 检测的 EDR 专用调查 playbook |
## SOC 快速入门
一旦服务器连接到 Claude,您就可以使用自然语言来驱动安全运营。示例提示词:
**告警分诊:**
**Endpoint 调查:**
**XDR 威胁捕获:**
**MSSP 概览:**
**邮件安全:**
## 开发
```
# 以 hot-reload 方式运行(无需 build 步骤)
npm run dev
# 将 TypeScript 编译为 JavaScript
npm run build
# 运行已构建的 server
npm start
# 使用 MCP Inspector 交互式检查工具
npx @modelcontextprotocol/inspector node build/index.js
```
## 项目结构
```
src/
├── index.ts # Entry point — transport setup, registers all 33 modules
├── config.ts # Environment variable validation
├── auth/
│ └── auth-manager.ts # OAuth2 token management with auto-refresh
├── client/
│ ├── sophos-client.ts # HTTP client (retry, rate limiting, backoff)
│ └── tenant-router.ts # Tenant → regional API host mapping
├── tools/ # 33 tool files, 334 tools total
│ ├── auth-tools.ts # 2 tools
│ ├── partner-tools.ts # 23 tools
│ ├── organization-tools.ts # 2 tools
│ ├── endpoint-tools.ts # 26 tools
│ ├── group-tools.ts # 8 tools
│ ├── policy-tools.ts # 7 tools
│ ├── alert-tools.ts # 5 tools
│ ├── detections-tools.ts # 7 tools
│ ├── siem-tools.ts # 2 tools
│ ├── xdr-tools.ts # 10 tools
│ ├── live-discover-tools.ts # 11 tools
│ ├── firewall-tools.ts # 20 tools
│ ├── dns-protection-tools.ts # 15 tools
│ ├── email-tools.ts # 31 tools
│ ├── directory-tools.ts # 15 tools
│ ├── settings-tools.ts # 16 tools
│ ├── allowed-blocked-tools.ts # 12 tools
│ ├── exploit-mitigation-tools.ts # 8 tools
│ ├── ips-exclusion-tools.ts # 10 tools
│ ├── tenant-admin-tools.ts # 14 tools
│ ├── account-health-tools.ts # 4 tools
│ ├── cases-tools.ts # 9 tools
│ ├── software-tools.ts # 9 tools
│ ├── audit-events-tools.ts # 2 tools
│ ├── business-automation-tools.ts # 3 tools
│ ├── licensing-tools.ts # 2 tools
│ ├── mobile-tools.ts # 38 tools
│ ├── switch-tools.ts # 3 tools
│ ├── wifi-tools.ts # 3 tools
│ ├── cloud-security-tools.ts # 6 tools
│ ├── user-activity-tools.ts # 2 tools
│ ├── account-management-tools.ts # 4 tools
│ └── playbook-tools.ts # 5 tools
└── types/
└── sophos-types.ts # TypeScript interfaces for all Sophos API types
```
## 安全注意事项
- **只读模式** — 设置 `SOPHOS_MCP_READONLY=true` 以在启动时仅注册只读工具。无论要求什么,写入和破坏性工具永远不会暴露给 AI 客户端。XDR Data Lake 和检测查询保持可用(它们是只读分析);Live Discover 不可用(它会在受管 endpoint 上执行 osquery)。
- **破坏性操作限制** — 即使启用了写入功能,破坏性工具(endpoint 隔离、删除、邮件撤回、Live Discover 执行、固件升级等)默认也会被禁用。通过 `SOPHOS_MCP_ALLOW_DESTRUCTIVE` 显式武装它们。推荐的做法是使用逗号分隔的特定工具名称列表,而不是使用 `true`:
# 仅为 IR 工作流启用 endpoint 隔离
SOPHOS_MCP_ALLOW_DESTRUCTIVE=sophos_isolate_endpoint,sophos_deisolate_endpoint
- **工具注解** — 每个工具都带有 MCP `readOnlyHint`/`destructiveHint` 注解,以便兼容的客户端可以应用其自身的确认策略。
- **凭证处理** — API 凭证在启动时从环境变量中读取,除了向 Sophos 身份验证 endpoint 发送外,永远不会被记录或传输。不要将 `.env` 文件提交到源代码控制 — `.env` 已在 `.gitignore` 中列出。
- **Partner Super Admin 范围** — 这些凭证拥有跨所有受管租户的读/写权限。请像对待特权服务账户凭证一样谨慎处理它们。如果泄露,请立即轮换。
- **尽可能使用只读操作** — 如果您的用例只需要可见性(告警分诊、威胁捕获、报告),请考虑创建一个具有更受限角色的独立凭证。仅在执行写入操作(隔离、策略更改、用户管理)时才需要 Partner Super Admin。
- **网络绑定** — HTTP 传输默认绑定到 `127.0.0.1`。不要公开暴露 MCP 服务器端口。如果您需要远程访问,请将其置于经过身份验证的反向代理之后或使用 VPN。
- **审计跟踪** — 通过此服务器进行的所有 Sophos API 调用都会记录在 Sophos Central 的审计事件中,并可归因于所使用的 API 凭证。
## 相关 MCP Servers
这三个服务器涵盖了安全栈的互补层 — 网络/日志 (AlertLogic)、endpoint 保护 (Sophos) 和 EDR/威胁情报 (CrowdStrike)。将它们结合使用,可实现全栈的 AI 驱动 SOC 运营。
| 服务器 | 平台 | 亮点 |
|--------|----------|------------|
| [falcon-mcp](https://github.com/rijul170/falcon-mcp) | CrowdStrike Falcon | EDR 遥测、RTR、威胁情报、MSSP Flight Control、1,296 个工具 |
| [sophos-central-mcp](https://github.com/rijul170/sophos-central-mcp) | Sophos Central | Endpoint 隔离、Live Discover SQL、XDR、邮件/firewall/DNS、334 个工具 |
| [alertlogic-mcp](https://github.com/rijul170/alertlogic-mcp) | Alert Logic MDR | 事件响应、SQL 日志搜索、SOAR、漏洞管理、473 个工具 |
## 许可证
MIT
标签:GNU通用公共许可证, MCP服务器, MITM代理, MSSP, Node.js, Sophos Central, 安全运营, 扫描框架, 端点防护, 自动化攻击