物联网云MCP网关

MCP网关服务器,连接AI助手与Rogo物联网云平台,实现AI客户端查询和控制物联网设备的功能。

  • by dadadadas111
  • TypeScript
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 dadadadas111/iot-cloud-mcp

使用说明

物联网云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:

  1. 客户端通过以下方式发现身份验证端点 /.well-known/oauth-authorization-server
  2. 用户通过以下方式进行身份验证 /authorize 流(代理到Rogo IoT Cloud)
  3. 客户端在以下地址交换JWT令牌的授权码 /token
  4. 不记名代币包含在所有后续代币中 /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操作

许可证

麻省理工学院