产品定价 立即试用
PE边缘
入门 文档 安装 架构
常见问题
目录

MCP 服务器

Overview

ThingsBoard MCP Server为LLM和AI代理与ThingsBoard物联网平台交互提供自然语言界面

该服务器实现了Model Context Protocol (MCP),使AI系统可通过自然语言命令访问和操作ThingsBoard中的数据。通过该集成,您可以:

  • 使用对话式语言查询实体(设备、资产、客户等)数据与遥测
  • 通过AI助手管理实体
  • 使用AI工具分析物联网数据并生成报告
  • 通过AI驱动的工作流自动化ThingsBoard操作

服务器可与支持MCP协议的Claude Desktop、Cursor及其他AI应用无缝集成。

要求

开始前请确保具备以下条件:

  • ThingsBoard Edge instance up and running

  • 认证凭据 - 在ThingsBoard实例上具有相应权限的有效用户名和密码

请记下ThingsBoard URL、用户名和密码 - 后续步骤中将以your_thingsboard_urlyour_usernameyour_password使用。

快速开始指南

  1. 配置MCP客户端:将ThingsBoard MCP服务器添加到客户端配置(见客户端配置
  2. 开始使用自然语言:通过MCP客户端与ThingsBoard实例交互

功能特性

实体操作

  • 设备:查看设备详情、凭据、配置并管理设备关系
  • 资产:查看并管理资产、资产配置和资产关系
  • 客户:访问客户信息、标题并管理客户关系
  • 用户:管理用户、令牌、激活链接和用户分配

遥测管理

  • 属性访问:按作用域获取任意实体的属性键和值
  • 时序数据访问:获取支持多种聚合选项的时序数据
  • 遥测插入/更新:保存属性或时序数据,支持可选TTL设置

关系

通过基于方向的查询发现和导航实体间关系。

告警

获取特定实体的告警、告警类型及严重程度信息。

管理

  • 系统设置:访问并管理管理设置
  • 安全设置:查看安全策略与JWT配置
  • 版本控制:管理仓库与自动提交设置
  • 系统信息:检查更新并获取使用统计

安装

本MCP服务器与ThingsBoard Edge配合使用。安装需提供ThingsBoard Edge实例URL及有效凭据。

ThingsBoard Account

安装MCP服务器前请确保:

  • 能访问ThingsBoard Edge实例

  • 具有足够权限的用户账户
  • 该账户的用户名和密码

Docker Image

建议使用Docker Hub上的预构建Docker镜像快速开始。

Server Modes

ThingsBoard MCP Server支持两种运行模式:

  • STDIO Mode(标准输入/输出):服务器通过标准输入/输出流直接通信
  • SSE Mode(Server-Sent Events):服务器作为HTTP服务运行,供客户端连接

Running in STDIO Mode (Default)

STDIO模式下,必须使用 -i 参数保持stdin打开:

1
2
docker pull thingsboard/mcp
docker run --rm -i -e THINGSBOARD_URL=<your_thingsboard_url> -e THINGSBOARD_USERNAME=<your_username> -e THINGSBOARD_PASSWORD=<your_password> thingsboard/mcp

Running in SSE Mode

SSE模式下,需使用 -p 参数暴露8000端口并显式覆盖默认设置:

1
2
docker pull thingsboard/mcp
docker run --rm -p 8000:8000 -e THINGSBOARD_URL=<your_thingsboard_url> -e THINGSBOARD_USERNAME=<your_username> -e THINGSBOARD_PASSWORD=<your_password> -e SPRING_AI_MCP_SERVER_STDIO=false -e SPRING_WEB_APPLICATION_TYPE=servlet thingsboard/mcp

Build from Sources

也可源码安装JAR并直接运行ThingsBoard MCP Server。

Prerequisites

  • Java 17或更高版本
  • Maven 3.6或更高版本

Build Steps

  • 克隆仓库
  • 构建项目:
1
mvn clean install -DskipTests
  • JAR文件将生成于target目录:
1
./target/thingsboard-mcp-server-1.0.0.jar
  • 使用JAR运行服务器:
1
2
# For STDIO Mode
java -jar ./target/thingsboard-mcp-server-1.0.0.jar
1
2
# For SSE Mode
java -Dspring.ai.mcp.server.stdio=false Dspring.main.web-application-type=servlet -jar ./target/thingsboard-mcp-server-1.0.0.jar

Client Configuration

若要在MCP客户端启动时(如Claude Desktop)以容器方式启动服务器,需在客户端设置中添加相应配置。

Docker Configuration

若使用Docker镜像,请在 claude_desktop_config.json 中使用如下配置:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
{
  "mcpServers": {
    "thingsboard": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "-e",
        "THINGSBOARD_URL",
        "-e",
        "THINGSBOARD_USERNAME",
        "-e",
        "THINGSBOARD_PASSWORD",
        "-e",
        "LOGGING_PATTERN_CONSOLE",
        "thingsboard/mcp"
      ],
      "env": {
        "THINGSBOARD_URL": "<thingsboard_url>",
        "THINGSBOARD_USERNAME": "<thingsboard_username>",
        "THINGSBOARD_PASSWORD": "<thingsboard_password>",
        "LOGGING_PATTERN_CONSOLE": ""
      }
    }
  }
}

