mcpField
T
Thingsboard Mcp Server

Thingsboard Mcp Server

ローカル
github.com/thingsboardクラウド・インフラ9935 週間前に更新

Thingsboard Mcp Server について

ThingsBoard MCP Serverは、AIエージェントをThingsBoard IoTインスタンスに接続し、デバイス、エンティティ、テレメトリー、アラームを操作します。幅広いツールを備え、ツール群とSTDIOまたはSSEのトランスポートを設定できます。

主な機能

  1. 01デバイス・アセット・顧客・ユーザー管理
  2. 02テレメトリーと時系列データの操作
  3. 03アラームとエンティティ関係の管理
  4. 04OTAパッケージの処理
  5. 05ツール群とトランスポートの設定

活用シーン

  1. 01IoT環境のデバイスやテレメトリーを検索
  2. 02アラームとエンティティ関係を管理
  3. 03デバイスにファームウェアパッケージを割り当て

MCP 対応

MCPサーバーはThingsBoard操作用の120以上のツールをクライアントに公開します。ローカル起動クライアント向けのSTDIOと、HTTP接続向けのSSEに対応しています。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.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": "<LOGGING_PATTERN_CONSOLE>"
}
}
}
}
起動コマンドdocker run -i --rm -e THINGSBOARD_URL -e THINGSBOARD_USERNAME -e THINGSBOARD_PASSWORD -e LOGGING_PATTERN_CONSOLE thingsboard/mcp
設定が必要な環境変数
THINGSBOARD_URL
THINGSBOARD_USERNAME
THINGSBOARD_PASSWORDシークレット
LOGGING_PATTERN_CONSOLE

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
ocithingsboard/mcp

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

ThingsBoard MCP サーバー

License Docker Java

Model Context Protocol (MCP) を介して、AI エージェントをあなたの ThingsBoard IoT プラットフォームに接続します。デバイスの照会、エンティティの管理、テレメトリの分析、運用の自動化を、すべて自然言語で行えます。

Claude Desktop、Cursor、VS Code Copilot、Claude Code、および MCP 互換のあらゆるクライアントで動作します。

クイックスタート

ThingsBoard インスタンス(Cloud、EU Cloud、セルフホスト可能な CE/PE、または Edge)と、API キー(ThingsBoard 4.3 以降)またはユーザー名/パスワードが必要です。

Claude Desktop

claude_desktop_config.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": "YOUR_API_KEY"
      }
    }
  }
}
Cursor

~/.cursor/mcp.json(グローバル)または .cursor/mcp.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": "YOUR_API_KEY"
      }
    }
  }
}
VS Code Copilot

VS Code の settings.json または .vscode/mcp.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": "YOUR_API_KEY"
        }
      }
    }
  }
}
Claude Code
claude mcp add thingsboard \
  -e THINGSBOARD_URL=https://thingsboard.cloud \
  -e THINGSBOARD_API_KEY=YOUR_API_KEY \
  -- docker run -i --rm -e THINGSBOARD_URL -e THINGSBOARD_API_KEY thingsboard/mcp
SSE モード(HTTP ベースの任意の MCP クライアント)

サーバーを起動します:

docker run --rm -p 8000:8000 \
  -e THINGSBOARD_URL=https://thingsboard.cloud \
  -e THINGSBOARD_API_KEY=YOUR_API_KEY \
  -e SPRING_AI_MCP_SERVER_STDIO=false \
  -e SPRING_WEB_APPLICATION_TYPE=servlet \
  thingsboard/mcp

次に、MCP クライアントを http://localhost:8000/sse に設定します。

レガシー認証: お使いの ThingsBoard のバージョンが 4.3 より古い場合は、THINGSBOARD_API_KEY の代わりに THINGSBOARD_USERNAME と THINGSBOARD_PASSWORD を使用してください。

できること

自然言語で質問すると、ThingsBoard インスタンスから構造化された結果が得られます:

デバイスとエンティティの照会時系列データの分析
Get My DevicesAnalyze Data
テレメトリの生成と保存異常分析の取得
Generate DataAnalysis Result

