使用说明
家庭MCP服务器
A. 模型上下文协议(MCP) 用于家庭实验室基础设施监控的服务器。为AI助手提供对服务器健康指标、网络统计数据、容器状态和路由器信息的实时访问。
特性
网络数据集成
- 多服务器监控:查询多个运行Netdata的家庭实验室服务器
- 系统度量:CPU、RAM、磁盘使用率和历史数据
- 网络统计:接口带宽、数据包、错误和绑定信息
- 集装箱监控:Docker容器发现和资源跟踪
MikroTik路由器集成
- 系统资源:CPU、内存、正常运行时间和温度
- 网络接口:状态、流量统计和绑定配置
- dhcp租约:查看所有活动的DHCP分配
- 流量统计:接口级流量监控
Dozzle日志监控
- 多主机容器日志:跨所有受监视主机查询容器
- 集中式日志访问:分布式容器日志的单个API终结点
- 历史日志检索:从任何容器中获取完整的日志历史记录
- 高级过滤:时间范围查询、正则表达式模式匹配、日志级过滤
- 容器发现:列出所有包含运行状况和状态信息的容器
自定义网络数据插件
包括专门服务的监控插件:
- reth_monitor:以太坊执行客户端监控
- 灯塔_监视器:以太坊共识客户端监控
- 八位字节监视器:Tezos节点监控
- 氦监测仪:氦气网络监测
- earnings_monitor:加密货币收益跟踪
先决条件
- Python 3.11+
- Docker和Docker Compose(用于容器化部署)
- 在受监控的服务器上运行的Netdata
- 具有API访问权限的MikroTik路由器(可选)
- 用于容器日志监控的Dozzle实例(可选)
安装
1.克隆存储库
git clone <repository-url>
cd home-mcp
2.配置服务器
复制示例配置并对其进行自定义:
cp config.example.json config.json
编辑 config.json 您的服务器详细信息:
{
"servers": {
"your-server": {
"netdata_url": "http://your-server.local:19999",
"role": "compute",
"description": "Your server description",
"hardware_notes": "Hardware specs"
}
},
"mikrotik": {
"enabled": true,
"model": "RouterBoard Model",
"host": "192.168.x.x",
"port": 8728,
"username": "mcp-read",
"password": "YOUR_PASSWORD_HERE"
},
"dozzle": {
"enabled": true,
"url": "http://your-server.local:8080",
"description": "Dozzle master instance for container log monitoring"
}
}
3.使用Docker进行部署
docker-compose up -d
或者手动构建并运行:
docker build -t home-mcp .
docker run -d \
--name home-mcp \
--network host \
-v $(pwd)/config.json:/app/config.json:ro \
home-mcp
4.地方发展
pip install -r requirements.txt
python server.py
可用工具
服务器监控
get_all_servers_overview:所有已配置服务器的运行状况概述get_server_health:特定服务器(CPU、RAM、磁盘)的详细运行状况统计数据get_network_stats:具有可配置时间范围的网络接口统计list_containers:列出服务器上的所有Docker容器get_container_stats:容器的CPU和内存统计信息
路由器监控(MikroTik)
get_mikrotik_interfaces:所有具有状态和流量的网络接口get_mikrotik_resources:系统资源(CPU、内存、正常运行时间、温度)get_mikrotik_dhcp_leases:所有DHCP租约信息get_mikrotik_traffic:接口流量统计和绑定信息
集装箱日志监控(Dozzle)
get_dozzle_hosts:列出Dozzle监控的所有主机及其容器计数get_dozzle_containers:列出主机上的所有容器及其状态和运行状况get_dozzle_container_logs:使用高级筛选获取历史日志:- 时间范围查询(RFC3339格式的从/到时间戳)
- 正则表达式模式匹配(特定于过滤器的日志内容)
- 日志级过滤(错误、警告、信息等)
- 可配置尾部(要返回的最新行数)
MCP客户端配置
克劳德桌面
添加到您的Claude Desktop配置(~/Library/Application Support/Claude/claude_desktop_config.json 在macOS上):
{
"mcpServers": {
"home-mcp": {
"command": "docker",
"args": [
"exec",
"-i",
"home-mcp",
"python",
"server.py"
]
}
}
}
其他MCP客户端
通过stdio传输连接。服务器使用MCP协议通过标准输入/输出进行通信。
Netdata插件安装
要在受监控的服务器上安装自定义Netdata插件,请执行以下操作:
cd netdata-plugins
sudo ./install.sh
这将把插件复制到 /usr/libexec/netdata/python.d/ 并重新启动Netdata。
安全考虑
- 只读访问:建议对MikroTik API使用只读凭据
- 网络隔离:考虑在专用监控网络上运行
- 配置文件权限:保护
config.json包含凭据 - 防火墙规则:确保Netdata(端口19999)只能从受信任的网络访问
故障排除
连接问题
如果MCP服务器无法访问Netdata实例:
- 验证Netdata是否正在运行:
http://server:19999 - 检查受监控服务器上的防火墙规则
- 测试连接性:
curl http://server:19999/api/v1/info
MikroTik API问题
- 确保在路由器上启用API服务
- 验证凭据和网络连接
- 检查端口(默认8728为普通端口,8729为SSL端口)
Dozzle连接问题
- 验证Dozzle是否可用:
http://your-server:8080 - 对于代理模式,确保代理在远程主机上运行(默认端口7007)
- 测试SSE端点:
curl http://your-server:8080/api/events/stream - 检查Docker是否正在捕获容器日志
Docker问题
查看日志:
docker logs home-mcp
重新启动容器:
docker-compose restart
建筑
+-------------------+
| MCP Client |
| (Claude, etc.) |
+--------+----------+
|
| stdio
|
+--------v----------+
| Home MCP |
| Server |
+----+--------+-----+
| | |
| | |
v v v
+----+----+ +--+---+---+ +--------+
| Netdata | | MikroTik | | Dozzle |
| Servers | | Router | | Master |
+---------+ +----------+ +----+---+
|
+------+------+
| |
+---v---+ +---v---+
| Agent | | Agent |
| Host1 | | Host2 |
+-------+ +-------+