二进制配置

若源码安装了JAR文件,请在 claude_desktop_config.json 中使用如下配置:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
{
  "mcpServers": {
    "thingsboard": {
      "command": "java",
      "args": [
        "-jar",
        "/absolute/path/to/thingsboard-mcp-server-1.0.0.jar"
      ],
      "env": {
        "THINGSBOARD_URL": "<thingsboard_url>",
        "THINGSBOARD_USERNAME": "<thingsboard_username>",
        "THINGSBOARD_PASSWORD": "<thingsboard_password>",
        "LOGGING_PATTERN_CONSOLE": ""
      }
    }
  }
}

环境变量

MCP服务器连接ThingsBoard实例需设置以下环境变量:

变量 说明 默认值
THINGSBOARD_URL ThingsBoard实例的基础URL  
THINGSBOARD_USERNAME 用于向ThingsBoard认证的用户名  
THINGSBOARD_PASSWORD 用于向ThingsBoard认证的密码  
THINGSBOARD_LOGIN_INTERVAL_SECONDS 登录会话刷新间隔(秒) 1800
SPRING_WEB_APPLICATION_TYPE Spring应用类型(none或servlet) none
SPRING_AI_MCP_SERVER_STDIO 启用/禁用标准I/O通信 true
SPRING_AI_MCP_SERVER_SSE_ENDPOINT Server-Sent Events(SSE)端点URL /sse
SPRING_AI_MCP_SERVER_SSE_MESSAGE_ENDPOINT Server-Sent Events消息端点URL /mcp/message
SERVER_PORT HTTP服务器端口号 8080

这些变量可通过以下方式设置:

  • 直接在Docker命令行中用 -e 参数指定
  • 或在MCP客户端配置的 env 块中设置

可用工具

ThingsBoard MCP Server提供多种可通过自然语言命令使用的工具。按类别组织如下。

设备工具

工具 说明
getDeviceById 根据提供的设备ID获取设备对象。
getDeviceCredentialsByDeviceId 根据设备ID获取设备凭据。若创建设备时未指定凭据,平台将生成随机’ACCESS_TOKEN’凭据。
getTenantDevices 返回租户拥有的设备分页结果。
getTenantDevice 按名称获取租户设备。设备名称为设备的唯一属性。
getCustomerDevices 返回分配给客户的设备对象分页结果。
getUserDevices 返回当前用户可用的设备对象分页结果。
getDevicesByIds 根据ID列表获取设备。请求的设备须由租户拥有或分配给客户。
getDevicesByEntityGroupId 返回属于指定实体组ID的设备对象分页结果。

资产工具