10 個のツールグループにわたる 120 以上のツール:

  • デバイス — 作成、更新、削除、一覧表示、名前/タイプ/グループによる検索
  • アセット — CRUD、テナント/顧客による一覧表示、検索
  • 顧客 — CRUD、一覧表示、タイトルによる検索
  • ユーザー — CRUD、一覧表示、管理者/顧客ユーザーの管理
  • アラーム — 作成、確認、クリア、削除、重大度による照会
  • テレメトリ — 属性と時系列の読み書き、集計、TTL
  • リレーション — エンティティのリレーションシップの作成、削除、ナビゲート
  • OTA パッケージ — ファームウェア/ソフトウェアのアップロード、ダウンロード、デバイスへの割り当て
  • エンティティグループ(PE) — グループの管理、エンティティの割り当て/削除
  • エンティティデータクエリ — 属性/テレメトリフィルターを使用した、すべてのエンティティタイプにわたる複雑なフィルター付きクエリ

インストール

Docker(推奨)
docker pull thingsboard/mcp

Docker イメージは 2 つのトランスポートモードをサポートしています:

  • STDIO(デフォルト) — サーバーをサブプロセスとして起動するクライアント(Claude Desktop、Cursor など)向け
  • SSE — HTTP 経由で接続するクライアント向け

使用例についてはクイックスタートを参照してください。

バイナリのダウンロード
wget https://github.com/thingsboard/mcp-server/releases/download/v2.1.0/thingsboard-mcp-server-2.1.0.jar

次のように実行します:

# STDIO mode
java -jar thingsboard-mcp-server-2.1.0.jar

# SSE mode
java -Dspring.ai.mcp.server.stdio=false -Dspring.main.web-application-type=servlet -jar thingsboard-mcp-server-2.1.0.jar
バイナリ使用時のクライアント設定

Docker の代わりに JAR ファイルを使用する場合は、claude_desktop_config.json で次を使用します:

{
  "mcpServers": {
    "thingsboard": {
      "command": "java",
      "args": ["-jar", "/absolute/path/to/thingsboard-mcp-server-2.1.0.jar"],
      "env": {
        "THINGSBOARD_URL": "https://thingsboard.cloud",
        "THINGSBOARD_API_KEY": "YOUR_API_KEY"
      }
    }
  }
}
ソースからのビルド

Java 17 以降と Maven 3.6 以降が必要です。

git 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_URLThingsBoard インスタンスのベース URL必須
THINGSBOARD_API_KEY認証用の API キー (4.3 以降で推奨)
THINGSBOARD_USERNAME認証用のユーザー名 (レガシー)
THINGSBOARD_PASSWORD認証用のパスワード (レガシー)
THINGSBOARD_LOGIN_INTERVAL_SECONDSセッションの更新間隔1800
HTTP_BIND_ADDRESSHTTP バインドアドレス (SSE モード)127.0.0.1
HTTP_BIND_PORTHTTP ポート (SSE モード)8000
SPRING_AI_MCP_SERVER_STDIOSTDIO トランスポートを有効化true
SPRING_WEB_APPLICATION_TYPESTDIO の場合は none、SSE の場合は servletnone
SPRING_AI_MCP_SERVER_SSE_ENDPOINTSSE エンドポイントのパス/sse
SPRING_AI_MCP_SERVER_SSE_MESSAGE_ENDPOINTSSE メッセージエンドポイントのパス/mcp/message
詳細設定: 接続とログ
変数説明デフォルト
THINGSBOARD_CONNECTION_MAX_RETRIES接続の最大再試行回数3
THINGSBOARD_CONNECTION_RETRY_DELAY_SECONDS再試行間の遅延5
THINGSBOARD_CONNECTION_CONNECT_TIMEOUT_SECONDSHTTP 接続タイムアウト10
THINGSBOARD_CONNECTION_READ_TIMEOUT_SECONDSHTTP 読み取りタイムアウト60
LOG_LEVEL_APPアプリケーションのログレベルinfo
LOG_LEVEL_TOOLSツール実行のログレベルinfo
LOG_LEVEL_TOOL_RESPONSEツール応答のログレベルinfo
LOGGING_PATTERN_CONSOLELogback コンソールパターン%d{yyyy-MM-dd HH:mm:ss} | %-5level | %logger{1} | %msg%n
LOGGING_CONSOLE_TARGETログ出力先System.err
ツールグループ

