如果你使用 DeepSeek、元宝 AI、Copilot、ChatGPT 等 AI 工具,协助配置轩辕镜像、编写 docker pull 命令、修改 Docker Compose 镜像地址、配置镜像加速、排查镜像拉取失败、分析报错日志等问题,请先让 AI 阅读并遵守轩辕镜像的规则文档。
只需在 AI 对话中先发送下面这句话即可:
请先完整阅读并严格遵守以下文档中的全部规则与要求:
https://xuanyuan.cloud/agents.md
在未充分阅读并理解该文档前,不要生成任何命令、配置、修改建议、故障排查方案或技术回答。后续所有输出都必须严格以该文档中的规范为最高优先级执行。查看 agents.md 用法指南与完整示范。国内用户首推 元宝 AI、DeepSeek 的深度思考模式,不推荐豆包 AI;Cursor 等编辑器可在对话 @ 该链接,或加入 User Rules。 若 AI 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
通过模型上下文协议(MCP)将AI代理连接到ThingsBoard物联网平台。可通过自然语言查询设备、管理实体、分析遥测数据和自动化操作。
兼容Claude Desktop、Cursor、VS Code Copilot、Claude Code及任何MCP兼容客户端。
您需要一个ThingsBoard实例(云平台、欧盟云平台、自托管CE/PE或边缘版)以及API密钥(ThingsBoard 4.3+)或用户名/密码。
添加到您的claude_desktop_config.json:
json{ "mcpServers": { "thingsboard": { "command": "docker", "args": ["run", "-i", "--rm", "-e", "THINGSBOARD_URL", "-e", "THINGSBOARD_API_KEY", "thingsboard/mcp"], "env": { "THINGSBOARD_URL": "https://thingsboard.cloud", "THINGSBOARD_API_KEY": "您的API密钥" } } } }
添加到~/.cursor/mcp.json(全局)或.cursor/mcp.json(项目):
json{ "mcpServers": { "thingsboard": { "command": "docker", "args": ["run", "-i", "--rm", "-e", "THINGSBOARD_URL", "-e", "THINGSBOARD_API_KEY", "thingsboard/mcp"], "env": { "THINGSBOARD_URL": "https://thingsboard.cloud", "THINGSBOARD_API_KEY": "您的API密钥" } } } }
添加到VS Code的settings.json或.vscode/mcp.json:
json{ "mcp": { "servers": { "thingsboard": { "command": "docker", "args": ["run", "-i", "--rm", "-e", "THINGSBOARD_URL", "-e", "THINGSBOARD_API_KEY", "thingsboard/mcp"], "env": { "THINGSBOARD_URL": "https://thingsboard.cloud", "THINGSBOARD_API_KEY": "您的API密钥" } } } } }
bashclaude mcp add thingsboard \ -e THINGSBOARD_URL=https://thingsboard.cloud \ -e THINGSBOARD_API_KEY=您的API密钥 \ -- docker run -i --rm -e THINGSBOARD_URL -e THINGSBOARD_API_KEY thingsboard/mcp
启动服务器:
bashdocker run --rm -p 8000:8000 \ -e THINGSBOARD_URL=https://thingsboard.cloud \ -e THINGSBOARD_API_KEY=您的API密钥 \ -e SPRING_AI_MCP_SERVER_STDIO=false \ -e SPRING_WEB_APPLICATION_TYPE=servlet \ thingsboard/mcp
然后将MCP客户端指向http://localhost:8000/sse。
旧版认证:如果您的ThingsBoard版本早于4.3,请使用
THINGSBOARD_USERNAME和THINGSBOARD_PASSWORD代替THINGSBOARD_API_KEY。
使用自然语言提问,从您的ThingsBoard实例获取结构化结果:
| 查询设备和实体 | 分析时序数据 |
| !https://raw.githubusercontent.com/thingsboard/thingsboard-mcp/refs/heads/master/images/get_my_devices_example.png | !https://raw.githubusercontent.com/thingsboard/thingsboard-mcp/refs/heads/master/images/analyze_data_example.png |
| 生成和保存遥测数据 | 获取异常分析 |
| !https://raw.githubusercontent.com/thingsboard/thingsboard-mcp/refs/heads/master/images/generate_sample_data_example.png | !https://raw.githubusercontent.com/thingsboard/thingsboard-mcp/refs/heads/master/images/analyze_result_example.png |
120+工具覆盖10个工具组:
bashdocker pull thingsboard/mcp
Docker镜像支持两种传输模式:
参见快速开始获取使用示例。
bashwget https://github.com/thingsboard/mcp-server/releases/download/v2.1.0/thingsboard-mcp-server-2.1.0.jar
运行:
bash# 标准输入输出模式 java -jar thingsboard-mcp-server-2.1.0.jar # SSE模式 java -Dspring.ai.mcp.server.stdio=false -Dspring.main.web-application-type=servlet -jar thingsboard-mcp-server-2.1.0.jar
如果使用JAR文件而非Docker,在claude_desktop_config.json中使用以下配置:
json{ "mcpServers": { "thingsboard": { "command": "java", "args": ["-jar", "/绝对路径/thingsboard-mcp-server-2.1.0.jar"], "env": { "THINGSBOARD_URL": "https://thingsboard.cloud", "THINGSBOARD_API_KEY": "您的API密钥" } } } }
需要Java 17+和Maven 3.6+。
bashgit clone https://github.com/thingsboard/mcp-server.git cd mcp-server mvn clean install -DskipTests java -jar target/thingsboard-mcp-server-2.1.0.jar
| 变量 | 描述 | 默认值 |
|---|---|---|
THINGSBOARD_URL | ThingsBoard实例的基础URL | 必需 |
THINGSBOARD_API_KEY | 认证用API密钥(4.3+推荐) | |
THINGSBOARD_USERNAME | 认证用用户名(旧版) | |
THINGSBOARD_PASSWORD | 认证用密码(旧版) | |
THINGSBOARD_LOGIN_INTERVAL_SECONDS | 会话刷新间隔 | 1800 |
HTTP_BIND_ADDRESS | HTTP绑定地址(SSE模式) | 127.0.0.1 |
HTTP_BIND_PORT | HTTP端口(SSE模式) | 8000 |
SPRING_AI_MCP_SERVER_STDIO | 启用标准输入输出传输 | true |
SPRING_WEB_APPLICATION_TYPE | none用于标准输入输出模式,servlet用于SSE模式 | none |
SPRING_AI_MCP_SERVER_SSE_ENDPOINT | SSE端点路径 | /sse |
SPRING_AI_MCP_SERVER_SSE_MESSAGE_ENDPOINT | SSE消息端点路径 | /mcp/message |
| 变量 | 描述 | 默认值 |
|---|---|---|
THINGSBOARD_CONNECTION_MAX_RETRIES | 最大连接重试次数 | 3 |
THINGSBOARD_CONNECTION_RETRY_DELAY_SECONDS | 重试间隔(秒) | 5 |
THINGSBOARD_CONNECTION_CONNECT_TIMEOUT_SECONDS | HTTP连接超时(秒) | 10 |
THINGSBOARD_CONNECTION_READ_TIMEOUT_SECONDS | HTTP读取超时(秒) | 60 |
LOG_LEVEL_APP | 应用日志级别 | info |
LOG_LEVEL_TOOLS | 工具执行日志级别 | info |
LOG_LEVEL_TOOL_RESPONSE | 工具响应日志级别 | info |
LOGGING_PATTERN_CONSOLE | Logback控制台输出格式 | %d{yyyy-MM-dd HH:mm:ss} | %-5level | %logger{1} | %msg%n |
LOGGING_CONSOLE_TARGET | 日志输出目标 | System.err |
服务器提供120+工具,可能超出某些客户端的上下文限制。可禁用不需要的工具组:
| 变量 | 工具组 | 工具数量 | 默认值 |
|---|---|---|---|
THINGSBOARD_TOOLS_EDQ | 实体数据查询+指南 | 40 | true |
THINGSBOARD_TOOLS_TELEMETRY | 遥测与属性 | 11 | true |
THINGSBOARD_TOOLS_DEVICE | 设备 | 11 | true |
THINGSBOARD_TOOLS_ASSET | 资产 | 8 | true |
THINGSBOARD_TOOLS_ALARM | 告警 | 9 | true |
THINGSBOARD_TOOLS_OTA | OTA包 | 11 | true |
THINGSBOARD_TOOLS_RELATION | 关系 | 8 | true |
THINGSBOARD_TOOLS_CUSTOMER | 客户 | 7 | true |
THINGSBOARD_TOOLS_USER | 用户 | 9 | true |
THINGSBOARD_TOOLS_GROUP | 实体组(仅专业版) | 10 | true |
示例 — 减少到约50个工具以适应上下文有限的客户端:
json{ "env": { "THINGSBOARD_TOOLS_EDQ": "false", "THINGSBOARD_TOOLS_OTA": "false", "THINGSBOARD_TOOLS_GROUP": "false", "THINGSBOARD_TOOLS_USER": "false" } }
| 工具 | 描述 |
|---|---|
createOrUpsertDevice | 按名称创建或更新设备。大多数设备任务的主要工具。 |
saveDevice | 从原始JSON创建或更新设备对象。高级工具。 |
deleteDevice | 按ID删除设备。 |
getDeviceById | 根据提供的设备ID获取设备对象。 |
getDeviceCredentialsByDeviceId | 按设备ID获取设备凭证。 |
getTenantDevices | 返回租户拥有的设备分页列表。 |
getTenantDevice | 按名称获取租户设备。 |
getCustomerDevices | 返回分配给客户的设备分页列表。 |
getUserDevices (专业版) | 返回当前用户可用的设备分页列表。 |
getDevicesByIds | 按ID获取多个设备。 |
getDevicesByEntityGroupId (专业版) | 返回指定实体组中的设备分页列表。 |
| 工具 | 描述 |
|---|---|
saveAsset | 创建或更新资产对象。 |
deleteAsset | 按ID删除资产。 |
getAssetById | 按ID获取资产对象。 |
getTenantAssets | 返回租户拥有的资产分页列表。 |
getTenantAsset | 按名称获取租户资产。 |
getCustomerAssets | 返回分配给客户的资产分页列表。 |
getUserAssets (专业版) | 返回当前用户可用的资产分页列表。 |
getAssetsByEntityGroupId (专业版) | 返回指定实体组中的资产分页列表。 |
| 工具 | 描述 |
|---|---|
saveCustomer | 创建或更新客户对象。 |
deleteCustomer | 按ID删除客户。 |
getCustomerById | 按ID获取客户对象。 |
getCustomers | 返回租户拥有的客户分页列表。 |
getTenantCustomer | 按标题获取客户。 |
getUserCustomers (专业版) | 返回用户可用的客户分页列表。 |
getCustomersByEntityGroupId (专业版) | 返回指定实体组中的客户分页列表。 |
| 工具 | 描述 |
|---|---|
saveUser | 创建或更新用户对象。 |
deleteUser | 按ID删除用户。 |
getUserById | 按ID获取用户对象。 |
getUsers | 返回租户或客户拥有的用户分页列表。 |
getTenantAdmins | 返回租户管理员用户分页列表。 |
getCustomerUsers | 返回分配给客户的用户分页列表。 |
getAllCustomerUsers (专业版) | 返回当前租户的所有客户用户分页列表。 |
getUsersForAssign | 返回可分配给告警的用户。 |
getUsersByEntityGroupId (专业版) | 返回指定实体组中的用户分页列表。 |
| 工具 | 描述 |
|---|---|
saveAlarm | 创建或更新告警对象。 |
deleteAlarm | 按ID删除告警。 |
ackAlarm | 确认告警。 |
clearAlarm | 清除告警。 |
getAlarmInfoById | 按ID获取告警信息(包括发起者名称)。 |
getAlarms | 获取所选实体的告警分页列表。 |
getAllAlarms | 获取当前用户所有者的告警分页列表。 |
getHighestAlarmSeverity | 按发起者获取最高告警严重程度。 |
getAlarmTypes | 获取唯一的告警类型。 |
| 工具 | 描述 |
|---|---|
saveOtaPackageInfo | 创建或更新OTA包信息。 |
saveOtaPackageData | 从文件路径上传OTA包二进制数据。 |
downloadOtaPackage | 将OTA包二进制数据下载到本地文件路径。 |
getOtaPackageInfoById | 按ID获取OTA包信息。 |
getOtaPackageById | 按ID获取OTA包。 |
getOtaPackages | 获取OTA包(分页)。 |
| `getO |
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
来自真实用户的反馈,见证轩辕镜像的优质服务