神盾集群mcp
MCP(模型上下文协议)服务器,使Claude本机工具能够访问Aegis家庭实验室集群的每一层——Proxmox管理程序、TrueNAS存储、OPNsense防火墙、Prometheus警报、Wazuh SIEM和OpenClaw代理VM。
由Micheal Breedlove构建,既是生产运营工具,也是网络安全/基础设施工程组合。
______________________________________________________________________
这是什么
该服务器允许Claude,而不是将API输出复制到Claude中 直接查询您的基础架构并对其采取行动 作为原生MCP工具。你用简单的英语问了一个问题;Claude调用正确的工具,解析响应,并给出基于实时集群状态的答案。
6个子系统中的20个工具:
| 子系统 | 工具 |
|---|---|
| Proxmox(新星/米拉/奥林) | get_cluster_health, get_node_status, get_proxmox_alerts, list_vms, get_vm_status, restart_vm, get_vm_logs |
| TrueNAS比例尺 | get_zfs_pools, get_zfs_datasets, get_truenas_alerts |
| NFS/SSH | check_nfs_mounts, get_agent_status, get_agent_logs |
| OPNsense | get_opnsense_status, get_dns_entries |
| 普罗米修斯 | get_prometheus_alerts, get_prometheus_targets |
| 瓦祖 | get_wazuh_agents, get_recent_alerts |
______________________________________________________________________
快速开始
1.克隆并安装
git clone https://github.com/yourusername/aegis-cluster-mcp.git
cd aegis-cluster-mcp
pip install -e .2.配置凭据
cp config/.env.example config/.env
# Edit config/.env with your actual credentials3.用克劳德代码注册
claude mcp add aegis-cluster --command aegis-mcp或添加到您的 ~/.claude/mcp_servers.json 手动:
{
"aegis-cluster": {
"command": "aegis-mcp",
"env": {
"PROXMOX_TOKEN_SECRET": "your-secret-here",
"TRUENAS_API_KEY": "your-key-here"
}
}
}4.验证其是否正常工作
在克劳德代码中:
Use get_cluster_health to check the status of all three Proxmox nodes.______________________________________________________________________
环境变量参考
所有凭据都是从环境变量中读取的。永远不要硬编码秘密。
Proxmox
| 变量 | 默认值 | 描述 |
|---|---|---|
PROXMOX_NOVA_HOST | 10.1.1.2 | Nova(PROXMOX-1)主机名/IP |
PROXMOX_MIRA_HOST | 10.1.1.4 | Mira(PROXMOX-2)主机名/IP |
PROXMOX_ORIN_HOST | 10.1.1.5 | Orin(PROXMOX-3)主机名/IP |
PROXMOX_PORT | 8006 | Proxmox API端口 |
PROXMOX_TOKEN_ID | - | 中的API令牌 user@realm!tokenid 格式 |
PROXMOX_TOKEN_SECRET | - | API令牌机密值 |
PROXMOX_VERIFY_SSL | false | 验证TLS证书 |
在Proxmox:Datacenter中创建API令牌→ API令牌→ Add. 所需的最小权限: VM.Audit, Datastore.Audit, Sys.Audit.
TrueNAS
| 变量 | 默认值 | 描述 |
|---|---|---|
TRUENAS_HOST | 10.1.1.11 | TrueNAS主机名/IP |
TRUENAS_API_KEY | - | TrueNAS API密钥(凭据→ API密钥) |
TRUENAS_VERIFY_SSL | false | 验证TLS证书 |
OPNsense
| 变量 | 默认值 | 描述 |
|---|---|---|
OPNSENSE_HOST | 10.1.1.1 | OPNsense主机名/IP |
OPNSENSE_API_KEY | - | API密钥(系统→ 访问→ 用户→ Edit → API密钥) |
OPNSENSE_API_SECRET | - | API机密 |
OPNSENSE_VERIFY_SSL | false | 验证TLS证书 |
普罗米修斯/格拉法纳
| 变量 | 默认值 | 描述 |
|---|---|---|
PROMETHEUS_HOST | 10.1.70.25 | 普罗米修斯主机名/IP |
PROMETHEUS_PORT | 9090 | 普罗米修斯港 |
GRAFANA_HOST | 10.1.70.25 | Grafana主机名/IP |
GRAFANA_PORT | 3000 格拉夫港口。 | |
PROMETHEUS_USER | _(空)_ | 可选基本身份验证用户 |
PROMETHEUS_PASSWORD | _(空)_ | 可选基本身份验证密码 |
瓦祖
| 变量 | 默认值 | 描述 |
|---|---|---|
WAZUH_HOST | 10.1.1.26 | Wazuh管理器主机名/IP |
WAZUH_PORT | 55000 | Wazuh API端口 |
WAZUH_USER | wazuh | API用户名 |
WAZUH_PASSWORD | - | API密码 |
WAZUH_VERIFY_SSL | false | 验证TLS证书 |
OpenClaw代理虚拟机
| 变量 | 默认值 | 描述 |
|---|---|---|
AGENT_NOVA_HOST | 10.1.20.21 | Nova代理VM IP |
AGENT_MIRA_HOST | 10.1.20.22 | Mira代理VM IP |
AGENT_ORIN_HOST | 10.1.20.23 | Orin代理VM IP |
AGENT_SSH_USER | openclaw | SSH用户名 |
AGENT_SSH_KEY_PATH | _(空)_ | SSH私钥路径(推荐) |
AGENT_SSH_PASSWORD | _(空)_ | SSH密码(不推荐) |
AGENT_SSH_PORT | 22 | SSH端口 |
SSH_TIMEOUT | 10 | SSH连接超时(秒) |
NFS挂载
| 变量 | 默认值 | 描述 |
|---|---|---|
NFS_NOVA_HOST | 10.1.1.2 | NFS实时挂载的主机(Nova) |
NFS_MOUNT_OPENCLAW | /mnt/openclaw | OpenClaw NFS装载路径 |
NFS_MOUNT_SHARED | /mnt/openclaw-shared | 共享NFS装载路径 |
NFS_SERVER | 10.1.40.11 | NFS服务器IP |
将军
| 变量 | 默认值 | 描述 |
|---|---|---|
LOG_LEVEL | INFO | 日志记录级别:调试、信息、警告、错误 |
HTTP_TIMEOUT | 30 | HTTP请求超时(秒) |
______________________________________________________________________
克劳德互动示例
上午集群检查
你: 检查群集运行状况,并告诉我是否需要注意。
克劳德打电话来 get_cluster_health() → get_proxmox_alerts() → get_truenas_alerts() → get_prometheus_alerts() 并为您提供一份包含可操作项目的综合状态报告。
______________________________________________________________________
NFS挂载调试
你: openclaw NFS装载再次失败。你能检查一下并告诉我怎么了吗?
克劳德打电话来 check_nfs_mounts() 它测试两个挂载的实际读/写I/O,检测过时的NFS句柄、卸载错误和权限错误,并建议正确的补救措施。
______________________________________________________________________
安全分流
你: 显示集群中过去6小时的任何关键Wazuh警报。
克劳德打电话来 get_recent_alerts(hours=6) 和 get_wazuh_agents() 为了交叉引用连接的代理,然后根据代理上下文按严重程度总结警报。
______________________________________________________________________
VM故障排除
你: mira上的VM 105似乎很慢。它当前的CPU和内存使用情况如何?
克劳德打电话来 get_vm_status(node="mira", vmid=105) 并返回详细的资源利用率。如果您要求它重新启动:“在mira上重新启动VM 105”→ 克劳德打电话来 restart_vm 和 confirm=False 首先,向您显示确认请求,然后用重新呼叫 confirm=True 只有在你批准之后。
______________________________________________________________________
基础设施审计
你: 给我一份nova上运行的所有东西的完整清单。
克劳德打电话来 list_vms(node="nova") 并返回每个VM和容器的状态、CPU、内存和正常运行时间,这些数据与您从中获得的数据相同 pvesh get /nodes/pve/qemu 但无需离开您的聊天窗口。
______________________________________________________________________
普罗米修斯警报路由
你: 普罗米修斯当前正在触发哪些警报,哪些节点受到影响?
克劳德打电话来 get_prometheus_alerts() → 交叉引用实例 get_prometheus_targets() → 通过IP将警报实例映射回集群节点。
______________________________________________________________________
安全模型
默认情况下为只读。 所有查询工具(除 restart_vm)是非破坏性的GET操作。他们无法修改群集状态。
破坏性操作需要明确确认。 restart_vm 将拒绝执行,除非 confirm=True 明确传递。当Claude在没有确认的情况下调用此工具时,它会收到一个错误响应,提示它先与您确认——Claude将在聊天中向您显示确认。
凭证永远不会离开你的机器。 所有API令牌、密码和SSH密钥都是从运行MCP服务器的机器上的环境变量加载的。它们从未被发送到Anthropic或存储在克劳德的上下文中。
最小特权原则。 每个子系统使用所需的最低API权限:
- Proxmox:
VM.Audit+Datastore.Audit+Sys.Audit(只读令牌) - TrueNAS:只读API密钥
- OPNsense:只读API用户
- 瓦祖:
agents:read+alerts:read权限
没有出站连接。 服务器仅与您的本地集群IP进行通信。没有数据离开您的网络。
______________________________________________________________________
发展
运行测试
pip install -e ".[dev]"
pytest tests/ -v项目结构
aegis-cluster-mcp/
├── src/aegis_mcp/
│ ├── server.py # MCP server, tool registration, dispatch
│ ├── proxmox.py # Proxmox API client (proxmoxer)
│ ├── truenas.py # TrueNAS API client (httpx)
│ ├── opnsense.py # OPNsense API client (httpx)
│ ├── prometheus.py # Prometheus API client (httpx)
│ ├── wazuh.py # Wazuh API client (httpx + JWT auth)
│ └── ssh_health.py # SSH health checks (paramiko)
├── config/
│ └── .env.example # Credential reference
├── docs/
│ └── tools.md # Full tool reference with example output
├── tests/
│ └── test_tools.py # Unit tests with mocked responses
└── pyproject.toml添加新工具
- 将实现功能添加到相关模块中(
proxmox.py,truenas.py等等) - 在中注册该工具
server.py--添加到TOOLS在中列出并添加调度案例call_tool() - 将测试添加到
tests/test_tools.py - 文档在
docs/tools.md
______________________________________________________________________
集群参考
| 主机 | IP | 角色 |
|---|---|---|
| 新星(PROXMOX-1) | 10.1.1.2 | 主Proxmox节点,TrueNAS主机 |
| 米拉(PROXMOX-2) | 10.1.1.4 | Proxmox节点 |
| 奥林(PROXMOX-3) | 10.1.1.5 | Proxmox节点 |
TrueNAS。 10.1.1.11 | ZFS存储(Nova上的VM 200) | |
| OPNsense | 10.1.1.1 | 防火墙/网关 |
| 普罗米修斯/格拉法纳 | 10.1.70.25 | 监控堆栈 |
| 瓦祖 | 10.1.1.26 ,SIEM 。 | |
| Nova探员 | 10.1.20.21 | Nova上的OpenClaw代理VM |
| 米拉探员 | 10.1.20.22 | Mira上的OpenClaw代理VM |
| 奥特工 | 10.1.20.23 | Orin上的OpenClaw代理VM |
| 贾斯珀 | 10.1.1.150 | 游戏PC,运行OpenClaw主代理 |
| NFS服务器 | 10.1.40.11 | NFS存储服务器 |
______________________________________________________________________
许可证
麻省理工学院
