项目简介
ThingsBoard MCP Server是一个基于 Model Context Protocol (MCP) 的后端服务,旨在为大型语言模型 (LLM) 和AI代理提供与ThingsBoard IoT平台交互的自然语言接口。通过此服务器,AI系统能够以标准化的方式访问和操作ThingsBoard中的设备数据、遥测、告警等信息,从而实现智能化的物联网管理和数据分析。
主要功能点
- 实体操作: 允许AI查询和管理ThingsBoard中的设备、资产、客户和用户等信息,包括查看详情、凭证、关系等。
- 遥测数据管理: 支持AI获取实体的属性键、值,以及时间序列数据,并能进行聚合查询,甚至保存新的属性或遥测数据。
- 关系管理: 探索和导航ThingsBoard实体之间的关系,支持基于方向的查询。
- 告警管理: 获取和分析ThingsBoard中产生的告警信息,包括告警详情、类型和严重程度。
- 系统管理: 提供AI访问和管理ThingsBoard系统设置、安全配置、版本控制以及系统使用统计等能力。
- 通过自然语言与ThingsBoard交互: 将复杂的ThingsBoard API操作抽象为LLM可理解的工具调用,实现对话式数据查询和操作。
安装步骤
- 准备 ThingsBoard 实例: 确保您有一个正在运行的 ThingsBoard 实例。您可以选择本地部署、ThingsBoard 社区版、专业版、演示版或 ThingsBoard Cloud 等。
- 获取 ThingsBoard 凭据: 准备一个拥有足够权限的 ThingsBoard 用户账号和密码。
- 部署 MCP 服务器:
- 使用 Docker (推荐):
- SSE 模式 (默认): 拉取镜像:'docker pull mcp/thingsboard' 运行容器:'docker run --rm -p 8000:8000 -e THINGSBOARD_URL=<您的ThingsBoard实例URL> -e THINGSBOARD_USERNAME=<您的用户名> -e THINGSBOARD_PASSWORD=<您的密码> mcp/thingsboard'
- STDIO 模式: 拉取镜像:'docker pull mcp/thingsboard' 运行容器:'docker run --rm -i -e THINGSBOARD_URL=<您的ThingsBoard实例URL> -e THINGSBOARD_USERNAME=<您的用户名> -e THINGSBOARD_PASSWORD=<您的密码> -e SPRING_AI_MCP_SERVER_STDIO=true -e SPRING_WEB_APPLICATION_TYPE=none mcp/thingsboard'
- 从源代码构建:
- 先决条件: 确保您的系统已安装 Java 17 或更高版本,以及 Maven 3.6 或更高版本。
- 构建步骤:
- 克隆 ThingsBoard MCP 服务器的 GitHub 仓库。
- 在项目根目录下执行 Maven 命令构建项目:'mvn clean install -DskipTests'
- 构建成功后,JAR 文件将位于 'target' 目录下,例如 'target/mcp-thingsboard-server-1.0.0.jar'。
- 运行服务器:
- STDIO 模式: 'java -Dspring.ai.mcp.server.stdio=true -Dspring.main.web-application-type=none -jar ./target/mcp-thingsboard-server-1.0.0.jar'
- SSE 模式: 'java -jar ./target/mcp-thingsboard-server-1.0.0.jar'
- 使用 Docker (推荐):
服务器配置(供 MCP 客户端配置)
MCP 客户端(例如 Claude Desktop 或 Cursor)需要通过配置来启动和连接 MCP 服务器。您需要在客户端的配置文件中添加以下信息。
-
配置 Docker 镜像启动的 MCP 服务器
- 服务器名称: 'thingsboard' (这个名称将用于在您的 MCP 客户端中引用此服务器)
- 启动命令: 'docker' (用于执行 Docker 命令)
- 命令参数:
- 'run': 运行一个容器
- '-i': 保持标准输入流开放 (STDIO 模式需要)
- '--rm': 容器退出时自动删除
- '-e THINGSBOARD_URL': ThingsBoard 实例的 URL (例如 'https://demo.thingsboard.io')
- '-e THINGSBOARD_USERNAME': 登录 ThingsBoard 的用户名
- '-e THINGSBOARD_PASSWORD': 登录 ThingsBoard 的密码
- '-e SPRING_AI_MCP_SERVER_STDIO': 启用 STDIO 模式,设置为 'true'
- '-e SPRING_WEB_APPLICATION_TYPE': 设置 Spring 应用类型为 'none',以避免 Web 服务器冲突
- 'mcp/thingsboard': 要运行的 Docker 镜像名称
-
配置 JAR 文件启动的 MCP 服务器
- 服务器名称: 'thingsboard'
- 启动命令: 'java' (用于执行 Java 应用程序)
- 命令参数:
- '-jar': 指定运行 JAR 文件
- '/absolute/path/to/mcp-thingsboard-server-1.0.0.jar': MCP 服务器 JAR 文件的绝对路径
- 环境变量:
- 'THINGSBOARD_URL': ThingsBoard 实例的 URL
- 'THINGSBOARD_USERNAME': 登录 ThingsBoard 的用户名
- 'THINGSBOARD_PASSWORD': 登录 ThingsBoard 的密码
- 'SPRING_AI_MCP_SERVER_STDIO': 启用 STDIO 模式,设置为 'true'
- 'SPRING_WEB_APPLICATION_TYPE': 设置 Spring 应用类型为 'none'
请根据您选择的部署方式,将上述信息适配到您的 MCP 客户端配置文件中,并将尖括号 '<>' 中的占位符替换为您的实际信息。
基本使用方法
部署并配置好 ThingsBoard MCP 服务器后,您可以通过支持 MCP 协议的 LLM 客户端(如 Claude Desktop, Cursor)与之连接。一旦连接成功,您就可以直接使用自然语言向 LLM 提问或发出指令,例如:
- “查询设备 'my-device-id' 的最新温度是多少?”
- “列出所有处于告警状态的资产。”
- “获取客户 'customer-id' 下的所有设备名称。”
- “保存设备 'device-id' 的属性 '{"firmwareVersion":"1.2.3"}'。”
LLM 将会利用 ThingsBoard MCP 服务器提供的工具来执行相应的 ThingsBoard API 调用,并返回结构化的数据或操作结果,从而实现对话式的数据查询和操作。
信息
分类
AI与计算