项目简介

ThingsBoard MCP Server是一个基于 Model Context Protocol (MCP) 的后端服务,旨在为大型语言模型 (LLM) 和AI代理提供与ThingsBoard IoT平台交互的自然语言接口。通过此服务器,AI系统能够以标准化的方式访问和操作ThingsBoard中的设备数据、遥测、告警等信息,从而实现智能化的物联网管理和数据分析。

主要功能点

  • 实体操作: 允许AI查询和管理ThingsBoard中的设备、资产、客户和用户等信息,包括查看详情、凭证、关系等。
  • 遥测数据管理: 支持AI获取实体的属性键、值,以及时间序列数据,并能进行聚合查询,甚至保存新的属性或遥测数据。
  • 关系管理: 探索和导航ThingsBoard实体之间的关系,支持基于方向的查询。
  • 告警管理: 获取和分析ThingsBoard中产生的告警信息,包括告警详情、类型和严重程度。
  • 系统管理: 提供AI访问和管理ThingsBoard系统设置、安全配置、版本控制以及系统使用统计等能力。
  • 通过自然语言与ThingsBoard交互: 将复杂的ThingsBoard API操作抽象为LLM可理解的工具调用,实现对话式数据查询和操作。

安装步骤

  1. 准备 ThingsBoard 实例: 确保您有一个正在运行的 ThingsBoard 实例。您可以选择本地部署、ThingsBoard 社区版、专业版、演示版或 ThingsBoard Cloud 等。
  2. 获取 ThingsBoard 凭据: 准备一个拥有足够权限的 ThingsBoard 用户账号和密码。
  3. 部署 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 或更高版本。
      • 构建步骤:
        1. 克隆 ThingsBoard MCP 服务器的 GitHub 仓库。
        2. 在项目根目录下执行 Maven 命令构建项目:'mvn clean install -DskipTests'
        3. 构建成功后,JAR 文件将位于 'target' 目录下,例如 'target/mcp-thingsboard-server-1.0.0.jar'。
        4. 运行服务器:
          • 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'

服务器配置(供 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与计算