物联网云mcp
MCP(模型上下文协议)网关服务器,将AI助手连接到Rogo IoT Cloud平台。使用NestJS构建,它将MCP工具调用转换为结构化REST API请求,使ChatGPT和Claude等人工智能客户端能够查询和控制物联网设备。
建筑
MCP Client (ChatGPT / Claude / n8n)
│
▼
┌──────────────────────────────────────────────┐
│ POST /mcp/:projectApiKey │
│ ┌─ JWT auth ─ Session mgmt ─ JSON-RPC ─┐ │
│ │ McpController → ProtocolHandler │ │
│ │ → ToolExecutor → IotApiService │ │
│ └───────────────────────────────────────┘ │
│ Redis (sessions) Local cache (servers) │
└──────────────────────────────────────────────┘
│
▼
Rogo IoT Cloud REST API多用户 -每个项目都使用嵌入在URL中的API密钥。会话的范围为每个项目、每个用户。
MCP工具
| 工具 | 说明 |
|---|---|
fetch_user | 获取当前用户配置文件 |
search | 跨设备、位置搜索 |
list_devices | 列出项目中的所有设备 |
list_locations | 列出所有地点 |
list_groups | 列出设备组 |
get_device | 获取单个设备的详细信息+状态 |
update_device | 更新设备属性 |
delete_device | 删除设备 |
get_device_state | 通过ID获取设备状态 |
get_device_state_by_mac | 通过MAC地址获取设备状态 |
get_location_state | 获取某个位置的所有设备状态 |
control_device | 发送控制命令(完整) |
control_device_simple | 发送控制命令(简化) |
get_device_documentation | 获取设备文档 |
fetch | 通用数据提取 |
入门指南
先决条件
- Node.js 18+
- Redis 6+
- 访问Rogo物联网云项目API密钥
安装
git clone https://github.com/dadadadas111/iot-cloud-mcp.git
cd iot-cloud-mcp
npm install配置
复制示例环境文件并填写您的值:
cp .env.example .env关键变量:
| 变量 | 必填 | 默认 | 描述 |
|---|---|---|---|
IOT_API_BASE_URL | 是 | - | Rogo物联网云API基础URL |
BASE_URL | 是(prod) | http://localhost:3001 | 此服务器的公共URL(OAuth发现) |
REDIS_HOST | 是的 | localhost | Redis主机名 |
PORT | 没有 | 3001 | 服务器端口 |
MCP_SESSION_TTL | 没有 | 3600 | 会话TTL(秒) |
看 .env.example 查看带有描述的完整列表。
跑步
# Development (hot reload)
npm run start:dev
# Production build
npm run build
npm run start:prod码头工人
# Production
docker compose up -d
# Staging
docker compose -f docker-compose.staging.yml up -d认证
服务器为MCP客户端身份验证实现了OAuth 2.1:
- 客户端通过以下方式发现身份验证端点
/.well-known/oauth-authorization-server - 用户通过以下方式进行身份验证
/authorize流(代理到Rogo IoT Cloud) - 客户端在以下地址交换JWT令牌的授权码
/token - 不记名代币包含在所有后续代币中
/mcp/:projectApiKey请求:
项目结构
src/
├── main.ts # Bootstrap
├── app.module.ts # Root module
├── mcp/ # MCP protocol — controller, sessions, server factory
├── tools/ # 15 MCP tool definitions + executor
│ ├── definitions/ # Individual tool files
│ └── services/ # Registry + executor
├── resources/ # MCP resource definitions
├── auth/ # OAuth 2.1 flow
├── discovery/ # .well-known endpoints
├── proxy/ # IoT API proxy layer (IotApiService)
├── redis/ # Redis client module (global)
└── common/ # Shared utils, constants, decorators发展
npm test # Run tests
npx tsc --noEmit # Type check
npm run lint # Lint
npm run format # Format with Prettier部署
通过GitHub操作进行CI/CD:
- 推至
main→ 构建Docker镜像→ 部署到生产环境 - PR到
main→ 构建Docker镜像→ 部署到预发布环境
看 docs/DEPLOYMENT.md 获取完整的操作手册。
技术栈
- 运行时:NestJS 10+TypeScript
- MCP-SDK:
@modelcontextprotocol/sdk(流式HTTP传输) - 会话存储:Redis(ioredis)
- 验证:Zod v4
- 认证:OAuth 2.1+JWT
- 测试:杰斯特
- 部署:Docker+GitHub操作
许可证
麻省理工学院