このサーバーは 120 以上のツールを公開しており、一部のクライアントではコンテキストの上限を超える可能性があります。不要なグループは無効化してください:

変数グループツールデフォルト
THINGSBOARD_TOOLS_EDQエンティティデータクエリ + ガイド40true
THINGSBOARD_TOOLS_TELEMETRYテレメトリと属性11true
THINGSBOARD_TOOLS_DEVICEデバイス11true
THINGSBOARD_TOOLS_ASSETアセット8true
THINGSBOARD_TOOLS_ALARMアラーム9true
THINGSBOARD_TOOLS_OTAOTA パッケージ11true
THINGSBOARD_TOOLS_RELATIONリレーション8true
THINGSBOARD_TOOLS_CUSTOMER顧客7true
THINGSBOARD_TOOLS_USERユーザー9true
THINGSBOARD_TOOLS_GROUPエンティティグループ (PE のみ)10true

例 — コンテキストが限られたクライアント向けに約 50 個のツールまで削減:

{
  "env": {
    "THINGSBOARD_TOOLS_EDQ": "false",
    "THINGSBOARD_TOOLS_OTA": "false",
    "THINGSBOARD_TOOLS_GROUP": "false",
    "THINGSBOARD_TOOLS_USER": "false"
  }
}

利用可能なツール

