使用说明
🏠 Homelab MCP Server
A unified Model Context Protocol (MCP) server that connects AI agents to your self-hosted homelab infrastructure.
暴露 9家庭实验室服务 通过人工智能助手的单一MCP端点(Claude、Gemini、ChatGPT、Cursor等)和自动化工具的完整REST API n8n.
✨ 特性
- 30个整合的MCP工具 –基于动作的复合工具,保持上下文窗口的效率
- MCP资源 –代理可以订阅的实时数据馈送(客户端、设备、队列、运行状况)
- MCP提示 –用于常见任务(故障排除、安全审计、健康检查)的预构建提示模板
- 完整REST API –每个工具也都通过Swagger文档作为REST端点公开
- 有条件登记 –仅启用的服务注册其工具,保持工具列表干净
- Docker首次部署 –单身
docker compose up管理一切 - 结构化错误处理 –具有正确HTTP状态代码的一致JSON错误
- 审核日志记录 –每个工具调用都会被跟踪和记录
📦 支持服务列表
| 服务 | 类别 | MCP工具 | 功能 |
|---|---|---|---|
| 优飞 | 网络 | 9 | 客户端、设备、防火墙、VLAN、安全、访客访问、备份 |
| Proxmox | 虚拟化 | 3 | 虚拟机、容器、快照、存储、电源管理 |
| 丛 | 媒体服务器 | 2 | 播放活动、库搜索、扫描、流控制 |
| 雷达/声纳 | 媒体管理 | 4 | 电影和电视搜索、添加内容、日历、下载队列 |
| SABnzbd | 下载 | 2 | 队列管理、速度限制、历史记录 |
| 波特纳 | Docker | 4 | 跨环境的容器、堆栈、卷、日志 |
| OPNsense | 防火墙 | 2 | 接口、DHCP、网关、固件、服务管理 |
| 家庭助手 | 物联网/智能家居 | 3 | 实体、自动化、场景、服务呼叫、历史 |
| 交通 | 反向代理 | 1 | 路由器检查、服务后端、运行状况概述 |
🚀 快速开始
先决条件
- 码头工人 和 Docker Compose (推荐)
- 或 Python 3.11+ 促进地方发展
1.克隆存储库
git clone https://github.com/theonlytruebigmac/homelab-mcp.git
cd homelab-mcp
2.配置您的环境
cp .env.example .env
编辑 .env 并配置要使用的服务。每个服务都有一个 *_ENABLED flag--将任何服务设置为 false 要完全禁用它(它的工具和路由将不会被注册):
# ---- MCP Server ----
MCP_HOST=0.0.0.0
MCP_PORT=3333
# ---- Logging ----
LOG_LEVEL=INFO # DEBUG, INFO, WARNING, ERROR
LOG_JSON_FORMAT=false # true for structured JSON logs
# ---- Unifi Controller ----
UNIFI_ENABLED=true
UNIFI_URL=https://192.168.1.1:8443
UNIFI_USERNAME=admin
UNIFI_PASSWORD=your_password_here
UNIFI_SITE=default
UNIFI_VERIFY_SSL=false
# ---- Radarr (Movies) ----
RADARR_ENABLED=true
RADARR_URL=http://your-radarr-ip:7878
RADARR_API_KEY=your_radarr_api_key_here
# ---- Sonarr (TV) ----
SONARR_ENABLED=true
SONARR_URL=http://your-sonarr-ip:8989
SONARR_API_KEY=your_sonarr_api_key_here
# ---- Plex ----
PLEX_ENABLED=true
PLEX_URL=http://your-plex-ip:32400
PLEX_TOKEN=your_plex_token_here
# ---- Proxmox ----
PROXMOX_ENABLED=true
PROXMOX_URL=https://your-proxmox-ip:8006
PROXMOX_USER=root@pam
PROXMOX_PASSWORD=your_password_here
# ---- Portainer ----
PORTAINER_ENABLED=true
PORTAINER_URL=http://your-portainer-ip:9000
PORTAINER_ACCESS_TOKEN=your_access_token_here
# ---- OPNsense ----
OPNSENSE_ENABLED=true
OPNSENSE_URL=https://your-opnsense-ip
OPNSENSE_API_KEY=your_api_key
OPNSENSE_API_SECRET=your_api_secret
# ---- Home Assistant ----
HASS_ENABLED=true
HASS_URL=http://homeassistant.local:8123
HASS_TOKEN=your_long_lived_access_token
# ---- SABnzbd ----
SABNZBD_ENABLED=true
SABNZBD_URL=http://localhost:8080
SABNZBD_API_KEY=your_api_key
# ---- Traefik ----
TRAEFIK_ENABLED=true
TRAEFIK_URL=http://localhost:8080
TRAEFIK_USERNAME= # optional basic auth
TRAEFIK_PASSWORD=
提示: 您只需要配置实际使用的服务。集
*_ENABLED=false对于其他所有工具,这些工具甚至不会出现在MCP工具列表中。
3.使用Docker Compose进行部署
docker compose up -d --build
服务器将在以下位置可用:
| 端点 | URL | 描述 |
|---|---|---|
| 主控程序 | http://localhost:3333/mcp |
在此处连接您的AI代理 |
| REST API文档 | http://localhost:3333/docs |
交互式Swagger用户界面 |
| 健康检查 | http://localhost:3333/health |
服务器状态+版本 |
| 统一状态 | http://localhost:3333/api/status |
所有服务的健康 |
4.连接您的AI代理
Claude桌面/光标/Gemini CLI --添加到您的MCP配置中:
{
"mcpServers": {
"homelab-mcp": {
"url": "http://<your-server-ip>:3333/mcp"
}
}
}
🛠️ 本地开发(无Docker)
# Create a virtual environment
python3 -m venv .venv
source .venv/bin/activate
# Install the package in development mode
pip install -e ".[dev]"
# Configure environment
cp .env.example .env
# Edit .env with your service credentials
# Run the server
homelab-mcp
这 homelab-mcp 入口点定义见 pyproject.toml 并奔跑 src/homelab_mcp/server.py:main().
🏗️ 建筑
src/homelab_mcp/
├── server.py # FastMCP + FastAPI app, tool/router registration, lifespan
├── config.py # Pydantic Settings for all services
├── services/
│ ├── unifi/ # Unifi Controller integration
│ │ ├── client.py # API client (aiohttp)
│ │ └── tools.py # MCP tools + impl functions
│ ├── proxmox/ # Proxmox VE integration
│ ├── plex/ # Plex Media Server
│ ├── media/ # Radarr + Sonarr
│ ├── portainer/ # Docker via Portainer
│ ├── opnsense/ # OPNsense firewall
│ ├── hass/ # Home Assistant
│ ├── sabnzbd/ # SABnzbd Usenet
│ └── traefik/ # Traefik reverse proxy
├── routers/ # FastAPI REST routers (one per service)
└── utils/
├── logging.py # @traced decorator, audit trail
└── exceptions.py # Structured error hierarchy
每个服务都遵循相同的模式:
client.py-异步API客户端使用aiohttp采用延迟初始化tools.py—_implMCP工具和REST路由器共享的功能,以及register_*_tools()注册整合的MCP工具、资源和提示
📡 n8n集成
此服务器提供了一个REST API,设计用于 n8n 工作流自动化:
- AI代理节点 --使用内置的MCP工具支持或“呼叫工作流”模式
- HTTP请求节点 --直接调用任何REST端点(请参阅Swagger
/docs) - 子工作流程 --将工具调用路由到REST端点,以实现复杂的自动化链
📚 文档
| 文档 | 描述 |
|---|---|
| MCP工具参考 | AI代理可用的所有工具 |
| REST API参考 | 自动化的完整端点列表 |
| Swagger用户界面 | 交互式API资源管理器(运行时) |
📄 许可证
该项目根据 MIT许可证.
