使用说明
Homelab MCP服务器
用于管理家庭实验室基础设施的远程MCP(模型上下文协议)服务器。为Claude提供监控和管理Docker容器、OPNsense防火墙、TrueNAS存储、Proxmox虚拟化和家庭助理服务状态的工具。
特性
- 4能力等级:从只读监控到完全管理控制
- Docker管理:列出、监控、控制集装箱和码头堆栈
- OPNsense集成:监视防火墙状态并重新启动服务
- TrueNAS集成:检查池运行状况、管理数据集、创建快照
- Proxmox集成:监控和管理虚拟机/容器,创建快照
- 家庭助理集成:监视服务运行状况、实体状态、配置和错误日志
- 系统监控:主机上的CPU、内存、磁盘使用情况
⚠️ 危险-先读这个
该软件允许AI模型直接控制您的网络基础设施。请务必谨慎使用。
关键风险
-
AI可能会犯错:语言模型可能会误解指令、产生幻觉需求或执行意外操作。像“清理未使用的容器”这样的简单请求可能会导致关键服务停止。
-
破坏性行动是可能的:在更高的能力级别(3-4),人工智能可以:
- 删除虚拟机和容器
- 修改网络配置
- 删除关键数据集或快照
- 在生产系统中执行任意命令
- 覆盖docker组合文件,可能导致数据丢失
-
无撤消按钮:一旦AI执行了破坏性操作(删除VM、删除数据集、停止关键服务),损害是即时的,可能是不可逆转的。
-
网络安全影响:此服务器提供对防火墙、存储系统和虚拟化平台的API访问。泄露的API密钥或错误配置的功能级别可能允许对整个homeab进行未经授权的控制。
-
误解时有发生:人工智能模型可能无法完全理解基础设施的依赖关系。重新启动一项服务可能会导致网络范围内的中断。
建议
-
从1级开始(只读):始终从只监控访问开始,只有在绝对必要时才提高能力水平。
-
开发中的测试:如果可能的话,首先使用非生产基础设施进行测试,以了解AI如何解释您的请求。
-
执行前审查:在2+级,在确认执行之前,仔细审查人工智能计划采取的行动。
-
保留备份:在授予3+级访问权限之前,请确保您拥有所有关键系统的最新备份。
-
旋转凭据:定期轮换API密钥和OAuth凭据。把它们当作高度敏感的。
-
监控日志:查看容器日志,查看实时执行的操作。
-
使用网络分段:考虑在对关键基础设施访问受限的受限网段中运行此服务器。
通过使用此软件,您承认您了解这些风险,并对AI采取的任何行动承担全部责任,包括数据丢失、服务中断或安全事件。
快速开始
1.先决条件
- 目标主机(Wharf)上安装了Docker和Docker Compose
- OPNsense API凭据(可选)
- TrueNAS API密钥(可选)
- Node.js 20+(用于本地开发)
2.设置
# Clone or copy the project to your host
cd homelab-mcp
# Copy example environment file
cp .env.example .env
# Generate a secure API key
openssl rand -hex 32
# Edit .env and add your credentials
nano .env
3.配置
编辑 .env 使用您的设置:
CAPABILITY_LEVEL=1 # Start with level 1 (read-only)
API_KEY=your-api-key-here # Use the generated key
PORT=3005
# OPNsense (optional)
OPNSENSE_HOST=10.0.0.1
OPNSENSE_API_KEY=your-key
OPNSENSE_API_SECRET=your-secret
# TrueNAS (optional)
TRUENAS_HOST=10.0.0.105
TRUENAS_API_KEY=your-key
# Proxmox (optional)
PROXMOX_HOST=10.0.0.2
PROXMOX_TOKEN_ID=root@pam!mytoken
PROXMOX_TOKEN_SECRET=your-secret
# Home Assistant (optional)
HOME_ASSISTANT_HOST=10.0.0.103
HOME_ASSISTANT_PORT=8123
HOME_ASSISTANT_TOKEN=your-long-lived-token
HOME_ASSISTANT_USE_HTTPS=false
4.构建和部署
# Build TypeScript
npm install
npm run build
# Build Docker image
docker compose build
# Start the server
docker compose up -d
# Check logs
docker compose logs -f
5.配置克劳德桌面
添加到您的Claude Desktop MCP设置中:
{
"mcpServers": {
"homelab": {
"command": "node",
"args": ["/path/to/homelab-mcp/dist/index.js"],
"env": {
"CAPABILITY_LEVEL": "1",
"API_KEY": "your-api-key-here",
"OPNSENSE_HOST": "10.0.0.1",
"OPNSENSE_API_KEY": "your-key",
"OPNSENSE_API_SECRET": "your-secret",
"TRUENAS_HOST": "10.0.0.105",
"TRUENAS_API_KEY": "your-key",
"PROXMOX_HOST": "10.0.0.2",
"PROXMOX_TOKEN_ID": "root@pam!mytoken",
"PROXMOX_TOKEN_SECRET": "your-secret",
"HOME_ASSISTANT_HOST": "10.0.0.103",
"HOME_ASSISTANT_PORT": "8123",
"HOME_ASSISTANT_TOKEN": "your-long-lived-token",
"HOME_ASSISTANT_USE_HTTPS": "false"
}
}
}
}
远程访问(克劳德聊天)
要从Claude Chat(web界面)访问MCP服务器,请使用HTTP传输进行部署:
-
在中设置环境变量
.env:PORT=3000 API_KEY=your-generated-key CAPABILITY_LEVEL=1 -
部署容器:
docker compose up -d -
配置反向代理 (例如,Traefik、Pangolin、nginx)路由
mcp.example.com到http://localhost:3000 -
添加DNS记录 指向
mcp.example.com到您的服务器 -
在克劳德聊天,添加MCP服务器:
- 网址:
https://mcp.example.com/mcp - 身份验证:承载令牌
- 令牌:您的API_KEY值
- 网址:
OAuth 2.0身份验证(适用于Claude Chat)
Claude Chat要求OAuth 2.0用于自定义连接器。此服务器支持客户端凭据流。
-
生成OAuth凭据:
# Generate client ID openssl rand -hex 32 # Generate client secret openssl rand -hex 32 -
添加
.env:OAUTH_CLIENT_ID=your-generated-client-id OAUTH_CLIENT_SECRET=your-generated-client-secret -
在Claude Chat中,添加连接器:
- 姓名:
Homelab - 远程MCP服务器URL:
https://mcp.example.com/mcp - OAuth客户端ID:您生成的客户端ID
- OAuth客户端密钥:您生成的客户端密钥
- 姓名:
服务器将颁发有效期为1小时的访问令牌。Claude Chat自动处理令牌刷新。
端点
在HTTP模式下运行时:
| 端点 | 方法 | 身份验证 | 描述 |
|---|---|---|---|
/health |
GET | 否 | 健康检查,返回状态和能力级别 |
/oauth/token |
POST | 否 | OAuth 2.0令牌端点 |
/mcp |
POST | 是 | MCP协议端点 |
/ |
POST | 是 | /mcp的别名 |
测试
# Test health endpoint
curl https://mcp.example.com/health
# Get an access token
curl -X POST https://mcp.example.com/oauth/token \
-H "Content-Type: application/x-www-form-urlencoded" \
-d "grant_type=client_credentials&client_id=YOUR_CLIENT_ID&client_secret=YOUR_CLIENT_SECRET"
# Use the token
curl https://mcp.example.com/mcp \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'
能力级别
| 级别 | 名称 | 功能 |
|---|---|---|
| 1 | 监视器 | 只读:容器状态、日志、统计数据、系统信息、服务运行状况 |
| 2 | 操作 | 1级+启动/停止/重启容器和服务 |
| 3 | 配置 | 级别2+读写文件、配置、卷、网络 |
| 4 | 管理 | 级别3+写入配置、创建/删除容器、执行命令 |
推荐:从1级开始,根据需要增加。
可用工具
1级-监视器
docker_list_containers-列出所有容器docker_container_logs-获取容器日志docker_container_stats-获取容器CPU/内存统计信息system_info-获取主机系统信息opnsense_status-获取OPNsense状态truenas_status-获取TrueNAS池状态truenas_alerts-获取TrueNAS警报proxmox_status-获取Proxmox群集状态proxmox_list_vms-列出所有虚拟机和容器proxmox_vm_status-获取VM/容器状态home_assistant_status-获取家庭助理版本和实体计数home_assistant_list_entities-列出所有实体(灯、开关、传感器)home_assistant_get_entity-获取特定实体状态和属性
2级-操作
docker_restart_container-重新启动容器docker_start_container-启动容器docker_stop_container-停止容器opnsense_service_restart-重新启动OPNsense服务proxmox_start_vm-启动VM/容器proxmox_stop_vm-停止VM/容器proxmox_shutdown_vm-优雅地关闭VM/容器proxmox_reboot_vm-重新启动VM/容器
级别3-配置
docker_read_compose-阅读docker-compose.ymldocker_list_volumes-列出Docker卷docker_list_networks-列出Docker网络docker_inspect_container-检查集装箱详细信息truenas_list_datasets-列出ZFS数据集truenas_dataset_info-获取数据集详细信息proxmox_vm_config-获取VM/容器配置proxmox_list_storage-列出Proxmox存储proxmox_list_nodes-列出群集节点home_assistant_get_config-获取家庭助理配置home_assistant_error_log-获取错误日志
第4级-管理
docker_write_compose-写docker-compose.ymldocker_compose_up-部署堆栈docker_compose_down-删除堆栈docker_exec-在容器中执行命令truenas_create_snapshot-创建ZFS快照proxmox_create_snapshot-创建VM/容器快照proxmox_delete_vm-删除VM/容器
发展
# Install dependencies
npm install
# Run in development mode
npm run dev
# Build
npm run build
# Type check
npx tsc --noEmit
安全须知
- API密钥应保密并定期轮换
- 从您需要的最低能力级别开始
- 对于第四级
/opt/stacks安装必须:rw而不是:ro - 容器需要访问Docker套接字进行容器管理
- 默认情况下,OPNsense和TrueNAS API使用自签名证书
故障排除
容器无法启动
# Check logs
docker compose logs homelab-mcp
# Common issues:
# - Missing API_KEY in .env
# - Invalid CAPABILITY_LEVEL (must be 1-4)
# - Docker socket not accessible
工具故障
# Test OPNsense API
curl -k -u "key:secret" https://10.0.0.1/api/core/system/status
# Test TrueNAS API
curl -k -H "Authorization: Bearer YOUR_KEY" https://10.0.0.105/api/v2.0/system/info
# Test Home Assistant API
curl -H "Authorization: Bearer YOUR_TOKEN" http://10.0.0.103:8123/api/
# Check network connectivity from container
docker exec homelab-mcp ping 10.0.0.1
权限问题
如果需要级别4(对堆栈的写访问权限),请更新卷装载:
volumes:
- /opt/stacks:/opt/stacks:rw # Change from :ro to :rw
许可证
麻省理工学院
贡献
问题和拉取请求欢迎!
