集群管理协议服务器

一个允许Claude直接查询和操作基础设施的MCP服务器,提供对Aegis家庭实验室集群各层的访问,包括Proxmox虚拟机、TrueNAS存储、OPNsense防火墙等。

  • by MichealBreedlove
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 MichealBreedlove/aegis-cluster-mcp

使用说明

神盾集群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 credentials

3.用克劳德代码注册

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

添加新工具

  1. 将实现功能添加到相关模块中(proxmox.py, truenas.py等等)
  2. 在中注册该工具 server.py --添加到 TOOLS 在中列出并添加调度案例 call_tool()
  3. 将测试添加到 tests/test_tools.py
  4. 文档在 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存储服务器

许可证

麻省理工学院