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.
Thingsboard Mcp Server is an MCP project maintained in the thingsboard/thingsboard-mcp repository. The maintainer describes its purpose as “Connect AI agents to your ThingsBoard IoT platform via Model Context Protocol (MCP). Query devices, manage entities, analyze telemetry, and automate operations — all through…”. Read the project documentation for the complete scope.
The project provides a local client configuration using docker. Follow the repository’s build and installation steps before copying it, and replace example paths with the paths on your own computer.
The example declares THINGSBOARD_URL, THINGSBOARD_API_KEY. Secret-looking values have been replaced with placeholders. Required and optional labels are shown only when the documentation states them.
Project documentation · Repository · Discovery listing. This profile records the public documentation checked on 2026-10-08.
Check the linked publisher documentation and your connected client's tool list. Names and availability can vary with the server version and account permissions.
| Tool | What it does |
|---|---|
| Variable | Group |
| THINGSBOARD_TOOLS_EDQ | Entity Data Query + Guides |
| THINGSBOARD_TOOLS_TELEMETRY | Telemetry & Attributes |
| THINGSBOARD_TOOLS_DEVICE | Devices |
| THINGSBOARD_TOOLS_ASSET | Assets |
| THINGSBOARD_TOOLS_ALARM | Alarms |
| THINGSBOARD_TOOLS_OTA | OTA Packages |
| THINGSBOARD_TOOLS_RELATION | Relations |
| THINGSBOARD_TOOLS_CUSTOMER | Customers |
| THINGSBOARD_TOOLS_USER | Users |
| THINGSBOARD_TOOLS_GROUP | Entity Groups (PE only) |
| 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. |
| getDevicesByIds | Get devices by ids. |
| saveAsset | Create or update the asset object. |
| deleteAsset | Delete the asset by id. |
| getAssetById | Get the Asset object by id. |
| getTenantAssets | Returns a page of assets owned by tenant. |
| getTenantAsset | Get tenant asset by name. |
| getCustomerAssets | Returns a page of assets assigned to customer. |
| saveCustomer | Create or update the customer object. |
| deleteCustomer | Delete the customer by id. |
| getCustomerById | Get the Customer object by id. |
| getCustomers | Returns a page of customers owned by tenant. |
| getTenantCustomer | Get customer by title. |
| saveUser | Create or update the user object. |
| deleteUser | Delete the user by id. |
| getUserById | Fetch the User object by id. |
| getUsers | Returns a page of users owned by tenant or customer. |
| getTenantAdmins | Returns a page of tenant administrator users. |
| getCustomerUsers | Returns a page of users assigned to a customer. |
| getUsersForAssign | Returns users that can be assigned to an alarm. |
| saveAlarm | Create or update the alarm object. |
| deleteAlarm | Delete the alarm by id. |
| ackAlarm | Acknowledge the alarm. |
| clearAlarm | Clear the alarm. |
| getAlarmInfoById | Get alarm info by id (includes originator name). |
| getAlarms | Get a page of alarms for the selected entity. |
| getAllAlarms | Get a page of alarms for the current user owner. |
| getHighestAlarmSeverity | Get highest alarm severity by originator. |
| getAlarmTypes | Get unique alarm types. |
| saveOtaPackageInfo | Create or update OTA package info. |
| saveOtaPackageData | Upload OTA package binary from a file path. |
| downloadOtaPackage | Download OTA package binary to a local file path. |
| getOtaPackageInfoById | Get OTA package info by id. |
| getOtaPackageById | Get OTA package by id. |
| getOtaPackages | Get OTA packages (paged). |
| getOtaPackagesByDeviceProfile | Get OTA packages by device profile and type. |
| assignOtaPackageToDevice | Assign or clear OTA package for a device. |
| assignOtaPackageToDeviceProfile | Assign or clear OTA package for a device profile. |
| countByDeviceProfileAndEmptyOtaPackage | Count devices without assigned OTA package. |
| deleteOtaPackage | Delete OTA package by id. |
| saveRelation | Create or update a relation. |
| deleteRelation | Delete a relation between two entities. |
| deleteRelations | Delete all relations for an entity. |
| getRelation | Get a relation between two entities. |
| findInfoByFrom | Find relations from an entity (includes entity names). |
| findByFromWithRelationType | Find relations from an entity filtered by type. |
| findInfoByTo | Find relations to an entity (includes entity names). |
| findByToWithRelationType | Find relations to an entity filtered by type. |
| getAttributeKeys | Get all attribute keys for an entity. |
| getAttributeKeysByScope | Get attribute keys by scope. |
| getAttributes | Get attributes for an entity. |
| getAttributesByScope | Get attributes by scope. |
| getTimeseriesKeys | Get all time-series keys for an entity. |
| getLatestTimeseries | Get latest time-series values. |
| getTimeseries | Get time-series data for a time range. |
| saveDeviceAttributes | Save device attributes. |
| saveEntityAttributesV2 | Save entity attributes. |
| saveEntityTelemetry | Save entity telemetry data. |
| saveEntityTelemetryWithTTL | Save entity telemetry with TTL. |
| saveEntityGroup | Create or update an entity group. |
| deleteEntityGroup | Delete an entity group by id. |
| getEntityGroupById | Get entity group by id. |
| getEntityGroupsByType | Get entity groups by entity type. |
| getEntityGroupByOwnerAndNameAndType | Get entity group by owner, type, and name. |
| getEntityGroupsByOwnerAndType | Get entity groups by owner and type. |
| getEntityGroupsForEntity | Get groups containing a specified entity. |
| getEntityGroupsByIds | Get entity groups by ids. |
| addEntitiesToEntityGroup | Add entities to a group. |
| removeEntitiesFromEntityGroup | Remove entities from a group. |
| findEntityDataBySingleEntityFilter | Find data for one entity by ID. |
| findEntityDataByEntityListFilter | Find data for a list of entity IDs. |
| findEntityDataByEntityNameFilter | Find data by name prefix. |
| findEntityDataByEntityTypeFilter | Find data by entity type. |
| findEntityDataByStateEntityOwnerFilter | Find data for entity owner. |
| findEntityDataByAssetTypeFilter | Find assets by type. |
| findEntityDataByDeviceTypeFilter | Find devices by type. |
| findEntityDataByEdgeTypeFilter | Find edges by type. |
| findEntityDataByEntityViewTypeFilter | Find entity views by type. |
| findEntityDataByRelationsQueryFilter | Find related entities. |
| findEntityDataByAssetSearchQueryFilter | Find related assets. |
| findEntityDataByDeviceSearchQueryFilter | Find related devices. |
| findEntityDataByEntityViewSearchQueryFilter | Find related entity views. |
| findEntityDataByApiUsageStateFilter | Find API usage data. |
| findEntityDataByEdgeQueryFilter | Find related edges. |
| countBySingleEntityFilter | Count by single entity ID. |
| countByEntityListFilter | Count by entity ID list. |
| countByEntityNameFilter | Count by name prefix. |
| countByEntityTypeFilter | Count by entity type. |
| countByAssetTypeFilter | Count assets by type. |
| countByDeviceTypeFilter | Count devices by type. |
| countByEdgeTypeFilter | Count edges by type. |
| countByEntityViewTypeFilter | Count entity views by type. |
| countByApiUsageStateFilter | Count API usage rows. |
| countByRelationsQueryFilter | Count related entities. |
| countByAssetSearchQueryFilter | Count related assets. |
| countByDeviceSearchQueryFilter | Count related devices. |
| countByEntityViewSearchQueryFilter | Count related entity views. |
| countByEdgeQueryFilter | Count related edges. |
| getEdqGuide | Get documentation for creating Entity Data Queries. |
| getEdqCountGuide | Get documentation for creating Entity Count Queries. |
| getKeyFiltersGuide | Get documentation for creating key filters. |
{
"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": "YOUR_THINGSBOARD_API_KEY"
}
}
}
}From the project documentation. Replace placeholders and example paths before connecting.
| Variable | Description | Required |
|---|---|---|
| THINGSBOARD_URL | Declared in the maintainer’s client configuration. | Yes |
| THINGSBOARD_API_KEY | Declared in the maintainer’s client configuration. | Check documentation |
Enables natural language interaction with Home Assistant entities using the Model Context Protocol.
Integrates with Home Assistant to provide smart home control capabilities via Model Context Protocol (MCP).
A Model Context Protocol (MCP) server that enables AI agents to interact with the 1NCE IoT connectivity management platform through natural language.
Agriculture Robotics tools for AI agents. Capabilities: robot safety check, spray plan calcu...
Amazon Alexa for Claude — Echo devices, announcements, routines, smart home, lists
Connect Claude, Cursor, Codex, and other AI tools to your robotics mission data.