MCP server for querying, managing, and analyzing ThingsBoard IoT devices, entities, telemetry, alarms, and relationships.
Copy the AI prompt to install this server into Claude Code, Cursor, or another agent โ or use 1-click editor setup below.
๐ก Paste the JSON block into your client's configuration file under mcpServers, then restart the application.
Inspect callable tools, capabilities, and parameters exposed to AI agents by Thingsboard MCP.
Connect AI agents to your ThingsBoard IoT platform via Model Context Protocol (MCP). Query devices, manage entities, analyze telemetry, and automate operations โ all through natural language.
Works with Claude Desktop, Cursor, VS Code Copilot, Claude Code, and any MCP-compatible client.
You need a ThingsBoard instance (Cloud, EU Cloud, self-hosted CE/PE, or Edge) and an API key (ThingsBoard 4.3+) or username/password.
Add to your claude_desktop_config.json:
Add to ~/.cursor/mcp.json (global) or .cursor/mcp.json (project):
Add to your VS Code settings.json or .vscode/mcp.json:
Start the server:
Then point your MCP client to http://localhost:8000/sse.
Legacy auth: If your ThingsBoard version is older than 4.3, use
THINGSBOARD_USERNAMEandTHINGSBOARD_PASSWORDinstead ofTHINGSBOARD_API_KEY.
Ask questions in natural language and get structured results from your ThingsBoard instance:
| Query devices and entities | Analyze time-series data |
![]() | ![]() |
| Generate and save telemetry | Get anomaly analysis |
![]() | ![]() |
120+ tools across 10 tool groups:
The Docker image supports two transport modes:
See Quick Start for usage examples.
Run with:
If you're using the JAR file instead of Docker, use this in your claude_desktop_config.json:
Requires Java 17+ and Maven 3.6+.
| Variable | Description | Default |
|---|---|---|
THINGSBOARD_URL | Base URL of your ThingsBoard instance | required |
THINGSBOARD_API_KEY | API key for authentication (recommended for 4.3+) | |
THINGSBOARD_USERNAME | Username for authentication (legacy) | |
THINGSBOARD_PASSWORD | Password for authentication (legacy) | |
THINGSBOARD_LOGIN_INTERVAL_SECONDS | Session refresh interval | 1800 |
HTTP_BIND_ADDRESS | HTTP bind address (SSE mode) | 127.0.0.1 |
HTTP_BIND_PORT | HTTP port (SSE mode) | 8000 |
SPRING_AI_MCP_SERVER_STDIO | Enable STDIO transport | true |
SPRING_WEB_APPLICATION_TYPE | none for STDIO, servlet for SSE | none |
SPRING_AI_MCP_SERVER_SSE_ENDPOINT | SSE endpoint path | /sse |
SPRING_AI_MCP_SERVER_SSE_MESSAGE_ENDPOINT | SSE message endpoint path | /mcp/message |
| Variable | Description | Default |
|---|---|---|
THINGSBOARD_CONNECTION_MAX_RETRIES | Max connection retry attempts | 3 |
THINGSBOARD_CONNECTION_RETRY_DELAY_SECONDS | Delay between retries | 5 |
THINGSBOARD_CONNECTION_CONNECT_TIMEOUT_SECONDS | HTTP connect timeout | 10 |
THINGSBOARD_CONNECTION_READ_TIMEOUT_SECONDS | HTTP read timeout | 60 |
LOG_LEVEL_APP | Application log level | info |
LOG_LEVEL_TOOLS | Tool execution log level | info |
LOG_LEVEL_TOOL_RESPONSE | Tool response log level | info |
LOGGING_PATTERN_CONSOLE | Logback console pattern | %d{yyyy-MM-dd HH:mm:ss} | %-5level | %logger{1} | %msg%n |
LOGGING_CONSOLE_TARGET | Log output target | System.err |
The server exposes 120+ tools which may exceed context limits for some clients. Disable groups you don't need:
| Variable | Group | Tools | Default |
|---|---|---|---|
THINGSBOARD_TOOLS_EDQ | Entity Data Query + Guides | 40 | true |
THINGSBOARD_TOOLS_TELEMETRY | Telemetry & Attributes | 11 | true |
THINGSBOARD_TOOLS_DEVICE | Devices | 11 | true |
THINGSBOARD_TOOLS_ASSET | Assets | 8 | true |
THINGSBOARD_TOOLS_ALARM | Alarms | 9 | true |
THINGSBOARD_TOOLS_OTA | OTA Packages | 11 | true |
THINGSBOARD_TOOLS_RELATION | Relations | 8 | true |
THINGSBOARD_TOOLS_CUSTOMER | Customers | 7 | true |
THINGSBOARD_TOOLS_USER | Users | 9 | true |
THINGSBOARD_TOOLS_GROUP | Entity Groups (PE only) | 10 | true |
Example โ reduce to ~50 tools for clients with limited context:
| Tool | Description |
|---|---|
createOrUpsertDevice | Create or update a device by name. Primary tool for most device tasks. |
saveDevice | Create or update the device object from raw JSON. Advanced tool. |
deleteDevice | Delete the device by id. |
getDeviceById | Fetch the Device object based on the provided Device Id. |
getDeviceCredentialsByDeviceId | Get device credentials by device id. |
getTenantDevices | Returns a page of devices owned by tenant. |
getTenantDevice | Get tenant device by name. |
getCustomerDevices | Returns a page of devices assigned to customer. |
getUserDevices (PE) | Returns a page of devices available for the current user. |
getDevicesByIds | Get devices by ids. |
getDevicesByEntityGroupId (PE) | Returns a page of devices in a specified entity group. |
Factual signals from GitHub, npm, and our automated checks โ not a rating.
No reviews yet โ be the first to share how this listing worked for you.
Showcase your server listing on GitHub or your project documentation. Embed this dynamic SVG badge to highlight official listing status and live engagement.
[](https://allmcps.com/mcp/thingsboard-thingsboard-mcp)<a href="https://allmcps.com/mcp/thingsboard-thingsboard-mcp"><img src="https://allmcps.com/api/badge/thingsboard-thingsboard-mcp?style=directory" alt="Thingsboard MCP on AllMCPs" /></a>