デバイスツール (11)
ツール説明
createOrUpsertDevice名前でデバイスを作成または更新します。ほとんどのデバイス関連タスクにおける主要なツールです。
saveDevice生の JSON からデバイスオブジェクトを作成または更新します。上級者向けツールです。
deleteDeviceID でデバイスを削除します。
getDeviceById指定されたデバイス ID に基づいて Device オブジェクトを取得します。
getDeviceCredentialsByDeviceIdデバイス ID でデバイスの認証情報を取得します。
getTenantDevicesテナントが所有するデバイスのページを返します。
getTenantDevice名前でテナントデバイスを取得します。
getCustomerDevices顧客に割り当てられたデバイスのページを返します。
getUserDevices (PE)現在のユーザーが利用可能なデバイスのページを返します。
getDevicesByIdsID でデバイスを取得します。
getDevicesByEntityGroupId (PE)指定されたエンティティグループ内のデバイスのページを返します。
アセットツール (8) | ツール | 説明 | |------|-------------| | `saveAsset` | アセットオブジェクトを作成または更新します。 | | `deleteAsset` | ID でアセットを削除します。 | | `getAssetById` | ID で Asset オブジェクトを取得します。 | | `getTenantAssets` | テナントが所有するアセットのページを返します。 | | `getTenantAsset` | 名前でテナントアセットを取得します。 | | `getCustomerAssets` | 顧客に割り当てられたアセットのページを返します。 | | `getUserAssets` **(PE)** | 現在のユーザーが利用可能なアセットのページを返します。 | | `getAssetsByEntityGroupId` **(PE)** | 指定されたエンティティグループ内のアセットのページを返します。 |
顧客ツール (7)
ツール説明
saveCustomer顧客オブジェクトを作成または更新します。
deleteCustomerID で顧客を削除します。
getCustomerByIdID で Customer オブジェクトを取得します。
getCustomersテナントが所有する顧客のページを返します。
getTenantCustomerタイトルで顧客を取得します。
getUserCustomers (PE)ユーザーが利用可能な顧客のページを返します。
getCustomersByEntityGroupId (PE)指定されたエンティティグループ内の顧客のページを返します。
ユーザーツール (9)
ツール説明
saveUserユーザーオブジェクトを作成または更新します。
deleteUserID でユーザーを削除します。
getUserByIdID で User オブジェクトを取得します。
getUsersテナントまたは顧客が所有するユーザーのページを返します。
getTenantAdminsテナント管理者ユーザーのページを返します。
getCustomerUsers顧客に割り当てられたユーザーのページを返します。
getAllCustomerUsers (PE)現在のテナントのすべての顧客ユーザーのページを返します。
getUsersForAssignアラームに割り当て可能なユーザーを返します。
getUsersByEntityGroupId (PE)指定されたエンティティグループ内のユーザーのページを返します。
アラームツール (9)
ツール説明
saveAlarmアラームオブジェクトを作成または更新します。
deleteAlarmID でアラームを削除します。
ackAlarmアラームを確認応答します。
clearAlarmアラームをクリアします。
getAlarmInfoByIdID でアラーム情報を取得します (発生元の名前を含む)。
getAlarms選択したエンティティのアラームのページを取得します。
getAllAlarms現在のユーザー所有者のアラームのページを取得します。
getHighestAlarmSeverity発生元ごとの最高アラーム重大度を取得します。
getAlarmTypes一意のアラームタイプを取得します。
OTA ツール (11)
ツール説明
saveOtaPackageInfoOTA パッケージ情報を作成または更新します。
saveOtaPackageDataファイルパスから OTA パッケージのバイナリをアップロードします。
downloadOtaPackageOTA パッケージのバイナリをローカルファイルパスにダウンロードします。
getOtaPackageInfoByIdID で OTA パッケージ情報を取得します。
getOtaPackageByIdID で OTA パッケージを取得します。
getOtaPackagesOTA パッケージを取得します (ページ単位)。
getOtaPackagesByDeviceProfileデバイスプロファイルとタイプで OTA パッケージを取得します。
assignOtaPackageToDeviceデバイスに OTA パッケージを割り当てるか、クリアします。
assignOtaPackageToDeviceProfileデバイスプロファイルに OTA パッケージを割り当てるか、クリアします。
countByDeviceProfileAndEmptyOtaPackageOTA パッケージが割り当てられていないデバイスをカウントします。
deleteOtaPackageID で OTA パッケージを削除します。
リレーションツール (8) | ツール | 説明 | |------|-------------| | `saveRelation` | リレーションを作成または更新します。 | | `deleteRelation` | 2 つのエンティティ間のリレーションを削除します。 | | `deleteRelations` | エンティティのすべてのリレーションを削除します。 | | `getRelation` | 2 つのエンティティ間のリレーションを取得します。 | | `findInfoByFrom` | エンティティからのリレーションを検索します(エンティティ名を含みます)。 | | `findByFromWithRelationType` | エンティティからのリレーションをタイプで絞り込んで検索します。 | | `findInfoByTo` | エンティティへのリレーションを検索します(エンティティ名を含みます)。 | | `findByToWithRelationType` | エンティティへのリレーションをタイプで絞り込んで検索します。 |
テレメトリーツール(11)
ツール説明
getAttributeKeysエンティティのすべての属性キーを取得します。
getAttributeKeysByScopeスコープごとに属性キーを取得します。
getAttributesエンティティの属性を取得します。
getAttributesByScopeスコープごとに属性を取得します。
getTimeseriesKeysエンティティのすべての時系列キーを取得します。
getLatestTimeseries最新の時系列値を取得します。
getTimeseries指定した期間の時系列データを取得します。
saveDeviceAttributesデバイス属性を保存します。
saveEntityAttributesV2エンティティ属性を保存します。
saveEntityTelemetryエンティティのテレメトリーデータを保存します。
saveEntityTelemetryWithTTLTTL 付きでエンティティのテレメトリーを保存します。
エンティティグループツール — PE のみ(10)
ツール説明
saveEntityGroupエンティティグループを作成または更新します。
deleteEntityGroupID でエンティティグループを削除します。
getEntityGroupByIdID でエンティティグループを取得します。
getEntityGroupsByTypeエンティティタイプごとにエンティティグループを取得します。
getEntityGroupByOwnerAndNameAndTypeオーナー、タイプ、名前でエンティティグループを取得します。
getEntityGroupsByOwnerAndTypeオーナーとタイプでエンティティグループを取得します。
getEntityGroupsForEntity指定したエンティティを含むグループを取得します。
getEntityGroupsByIdsID でエンティティグループを取得します。
addEntitiesToEntityGroupグループにエンティティを追加します。
removeEntitiesFromEntityGroupグループからエンティティを削除します。
エンティティデータクエリツール(19)

