小智 MCP 连接说明

什么是小智 Token?

小智 Token 是连接 MBE(米塞斯行为引擎)与小智终端的授权凭证


反向 MCP 连接模式

小智采用反向连接模式,与传统的服务器-客户端模式相反:

┌─────────────────────────────────────────────────────────────────┐
│                    小智 MCP 连接架构                             │
├─────────────────────────────────────────────────────────────────┤
│                                                                 │
│  【传统模式】                                                   │
│  客户端 ──────────▶ 服务器                                      │
│  (小智)              (MBE)                                      │
│  ❌ 需要MBE有公网IP,小智才能连进来                             │
│                                                                 │
│  【小智反向MCP模式】                                            │
│  MBE客户端 ──────────▶ 小智云服务器 ◀────────── 小智终端       │
│  (主动连出)           (中转站)                 (物联网设备)     │
│  ✅ MBE无需公网IP,只要能访问外网即可                           │
│                                                                 │
└─────────────────────────────────────────────────────────────────┘

Token 的具体作用

wss://api.xiaozhi.me/mcp/?token=eyJhbGciOiJFUzI1NiIsInR5cCI6IkpXVCJ9...
                              ↑
                           这是 Token
作用 说明
身份认证 证明 MBE 是这台小智设备的授权服务
设备绑定 Token 内含 userIdagentId,绑定特定设备
安全隔离 不同用户/设备的 Token 不同,互不干扰
有效期控制 Token 有过期时间(通常1年),可以撤销

Token 内容解析

Token 采用 JWT 格式,解码后的内容:

{
  "userId": 404681,           // 小智账户ID
  "agentId": 1213656,         // 智能体ID(你的小智设备)
  "endpointId": "agent_1213656",
  "purpose": "mcp-endpoint",
  "iat": 1768721973,          // 签发时间
  "exp": 1800279573           // 过期时间(约1年后)
}

为什么采用反向连接?

问题 传统方案 小智反向MCP方案
MBE 在内网 需要公网IP或内网穿透 ✅ 不需要
小智是物联网设备 需要配置服务器地址 ✅ 只配云端
安全性 暴露服务器端口 ✅ 只出不进,更安全
NAT穿透 复杂 ✅ 自动处理

连接流程

1. 用户在小智APP生成MCP Token
         ↓
2. 将Token配置到MBE管理界面
         ↓
3. MBE客户端(mbe-mcp-client)启动
         ↓
4. 主动连接到 wss://api.xiaozhi.me/mcp/?token=xxx
         ↓
5. 小智云服务器验证Token
         ↓
6. 建立WebSocket长连接
         ↓
7. 小智终端的请求通过云服务器转发到MBE

获取 Token 的步骤

方法一:小智APP

  1. 打开小智 APP
  2. 进入 设备设置MCP 配置
  3. 点击 生成接入地址
  4. 复制完整的 wss://api.xiaozhi.me/mcp/?token=... 地址

方法二:小智开放平台

  1. 登录 小智开放平台
  2. 进入 我的设备MCP管理
  3. 创建新的 MCP 接入点
  4. 复制生成的 Token

在 MBE 中配置 Token

方法一:管理界面

  1. 访问 http://localhost:8000/api/knowledge/admin/ui
  2. 点击 🔗 小智连接 标签
  3. 粘贴完整的 WebSocket 地址
  4. 填写设备名称(如"卡卡"、"MM")
  5. 点击 添加

方法二:配置文件

编辑 knowledge_bases/xiaozhi_tokens.json

{
  "tokens": [
    {
      "id": "user_xxx",
      "name": "我的小智",
      "endpoint": "wss://api.xiaozhi.me/mcp/?token=eyJ...",
      "enabled": true
    }
  ]
}

多设备支持

MBE 支持同时连接多个小智设备:

{
  "tokens": [
    {
      "id": "user_50cde7a8",
      "name": "卡卡",
      "endpoint": "wss://api.xiaozhi.me/mcp/?token=...",
      "enabled": true
    },
    {
      "id": "user_03663817",
      "name": "MM",
      "endpoint": "wss://api.xiaozhi.me/mcp/?token=...",
      "enabled": true
    }
  ]
}

每个设备独立连接,互不干扰。


常见问题

Q: Token 过期了怎么办?

A: 在小智APP重新生成新的MCP接入地址,然后在MBE管理界面更新即可。

Q: 可以多人共用一个Token吗?

A: 不建议。每个Token绑定特定设备,共用可能导致消息混乱。

Q: MBE重启后需要重新配置吗?

A: 不需要。Token保存在 xiaozhi_tokens.json 文件中,重启后自动加载。

Q: 如何检查连接状态?

A: 查看 mbe-mcp-client 容器日志:

docker logs mbe-mcp-client --tail 20

正常状态会显示 Received message: {"method": "ping"} 的心跳消息。


安全建议

  1. 不要分享 Token - Token 相当于设备密码
  2. 定期检查 - 在小智APP查看MCP连接状态
  3. 及时撤销 - 如果Token泄露,立即在小智APP撤销并重新生成
  4. 使用HTTPS - Token传输应通过加密通道

文档版本: v1.0
最后更新: 2026-01-20