Client Configuration
To launch the server as a container when your MCP client starts (e.g., Claude Desktop), you need to add the appropriate configuration to your client's settings.
Docker Configuration
If you're using the Docker image, use this configuration in your claude_desktop_config.json:
{
"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": ""
}
}
}
}
Binary Configuration
If you've built the JAR file from sources, use this configuration in your claude_desktop_config.json:
{
"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": ""
}
}
}
}
Environment Variables
The MCP server requires the following environment variables to connect to your ThingsBoard instance:
| Variable | Description | Default |
|---|
THINGSBOARD_URL | The base URL of your ThingsBoard instance | |
THINGSBOARD_USERNAME | Username used to authenticate with ThingsBoard | |
THINGSBOARD_PASSWORD | Password used to authenticate with ThingsBoard | |
THINGSBOARD_LOGIN_INTERVAL_SECONDS | Login session refresh interval in seconds | 1800 |
SPRING_WEB_APPLICATION_TYPE | Spring application type (none or servlet) | none |
SPRING_AI_MCP_SERVER_STDIO | Enable/disable standard I/O communication | true |
SPRING_AI_MCP_SERVER_SSE_ENDPOINT | Server-Sent Events (SSE) endpoint URL | /sse |
SPRING_AI_MCP_SERVER_SSE_MESSAGE_ENDPOINT | Server-Sent Events message endpoint URL | /mcp/message |
LOGGING_PATTERN_CONSOLE | Logback console log pattern | |
SERVER_PORT | HTTP server port number | 8080 |
These variables can be set either:
- Directly via Docker command line using the
-e flag
- Or through the
env configuration block in your MCP client setup
Available Tools
The ThingsBoard MCP Server provides a wide range of tools that can be used through natural language commands. These tools are organized by category.
Device Tools
| Tool | Description |
|---|
getDeviceById | Fetch the Device object based on the provided Device Id. |
getDeviceCredentialsByDeviceId | Get device credentials by device id. If during device creation there wasn't specified any credentials, platform generates random 'ACCESS_TOKEN' credentials. |
getTenantDevices | Returns a page of devices owned by tenant. |
getTenantDevice | Get tenant device by name. Device name is a unique property of device. |
getCustomerDevices | Returns a page of devices objects assigned to customer. |
getUserDevices | Returns a page of device objects available for the current user. |
getDevicesByIds | Get Devices By Ids. Requested devices must be owned by tenant or assigned to customer. |
getDevicesByEntityGroupId | Returns a page of device objects that belongs to specified Entity Group Id. |
Asset Tools
| Tool | Description |
|---|
getAssetById | Get the Asset object based on the provided Asset Id. |
getTenantAssets | Returns a page of assets owned by tenant. |
getTenantAsset | Get tenant asset by name. Asset name is a unique property of asset. |
getCustomerAssets | Returns a page of assets objects assigned to customer. |
getUserAssets | Returns a page of assets objects available for the current user. |
getAssetsByIds | Get Assets By Ids. Requested assets must be owned by tenant or assigned to customer. |
getAssetsByEntityGroupId | Returns a page of asset objects that belongs to specified Entity Group Id. |
Customer Tools
| Tool | Description |
|---|
getCustomerById | Get the Customer object based on the provided Customer Id. |
getCustomers | Returns a page of customers owned by tenant. |
getTenantCustomer | Get the Customer using Customer Title. |
getUserCustomers | Returns a page of customers available for the user. |
getCustomersByEntityGroupId | Returns a page of Customer objects that belongs to specified Entity Group Id. |
User Tools
| Tool | Description |
|---|
getUserById | Fetch the User object based on the provided User Id. |
getUsers | Returns a page of users owned by tenant or customer. |
getTenantAdmins | Returns a page of tenant administrator users assigned to the specified tenant. |
getCustomerUsers | Returns a page of users assigned to the specified customer. |
getAllCustomerUsers | Returns a page of users for the current tenant with authority 'CUSTOMER_USER'. |
getUsersForAssign | Returns page of user data objects that can be assigned to provided alarmId. |
getUsersByEntityGroupId | Returns a page of user objects that belongs to specified Entity Group Id. |
Alarm Tools
| Tool | Description |
|---|
getAlarmById | Get the Alarm object based on the provided alarm id. |
getAlarmInfoById | Get the Alarm info object based on the provided alarm id. |
getAlarms | Get a page of alarms for the selected entity. |
getAllAlarms | Get a page of alarms that belongs to the current user owner. |
getHighestAlarmSeverity | Get highest alarm severity by originator and optional status filters. |
getAlarmTypes | Get a set of unique alarm types based on alarms that are either owned by tenant or assigned to the customer. |
Entity Group Tools
| Tool | Description |
|---|
getEntityGroupById | Fetch the Entity Group object based on the provided Entity Group Id. |
getEntityGroupsByType | Fetch the list of Entity Group Info objects based on the provided Entity Type. |
getEntityGroupByOwnerAndNameAndType | Fetch the Entity Group object based on the provided owner, type and name. |
getEntityGroupsByOwnerAndType | Fetch the list of Entity Group Info objects based on the provided Owner Id and Entity Type. |
getEntityGroupsForEntity | Returns a list of groups that contain the specified Entity Id. |
getEntityGroupsByIds | Fetch the list of Entity Group Info objects based on the provided entity group ids list. |
Relation Tools
| Tool | Description |
|---|
getRelation | Returns relation object between two specified entities if present. |
findByFrom | Returns list of relation objects for the specified entity by the 'from' direction. |
findByFromWithRelationType | Returns list of relation objects for the specified entity by the 'from' direction and relation type. |
findInfoByFrom | Returns list of relation info objects for the specified entity by the 'from' direction. |
findByTo | Returns list of relation objects for the specified entity by the 'to' direction. |
findByToWithRelationType | Returns list of relation objects for the specified entity by the 'to' direction and relation type. |
findInfoByTo | Returns list of relation info objects for the specified entity by the 'to' direction. |
Telemetry Tools
| Tool | Description |
|---|
getAttributeKeys | Get all attribute keys for the specified entity. |
getAttributeKeysByScope | Get all attribute keys for the specified entity and scope. |
getAttributes | Get attributes for the specified entity. |
getAttributesByScope | Get attributes for the specified entity and scope. |
getTimeseriesKeys | Get all time-series keys for the specified entity. |
getLatestTimeseries | Get the latest time-series values for the specified entity and keys. |
getTimeseries | Get time-series data for the specified entity, keys, and time range. |
saveDeviceAttributes | Save device attributes. |
saveEntityAttributesV1 | Save entity attributes (version 1). |
saveEntityAttributesV2 | Save entity attributes (version 2). |
saveEntityTelemetry | Save entity telemetry data. |
saveEntityTelemetryWithTTL | Save entity telemetry data with time-to-live (TTL). |
Admin Tools
| Tool | Description |
|---|
getAdminSettings | Get the Administration Settings object using specified string key. |
getSecuritySettings | Get the Security settings object that contains password policy, lockout limits, etc. |
getSystemInfo | Get main information about system. |
getUsageInfo | Retrieves usage statistics for the current tenant. |