すべてのエンティティタイプにまたがる複雑な絞り込みクエリです。エンティティのフィールド、属性、最新のテレメトリーをキーフィルター付きでサポートします。

ツール説明
findEntityDataBySingleEntityFilterID で 1 つのエンティティのデータを検索します。
findEntityDataByEntityGroupFilter (PE)エンティティグループでデータを検索します。
findEntityDataByEntityListFilterエンティティ ID のリストでデータを検索します。
findEntityDataByEntityNameFilter名前のプレフィックスでデータを検索します。
findEntityDataByEntityTypeFilterエンティティタイプでデータを検索します。
findEntityDataByEntityGroupListFilter (PE)複数のグループのデータを検索します。
findEntityDataByEntityGroupNameFilter (PE)名前のプレフィックスでグループのデータを検索します。
findEntityDataByEntitiesGroupNameFilter (PE)指定した名前のグループ内のエンティティのデータを検索します。
findEntityDataByStateEntityOwnerFilterエンティティオーナーのデータを検索します。
findEntityDataByAssetTypeFilterタイプでアセットを検索します。
findEntityDataByDeviceTypeFilterタイプでデバイスを検索します。
findEntityDataByEdgeTypeFilterタイプでエッジを検索します。
findEntityDataByEntityViewTypeFilterタイプでエンティティビューを検索します。
findEntityDataByRelationsQueryFilter関連するエンティティを検索します。
findEntityDataByAssetSearchQueryFilter関連するアセットを検索します。
findEntityDataByDeviceSearchQueryFilter関連するデバイスを検索します。
findEntityDataByEntityViewSearchQueryFilter関連するエンティティビューを検索します。
findEntityDataByApiUsageStateFilterAPI 使用状況データを検索します。
findEntityDataByEdgeQueryFilter関連するエッジを検索します。
エンティティ数クエリツール(18)

フィルターに一致するエンティティをカウントします。フィルターの種類はエンティティデータクエリと同じです。

ツール説明
countBySingleEntityFilter単一のエンティティ ID でカウントします。
countByEntityGroupFilter (PE)エンティティグループでカウントします。
countByEntityListFilterエンティティ ID リストでカウントします。
countByEntityNameFilter名前のプレフィックスでカウントします。
countByEntityTypeFilterエンティティタイプでカウントします。
countByEntityGroupListFilter (PE)複数のグループでカウントします。
countByEntityGroupNameFilter (PE)グループ名のプレフィックスでカウントします。
countByEntitiesGroupNameFilter (PE)名前付きグループ内のエンティティをカウントします。
countByAssetTypeFilterアセットをタイプ別にカウントします。
countByDeviceTypeFilterデバイスをタイプ別にカウントします。
countByEdgeTypeFilterエッジをタイプ別にカウントします。
countByEntityViewTypeFilterエンティティビューをタイプ別にカウントします。
countByApiUsageStateFilterAPI 使用状況の行をカウントします。
countByRelationsQueryFilter関連するエンティティをカウントします。
countByAssetSearchQueryFilter関連するアセットをカウントします。
countByDeviceSearchQueryFilter関連するデバイスをカウントします。
countByEntityViewSearchQueryFilter関連するエンティティビューをカウントします。
countByEdgeQueryFilter関連するエッジをカウントします。
ガイドツール (3)

LLM が正しいクエリを構築するのを支援するドキュメントツールです。

ツール説明
getEdqGuideEntity Data Query を作成するためのドキュメントを取得します。
getEdqCountGuideEntity Count Query を作成するためのドキュメントを取得します。
getKeyFiltersGuideキーフィルターを作成するためのドキュメントを取得します。

ライセンス

このプロジェクトは Apache License 2.0 の下でライセンスされています — 詳細は LICENSE ファイルを参照してください。

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。