MCP MQTT Light Controller
by dshenaf
README.md
# mcp-mqtt-light
一个基于 MCP 的 MQTT 智能灯控制示例项目,包含:
- `mqtt_light_controller.py`:提供 MCP 工具(开关灯、调亮度),通过 MQTT 发布控制消息
- `mcp_pipe.py`:把 MCP 的 stdio 与远端 WebSocket 端点进行双向转发,并支持按配置启动多个 MCP server
## 环境要求
- Python 3.10+(建议)
## 安装
```bash
python -m pip install -r requirements.txt
```
## 配置
### 1) MCP Pipe 连接端点
`mcp_pipe.py` 通过环境变量 `MCP_ENDPOINT` 连接到 WebSocket 端点:
- Linux/macOS:
```bash
export MCP_ENDPOINT="ws://localhost:8765"
```
- Windows PowerShell:
```powershell
$env:MCP_ENDPOINT = "ws://localhost:8765"
```
### 2) MQTT 连接参数(可选)
`mqtt_light_controller.py` 支持以下环境变量(也可在 `.env` 中设置):
- `MQTT_BROKER`:MQTT Broker 地址(默认:`b11f17c5.ala.cn-hangzhou.emqxsl.cn`)
- `MQTT_PORT`:端口(默认:`8883`,TLS)
- `MQTT_CONTROL_TOPIC`:控制主题(默认:`smartlight/control`)
- `MQTT_STATUS_TOPIC`:状态主题(默认:`smartlight/status`)
- `MQTT_CLIENT_ID`:客户端 ID(默认:`mcp-light-controller`)
- `MQTT_USER` / `MQTT_PASSWORD`:认证信息(默认空)
注意:当前 TLS 配置处于“忽略证书验证”的模式,适合本地/测试环境;生产环境建议启用证书校验。
## 运行
### 使用配置启动 MCP Server(推荐)
仓库内置 [mcp_config.json](file:///e:/LLM/mcp-mqtt-light/mcp_config.json) 示例配置。
启动所有启用的 server:
```bash
python mcp_pipe.py
```
只启动某一个 server(配置名或脚本路径均可):
```bash
python mcp_pipe.py mqtt-light-controller
```
或:
```bash
python mcp_pipe.py mqtt_light_controller.py
```
### 直接启动 mqtt_light_controller(调试用)
```bash
python mqtt_light_controller.py
```
该进程会启动 MCP stdio server,并在首次运行时连接 MQTT Broker。
只想验证 MQTT 订阅能否收到消息(不启动 MCP stdio):
```bash
python mqtt_light_controller.py --mqtt-only
```
## 提供的工具
`mqtt_light_controller.py` 暴露的 MCP 工具:
- `control_light(light_state: str)`:`on`/`off`
- `adjust_brightness(brightness: int)`:亮度 `0-100`
## 测试
本项目使用标准库 `unittest` 做基础测试:
```bash
python -m unittest discover -s tests -v
```
也可以做一次基础语法/导入检查:
```bash
python -m compileall .
```
This server cannot be deployed
Maintenance
ActivityInactive
ResponsivenessNo issues