工具 说明
getAssetById 根据提供的资产ID获取资产对象。
getTenantAssets 返回租户拥有的资产分页结果。
getTenantAsset 按名称获取租户资产。资产名称为资产的唯一属性。
getCustomerAssets 返回分配给客户的资产对象分页结果。
getUserAssets 返回当前用户可用的资产对象分页结果。
getAssetsByIds 根据ID列表获取资产。请求的资产须由租户拥有或分配给客户。
getAssetsByEntityGroupId 返回属于指定实体组ID的资产对象分页结果。

客户工具

工具 说明
getCustomerById 根据提供的客户ID获取客户对象。
getCustomers 返回租户拥有的客户分页结果。
getTenantCustomer 使用客户标题获取客户。
getUserCustomers 返回用户可用的客户分页结果。
getCustomersByEntityGroupId 返回属于指定实体组ID的客户对象分页结果。

用户工具

工具 说明
getUserById 根据提供的用户ID获取用户对象。
getUsers 返回租户或客户拥有的用户分页结果。
getTenantAdmins 返回分配给指定租户的租户管理员用户分页结果。
getCustomerUsers 返回分配给指定客户的用户分页结果。
getAllCustomerUsers 返回当前租户下权限为’CUSTOMER_USER’的用户分页结果。
getUsersForAssign 返回可分配给指定alarmId的用户数据对象分页结果。
getUsersByEntityGroupId 返回属于指定实体组ID的用户对象分页结果。

告警工具

工具 说明
getAlarmById 根据提供的告警ID获取告警对象。
getAlarmInfoById 根据提供的告警ID获取告警信息对象。
getAlarms 获取所选实体的告警分页结果。
getAllAlarms 获取属于当前用户所有的告警分页结果。
getHighestAlarmSeverity 根据发起者及可选状态过滤获取最高告警严重程度。
getAlarmTypes 根据租户拥有或分配给客户的告警获取唯一告警类型集合。

实体组工具

工具 说明
getEntityGroupById 根据提供的实体组ID获取实体组对象。
getEntityGroupsByType 根据提供的实体类型获取实体组信息对象列表。
getEntityGroupByOwnerAndNameAndType 根据提供的所有者、类型和名称获取实体组对象。
getEntityGroupsByOwnerAndType 根据提供的所有者ID和实体类型获取实体组信息对象列表。
getEntityGroupsForEntity 返回包含指定实体ID的组列表。
getEntityGroupsByIds 根据提供的实体组ID列表获取实体组信息对象列表。

关系工具

工具 说明
getRelation 若存在,返回两个指定实体间的关系对象。
findByFrom 按’from’方向返回指定实体的关系对象列表。
findInfoByFrom 按’from’方向返回指定实体的关系信息对象列表。
findByTo 按’to’方向返回指定实体的关系对象列表。
findInfoByTo 按’to’方向返回指定实体的关系信息对象列表。

遥测工具

工具 说明
getAttributeKeys 获取指定实体的所有属性键。
getAttributeKeysByScope 获取指定实体及作用域的所有属性键。
getAttributes 获取指定实体的属性。
getAttributesByScope 获取指定实体及作用域的属性。
getTimeseriesKeys 获取指定实体的所有时序键。
getLatestTimeseries 获取指定实体及键的最新时序值。
getTimeseries 获取指定实体、键及时间范围的时序数据。
saveDeviceAttributes 保存设备属性。
saveEntityAttributesV1 保存实体属性(版本1)。
saveEntityAttributesV2 保存实体属性(版本2)。
saveEntityTelemetry 保存实体遥测数据。
saveEntityTelemetryWithTTL 保存带生存时间(TTL)的实体遥测数据。

管理工具

工具 说明
getAdminSettings 使用指定字符串键获取管理设置对象。
getSecuritySettings 获取包含密码策略、锁定限制等的安全设置对象。
getSystemInfo 获取系统主要信息。
getUsageInfo 获取当前租户的使用统计。