内容
# 迈致网关 MCP 服务器
MCP 服务器,暴露 **迈致 LoRaWAN 网关 HTTP API** 作为工具,使 MCP 客户端(Claude Code、Claude Desktop 等)可以管理应用、设备、设备配置、组播群组和下行链路在一个迈致 UG 系列网关上。
它通过 HTTPS(端口 8080)与网关的嵌入式网络服务器通信,自动处理固件的 AES 加密登录和 JWT 持有者令牌身份验证。
## 功能
网关 API 表面上的每个操作都有一个对应的工具:
- **应用** — 列出 / 获取 / 创建 / 更新 / 删除
- **设备** — 列出 / 获取 / 创建 / 更新 / 删除
- **设备配置** — 列出 / 获取 / 创建 / 更新 / 删除
- **组播群组** — 列出 / 获取 / 创建 / 删除,列出/添加/删除成员
- **下行链路** — 为设备和组播群组排队 / 列出 / 清除
- **网关** — 列出
- **数据包** — 列出 / 清除帧日志
- **有效载荷编解码器** — 列出
- **设置** — 网络服务器设置,数据包转发器网络服务器
## 要求
- Python ≥ 3.10
- 可以访问迈致网关(使用 AES 登录的固件,例如 60.0.0.42-r5 / 56.0.0.4 及更高版本)
## 安装
使用 [uv](https://docs.astral.sh/uv/):
```bash
uv sync
```
## 配置
复制 `.env.example` 到 `.env` 并填写网关详细信息:
```bash
MILESIGHT_HOST=192.168.1.1
MILESIGHT_PORT=8080
MILESIGHT_USER=admin
MILESIGHT_PASSWORD=your-password
MILESIGHT_ORG_ID=1
MILESIGHT_VERIFY_TLS=false
```
`.env` 被 gitignore。服务器从环境中读取这些变量,因此您也可以通过 MCP 客户端注入环境变量。
> **TLS:** 网关出厂时附带自签名证书,因此默认关闭验证。只有在信任证书时,才设置 `MILESIGHT_VERIFY_TLS=true`。
## 运行
```bash
uv run milesight-mcp
```
服务器通过 stdio 通信 MCP。
### Claude Code / Claude Desktop
在 MCP 客户端配置中添加:
```json
{
"mcpServers": {
"milesight": {
"command": "uv",
"args": ["run", "milesight-mcp"],
"cwd": "/path/to/milesight_mcp",
"env": {
"MILESIGHT_HOST": "192.168.1.1",
"MILESIGHT_USER": "admin",
"MILESIGHT_PASSWORD": "your-password"
}
}
}
}
```
## 现场烟雾测试
对配置的网关运行只读检查(无写入):
```bash
uv run python test_live.py
```
## 身份验证工作原理
网关登录端点期望密码使用 AES-128-CBC 加密(固定的密钥/IV 来自固件)并进行 Base64 编码。成功后,它返回一个 JWT,有效期为 24 小时,在每个请求上作为 `Authorization: Bearer <jwt>` 发送。客户端缓存令牌,主动刷新,并在收到 `401` 时自动重新登录。
## 许可证
MIT