利用可能なMCPツール一覧
ThingsConnectのMCPサーバが提供するツールのパラメータ・レスポンス仕様
ThingsConnect のクラウド(MCPサーバ)が提供するツールの一覧です(全 56 種類)。接続方法はMCPサーバのセットアップを参照してください。
共通のルールです。
- パラメータ名は snake_case(
edge_pc_id/device_idなど)。レスポンスの JSON はツールによって snake_case と camelCase が混在します(下記の各節に実際の形を記載しています)。 - 参照できる範囲は接続トークンの組織(テナント)内だけです。他組織のエッジPC・デバイスを ID で指定しても「見つからない」として扱われます。
- 操作系のツールは「MCP(操作)」スコープを持つトークンでだけ使えます。 持たないトークンでは一覧にも出ません。対象は
update_edge_pc_note/add_camera_device/update_device/remove_device/start_rtmp_stream/stop_rtmp_stream/create_dashboard/update_dashboard/delete_dashboard/add_widget/remove_widget/create_query/update_query/delete_query/onvif_probe_camera/onvif_register_camera/onvif_ptz_control/onvif_set_imaging/onvif_reboot_camera/protect_photo/capture/run_capture_job/protect_recording/unprotect_recording/update_camera_storage_settingsの 25 個です。スコープの選び方はMCPサーバのセットアップを参照してください。 - パスワード・ストリームキー・エッジPC の認証情報は返しません。 レスポンスでは
***に伏せ、ツールの呼び出し記録にも伏せたまま残します。 - 組織全体で MCP を無効にしている場合は、どのツールも使えません(接続時に
403が返ります)。設定は管理ダッシュボードの「組織設定」→「API・MCP」の「MCP サーバー」です。 - 画像を返すツール(
get_device_snapshot/ インライン指定のcapture_device_image/get_snapshot/compare/capture)以外は、すべて JSON 文字列をテキストとして返します。
ツール一覧
エッジPC
| ツール | パラメータ | 説明 |
|---|---|---|
list_edge_pcs |
なし | 組織内のエッジPC一覧 |
get_edge_pc_info |
edge_pc_id |
エッジPCの情報とシステム状態。認証情報は *** に伏せて返す |
update_edge_pc_note |
edge_pc_id, note |
エッジPCのメモを書き換える(全文を置き換え。空文字で消去) |
list_notifications |
status? |
通知の一覧(open が未解消で既定、resolved が解消済み)。type が condition の通知は原因が消えると自動で閉じ、event は画面で確認済みにして閉じる |
デバイス(共通)
| ツール | パラメータ | 説明 |
|---|---|---|
list_devices |
edge_pc_id |
指定エッジPCのカメラとセンサの一覧(AI アプリは含まない) |
list_local_cameras |
edge_pc_id |
エッジPCに物理接続された USB / CSI カメラを検出する |
add_camera_device |
edge_pc_id, name, note?, manufacturer?, model?, serial_number?, camera_kind?, ソース欄, width?, height?, fps?, audio? |
カメラを登録する(下記「カメラ種別とソース欄」参照)。audio の既定は false(音声なし) |
update_device |
device_id, name?, note?, manufacturer?, model?, serial_number?, mac_address?, ソース欄, width?, height?, fps?, audio? |
名前・メモ・機器情報・映像ソース・解像度・音声を変更する(名前・メモ・機器情報は全種別、それ以外はカメラのみ)。機器情報は空文字で消去 |
remove_device |
edge_pc_id, device_id |
カメラ・センサの登録を解除する(AI アプリは管理ダッシュボードの AI アプリの画面から消す) |
カメラ種別とソース欄
camera_kind によって使うソース欄が変わります。省略時は rtsp です。
camera_kind |
ソース欄 | 例 |
|---|---|---|
rtsp |
rtsp_url |
rtsp://192.168.1.100:554/stream1 |
http |
source_url |
http://192.168.1.100/video.mjpg(HLS の .m3u8 も可) |
usb |
video_device |
/dev/v4l/by-id/usb-...-video-index0 |
csi |
camera_index |
0 |
usb / csi は先に list_local_cameras を呼んで値を取得してください(デバイスパスは推測できません)。width / height / fps は取り込み解像度で、rtsp では使いません(カメラ本体の設定に従います)。カメラ種別は登録後に変更できません(別の機器になるため、削除して登録し直します)。
カメラの映像・画像
| ツール | パラメータ | 説明 |
|---|---|---|
get_device_snapshot |
edge_pc_id, device_id |
低解像度(横 320px)の最新フレーム。画像として返る |
capture_device_image |
edge_pc_id, device_id, inline?, max_width? |
高解像度の静止画を撮る。既定は署名付き URL |
start_rtmp_stream |
device_id, rtmp_url, stream_key, resolution? |
YouTube Live などへの外部配信を開始する。rtmp_url は rtmp:// か rtmps:// で始まる URL |
stop_rtmp_stream |
device_id |
外部配信を停止する |
get_rtmp_status |
device_id |
外部配信の状態と、載せている編集(テロップ・モザイク)の件数を取得する |
センサ
| ツール | パラメータ | 説明 |
|---|---|---|
get_sensor_reading |
device_id |
センサの現在値(値・単位・接続状態) |
get_sensor_history |
device_id, from?, to?, bucket? |
センサの履歴を時間バケットで集計して取得 |
AI アプリ
カメラに追加した AI アプリは、機器ではないのでデバイスのツールには出ません。1 件(インスタンス)が 1 台のカメラの映像を読み、結果を記録します。
| ツール | パラメータ | 説明 |
|---|---|---|
list_ai_app_instances |
edge_pc_id?, ai_app_id? |
カメラに追加した AI アプリの一覧(入力元のカメラ・記録する metric_key 付き) |
get_ai_app_instance |
instance_id |
最新の結果(検出数・最上位ラベル、メーター読み取りなら読んだ値) |
get_ai_app_history |
instance_id, from?, to?, bucket? |
結果の履歴を時間バケットで集計して取得 |
list_ai_events |
instance_id?, ai_app_id?, event_type?, plate?, since?, limit? |
在/不在ルールの切り替わりとナンバーの読み取りを新しい順に取得 |
ダッシュボード
| ツール | パラメータ | 説明 |
|---|---|---|
list_dashboards |
なし | ダッシュボード一覧(id / 名前 / ウィジェット数) |
get_dashboard |
dashboard_id |
ウィジェットを含むダッシュボードの取得 |
create_dashboard |
name, description?, widgets? |
ダッシュボードを作成(ウィジェットごと一括作成も可) |
update_dashboard |
dashboard_id, name?, description?, widgets? |
名前・説明の変更、またはウィジェット全体の置き換え |
delete_dashboard |
dashboard_id |
ダッシュボードをゴミ箱へ移動(30 日以内なら画面から復元可) |
add_widget |
dashboard_id, widget |
ウィジェットを 1 つ追加(既存は保持) |
remove_widget |
dashboard_id, widget_id |
ウィジェットを 1 つ削除 |
list_metrics |
なし | ウィジェットに指定できる metric_key とセンサの一覧 |
クエリ(SQL)
| ツール | パラメータ | 説明 |
|---|---|---|
describe_query_schema |
なし | run_query で使える表・列の定義 |
run_query |
sql |
読み取り専用 SQL(SELECT / WITH のみ)を実行 |
list_queries |
なし | 保存クエリの一覧 |
get_query |
query_id |
保存クエリを SQL 込みで取得 |
create_query |
name, sql, chart_config? |
クエリを保存 |
update_query |
query_id, name?, sql?, chart_config? |
保存クエリを更新(chart_config: null でグラフ設定を消去) |
delete_query |
query_id |
保存クエリをゴミ箱へ移動(30 日以内なら画面から復元可) |
ONVIF カメラ
| ツール | パラメータ | 説明 |
|---|---|---|
onvif_discover_cameras |
edge_pc_id |
エッジPC から LAN 上の ONVIF カメラを探す |
onvif_probe_camera |
edge_pc_id, host, port?, username?, password? |
機器情報とメディアプロファイル(RTSP URL 込み)を取得 |
onvif_get_device_info |
edge_pc_id, device_id |
登録済みカメラの機器情報 |
onvif_get_ptz_status |
edge_pc_id, device_id |
PTZ の現在位置(左右・上下は -1〜1、ズームは 0〜1)と動作中かどうか |
onvif_register_camera |
edge_pc_id, name, host, rtsp_url, port?, username?, password?, profile_token?, manufacturer?, model?, serial_number? |
探索したカメラをデバイスとして登録。onvif_probe_camera の deviceInfo を機器情報に渡せます |
onvif_ptz_control |
edge_pc_id, device_id, action, pan?, tilt?, zoom?, preset_token? |
パン・チルト・ズーム・プリセット移動・停止。action は relative(現在位置から決まった量だけ動かす) / absolute(位置を指定して動かす) / continuous(停止するまで動かし続ける) / stop / preset |
onvif_set_imaging |
edge_pc_id, device_id, brightness?, color_saturation?, sharpness?, contrast? |
明るさ・彩度・シャープネス・コントラストの変更 |
onvif_reboot_camera |
edge_pc_id, device_id |
カメラを再起動 |
撮影
撮影の撮影プリセットの向きと、メディアビューワーに保存した写真を扱います。場所は向きの名前(現場の呼称。「1 工区」「調整池」など)で指定します。 向きの無い撮影プリセットは、プリセット名がそのまま場所の名前になります。撮影ジョブ・撮影プリセット・外部送信先の登録は管理ダッシュボードの「撮影」で行い、ここでは参照・撮影と写真の保護を扱います。
| ツール | パラメータ | 説明 |
|---|---|---|
list_presets |
device_id? |
撮影プリセットと、それぞれの向き(名前・撮る順・ズームの覚え書き・外しているか・最終撮影時刻)の一覧。device_id を省くと組織内のすべて |
get_snapshot |
preset, preset_name?, datetime?, device_id?, full? |
その場所の、指定時刻に最も近い 1 枚。datetime を省くと最新 |
compare |
preset, preset_name?, date_a, date_b, device_id?, full? |
同じ場所の 2 時点の写真を並べて返す |
capture |
preset, preset_name?, zoom?, device_id? |
向きを 1 つその場で撮り、メディアビューワーにも保存する。撮影中のジョブには割り込み、ジョブは後で残りの向きを撮る |
protect_photo |
preset, preset_name?, datetime, protect?, device_id? |
その場所の、指定時刻に最も近い 1 枚を保護する。protect に false を渡すと解除する |
presetには向きの名前を渡します(パラメータ名は変えていません)。同じ名前の向きが複数の撮影プリセットにあるときはpreset_name(撮影プリセットの名前)を、複数のカメラにあるときはdevice_idを添えます。- 名前は表記ゆれを吸収します。 完全一致 → 前方一致 → 部分一致の順に探し、全角・半角と空白の違いは無視します。複数の場所が該当したときは候補を返すので、
preset_nameかdevice_idを添えて呼び直してください。 - 対象はメディアビューワーに保存したすべての撮影の写真です(スケジュール・手動・外部 API・エッジ内・その場で撮影のどれで撮ったかを問いません)。
- 画像は既定で横 1280px 程度に縮小したものを返します。 原寸(4K)が要るときだけ
fullにtrueを渡してください。 - 写真は撮ったエッジPC から読み出します。 エッジPC がオフラインの間は「画像を取得できませんでした(エッジPC がオフラインの可能性があります)。」を返します。
compareは写真を並べて返すだけで、差分は検出しません。 何が変わったかの判断は読み手(AI と人)に委ねる設計です。protect_photoで保護した写真は、エッジPC の保存先が満杯になっても、保護していない録画と写真を消し切るまで残ります。 エッジPC がオフラインのときは失敗します。get_snapshotとcompareは、保護した写真に「保護中」と添えて返します。captureは向きが登録された場所だけ撮れます(向きの無い撮影プリセットは、撮影ジョブのrun_capture_jobで撮ります)。外部送信先へは送りません。zoomは 0(引き)〜1(寄り)で、向きに登録されたズームを一時的に上書きします。
撮影ジョブを扱うツールです。
| ツール | パラメータ | 説明 |
|---|---|---|
list_capture_jobs |
device_id? |
撮影ジョブの一覧(カメラと撮影プリセットの ID・撮るもの(kind が photo か clip、録画は clipSeconds 秒)・外部送信先の名前・メディアビューワーに保存するか・スケジュール(cron 式を含む)・許可しているトリガー)。外部送信先の認証情報は含まない |
list_capture_deliveries |
job_id?, run_id?, device_id?, status?, limit? |
撮影ログ(写真 1 枚ごとの撮影と外部送信の結果)を新しい順に返す。status は pending / sent / failed / abandoned / captured(保存のみ)、limit は 1〜200(既定 50) |
run_capture_job |
job_id, payload? |
いま 1 回撮影する(撮影プリセットの向きを順に撮り、ジョブの出力どおり保存・送信する)。payload は外部送信先へ一緒に渡す JSON(4KB まで)。実行 ID(run_id)を返す |
run_capture_jobの結果は、返ったrun_idをlist_capture_deliveriesに渡して確かめます。 撮影は依頼を受け付けた後にエッジPC で進むので、向きの多いジョブは結果が揃うまで時間がかかります。run_capture_jobは無効にしたジョブでは失敗します。 外部 API からの起動を許可していないジョブでも実行できます(MCP の操作スコープで行う手動実行として扱い、撮影ログのトリガーは「手動」になります)。
録画
カメラの録画のうち残したい区間を自動削除から保護するほか、録画と静止画の保存サイズを変えられます(→ 録画を保護する、保存サイズを選ぶ)。
| ツール | パラメータ | 説明 |
|---|---|---|
list_protected_recordings |
device_id |
保護した区間の一覧を返す(id / fromAt / toAt / note / createdAt) |
protect_recording |
device_id, from, to, note? |
区間(最大 7 日)を自動削除から保護する。from / to は ISO 8601(タイムゾーン付き) |
unprotect_recording |
device_id, range_id |
保護を解除する。range_id は list_protected_recordings の id |
get_camera_storage_settings |
device_id |
録画と静止画の保存サイズ(maxWidth。0 はパススルー)と判断材料をまとめて返す。判断材料は、カメラが実際に出している映像(コーデック・解像度・fps・ビットレート)、録画に書いているビットレートと 1 日あたりの容量、エッジPC の CPU の型番・コア数・使用率(エッジPC がオフラインのときは null)、録画先の空き容量 |
update_camera_storage_settings |
device_id, recording_max_width?, still_max_width?, retention_days? |
録画の幅の上限・静止画の幅の上限(どちらも 0 はパススルー、それ以外は 320〜3840px)と録画の保持日数を変える |
- 保護はエッジPC に対して行うので、エッジPC がオフラインのときは失敗します。 1 台のカメラで保護できるのは 200 区間までです。
- 保護してもエッジPC の外には残りません。 エッジPC の故障・撤去では失われ、保存先が満杯になれば保護した録画も古い順に消えます。
- 「録画の容量を減らしたい」と頼むと、AI は
get_camera_storage_settingsの値から推奨を出せます。 録画の縮小はエッジPC の CPU を常時使う(Raspberry Pi 5 で 1 台あたり 1 コアの約 6 割)ので、CPU の余裕が無ければ縮小を勧めません。カメラのビットレートが既に低いと縮小しても容量はあまり減らないため、カメラ側の設定を変える案も出します。
よく使うツールの詳細
list_edge_pcs
組織内のエッジPC一覧を返します。ほとんどの操作は edge_pc_id を必要とするため、多くの場合これが起点になります。
パラメータ: なし
レスポンス例:
[
{
"id": "edge-pc-test-001",
"organizationId": "org-test-001",
"name": "拠点A(テストエッジPC)",
"note": "1F 東側の制御盤内",
"thingName": "edge-device-01",
"baseUrl": "https://edge-01.example.com",
"createdAt": "2026-06-17T10:00:00.000Z",
"updatedAt": "2026-06-17T10:00:00.000Z"
}
]
thingName が画面でいう EDGE ID、baseUrl が Base URL です。note は画面の メモ(未設定なら null)。
list_devices
指定したエッジPCに登録されているカメラとセンサを返します。カメラに追加した AI アプリは含みません(list_ai_app_instances で取得します)。
パラメータ:
| パラメータ | 型 | 必須 | 説明 |
|---|---|---|---|
edge_pc_id |
string | ✓ | エッジPC ID(list_edge_pcs で確認) |
レスポンス例:
[
{
"id": "edge-device-01__8f14e45f-ceea-467a-9f3b-1b2c3d4e5f60",
"edgePcId": "edge-pc-test-001",
"edgePcName": "拠点A(テストエッジPC)",
"type": "camera",
"name": "工場エントランス",
"note": "1F 東側の天井。脚立が必要",
"cameraKind": "rtsp",
"rtspUrl": "rtsp://192.168.1.100:554/stream1",
"createdAt": "2026-06-17T10:05:00.000Z"
}
]
type は camera か sensor です。note は画面の メモ(未設定なら null)。カメラは cameraKind(rtsp / usb / csi / http)に応じて rtspUrl / sourceUrl / videoDevice / cameraIndex のいずれかが埋まります。URL に含まれるパスワードは rtsp://admin:***@192.168.1.100:554/stream1 のように伏せて返します。伏せたままの URL を update_device に渡すとエラーになるので、映像ソースを変えるときは実際のパスワードを入れて渡してください。
list_local_cameras
エッジPCに物理接続された USB / Web カメラ・Raspberry Pi のカメラモジュールを検出します。add_camera_device で camera_kind に usb / csi を使う前に呼び、id をそのまま video_device / camera_index に渡してください(デバイスパスは推測できません)。
パラメータ:
| パラメータ | 型 | 必須 | 説明 |
|---|---|---|---|
edge_pc_id |
string | ✓ | エッジPC ID |
レスポンス例:
{
"cameras": [
{
"kind": "usb",
"id": "/dev/v4l/by-id/usb-046d_HD_Pro_Webcam_C920_9A8B-video-index0",
"name": "HD Pro Webcam C920",
"devicePath": "/dev/video0",
"modes": [{ "format": "mjpeg", "width": 1280, "height": 720, "fps": [30] }]
}
],
"tools": { "v4l2Ctl": true, "rpicamHello": false }
}
id は再起動や挿し直しでも変わらないパスです(devicePath は表示用で、認識順に振られるため登録には使いません)。modes は width / height / fps に指定できる組み合わせです。
エッジPCがオフラインでも検出ツールが未導入でもエラーにはならず、空の一覧を返します。 tools.v4l2Ctl(USB)・tools.rpicamHello(CSI)が false なら、その種別は検出できません。
get_device_snapshot
最新フレームを横 320px の低解像度(アスペクト比は維持)で返します。生存確認やざっと様子を見る用途向けです。画像コンテンツとして返るため、AI エージェントはそのまま内容を読み取れます。
パラメータ: edge_pc_id, device_id(ともに必須)
保存・外部サービスへの受け渡しなど高解像度が必要な場合は capture_device_image を使ってください。
capture_device_image
その場で高解像度の静止画を撮ります。
パラメータ:
| パラメータ | 型 | 必須 | 説明 |
|---|---|---|---|
edge_pc_id |
string | ✓ | エッジPC ID |
device_id |
string | ✓ | カメラのデバイス ID |
inline |
boolean | — | true で画像を直接返す(既定 false) |
max_width |
number | — | inline=true のときの最大幅 px(既定 1920) |
既定(inline 省略時)は、短時間だけ有効な署名付き URL を返します。認証ヘッダなしで取得できるので、コードで取得して外部サービス(Google Drive・kintone など)へアップロードする用途に向いています。
{
"image_url": "https://edge-01.example.com/capture/edge-device-01__8f14e45f-ceea-467a-9f3b-1b2c3d4e5f60?...",
"expires_at": "2026-06-17T10:35:00.000Z",
"resolution": "source"
}
inline: true を指定すると、URL ではなく画像そのものが返ります(max_width に縮小)。コード実行のできないクライアントではこちらを使ってください。
get_sensor_reading
センサの現在値を返します。値は単位を持たない数値で、単位・表示名は metric_key の定義から付与されます。
パラメータ: device_id(必須)
レスポンス例:
{
"device_id": "edge-device-01__c9b1d2e3-4a5b-6c7d-8e9f-0a1b2c3d4e5f",
"name": "電子天秤 001",
"edge_pc": "拠点A(テストエッジPC)",
"metric_key": "weight",
"display_name": "重量",
"unit": "kg",
"value": 12.34,
"connected": true,
"updated_at": "2026-06-17T10:30:05.000Z",
"record_history": true
}
センサ以外のデバイス ID を渡すとエラーになります。AI アプリの最新の結果は get_ai_app_instance で取得します。
get_sensor_history
センサの履歴を時間バケットで集計して返します。
パラメータ:
| パラメータ | 型 | 必須 | 説明 |
|---|---|---|---|
device_id |
string | ✓ | センサのデバイス ID |
from |
string | — | ISO 8601 の開始時刻(既定: 1 時間前) |
to |
string | — | ISO 8601 の終了時刻(既定: 現在) |
bucket |
string | — | 集計幅。10 seconds / 1 minute / 5 minutes / 1 hour(既定: 1 minute) |
レスポンス例:
{
"device_id": "edge-device-01__c9b1d2e3-4a5b-6c7d-8e9f-0a1b2c3d4e5f",
"bucket": "1 minute",
"from": "2026-06-17T09:30:00.000Z",
"to": "2026-06-17T10:30:00.000Z",
"points": [
{ "ts": "2026-06-17T09:30:00.000Z", "metric_key": "weight", "value": 12.1, "min": 12.0, "max": 12.3, "count": 12 }
]
}
list_ai_app_instances
カメラに追加した AI アプリを新しい順に返します。
パラメータ:
| パラメータ | 型 | 必須 | 説明 |
|---|---|---|---|
edge_pc_id |
string | — | このエッジPC のものだけに絞る |
ai_app_id |
string | — | AI アプリの ID(license-plate / object-detection など)で絞る |
レスポンス例:
[
{
"instance_id": "edge-device-01__2b7e1516-28ae-4d2a-a6d2-15b2c3d4e5f6",
"ai_app_id": "object-detection",
"name": "入口の人数",
"note": null,
"edge_pc_id": "edge-pc-test-001",
"edge_pc": "拠点A(テストエッジPC)",
"camera_id": "edge-device-01__8f14e45f-ceea-467a-9f3b-1b2c3d4e5f60",
"camera": "工場エントランス",
"metric_keys": ["object_count"],
"created_at": "2026-09-30T02:41:28.009Z"
}
]
camera_id は映像を読むカメラのデバイス ID です。metric_keys は結果を記録する計測項目で、run_query やダッシュボードのウィジェットにも使えます。
get_ai_app_instance
AI アプリのインスタンス 1 件と、最新の結果を返します。
パラメータ: instance_id(必須。list_ai_app_instances で確認)
レスポンス例:
{
"instance_id": "edge-device-01__2b7e1516-28ae-4d2a-a6d2-15b2c3d4e5f6",
"ai_app_id": "object-detection",
"name": "入口の人数",
"camera": "工場エントランス",
"metric_keys": ["object_count"],
"connected": true,
"last_error": null,
"latest": { "count": 3, "top_label": "person", "top_confidence": 0.91, "value": null, "unit": null, "updated_at": null }
}
推論のアプリは count・top_label・top_confidence、メーター読み取りは value・unit・updated_at が入り、使わない項目は null です。まだ結果が無ければ latest が null になります。
get_ai_app_history
AI アプリの結果の履歴を時間バケットで集計して返します。パラメータは instance_id(必須)と、get_sensor_history と同じ from / to / bucket です。レスポンスも同じ形で、device_id の代わりに instance_id が入ります。
list_ai_events
AI アプリのイベントを新しい順に返します。在/不在ルールの切り替わり(presenceStart / presenceEnd)と、ナンバーの読み取り(plateRead)です。イベントは 30 日間残ります。
パラメータ:
| パラメータ | 型 | 必須 | 説明 |
|---|---|---|---|
instance_id |
string | △ | AI アプリのインスタンス ID。instance_id か ai_app_id のどちらかを指定します |
ai_app_id |
string | △ | AI アプリの ID(license-plate / object-detection など)。そのアプリの全インスタンスが対象です |
event_type |
string | — | presenceStart / presenceEnd / plateRead で絞り込む |
plate |
string | — | 番号の部分一致(plateRead のみ。1〜40 文字) |
since |
string | — | ISO 8601。この時刻以降のイベントだけを返す |
limit |
number | — | 取得件数(1〜200、既定 50) |
レスポンス例:
{
"total": 1,
"events": [
{
"id": "…",
"ts": "2026-09-28T10:30:01.000Z",
"instanceId": "edge-device-01__8f14e45f-ceea-467a-9f3b-1b2c3d4e5f60",
"instanceName": "ゲートのナンバー読み取り",
"edgePcName": "第1工場",
"eventType": "plateRead",
"ruleId": null,
"detail": { "plate": "品川300あ1234", "confidence": 0.98, "bbox": { "x": 0.41, "y": 0.62, "width": 0.12, "height": 0.06 } },
"hasPhoto": true
}
]
}
list_metrics
ダッシュボードのウィジェットを組む前に、指定できる metricKey と deviceId / edgePcId を調べるためのカタログです。
パラメータ: なし
レスポンス例:
{
"metrics": [{ "metricKey": "weight", "displayName": "重量", "unit": "kg" }],
"devices": [
{
"deviceId": "edge-device-01__c9b1d2e3-4a5b-6c7d-8e9f-0a1b2c3d4e5f",
"name": "電子天秤 001",
"edgePcId": "edge-pc-test-001",
"edgePcName": "拠点A(テストエッジPC)",
"metricKeys": ["weight"]
}
]
}
create_dashboard / add_widget
ウィジェットは get_dashboard の結果と同じ camelCase で受け渡します(結果をそのまま編集して書き戻せます)。id と layout は省略でき、自動で補われます。
ウィジェットの型:
type |
内容 | 参照するもの |
|---|---|---|
timeseries |
時系列の折れ線 | query |
bar |
棒グラフ | query |
stat |
単一数値(KPI) | query |
summaryTable |
センサ × metric のサマリー表 | query |
queryTable |
保存クエリの結果を表で表示 | queryId |
queryChart |
保存クエリの結果をグラフで表示 | queryId |
リクエスト例:
{
"name": "拠点A 重量モニタ",
"widgets": [
{
"type": "stat",
"title": "現在の重量",
"query": { "metricKey": "weight", "deviceId": "edge-device-01__c9b1d2e3-4a5b-6c7d-8e9f-0a1b2c3d4e5f" }
},
{ "type": "timeseries", "title": "重量の推移", "query": { "metricKey": "weight" } }
]
}
queryTable / queryChart は query ではなく queryId(list_queries / create_query で得た保存クエリの ID)を指定します。
run_query / describe_query_schema
センサ・AI 推論の履歴に対して、読み取り専用の SQL を直接実行できます。先に describe_query_schema を呼んで表・列を確認してください。
- 実行できるのは
SELECT/WITHで始まる単一文だけです。 - 自組織の行しか返りません。
tenant_idの条件を書く必要はありません。 - MCP 経由の結果は 200 行で打ち切られます。より多くの行が必要な場合は集計するか、管理ダッシュボードのクエリから CSV で書き出してください。
レスポンス例:
{
"columns": ["device_id", "avg_value"],
"rows": [{ "device_id": "edge-device-01__c9b1d2e3-4a5b-6c7d-8e9f-0a1b2c3d4e5f", "avg_value": 12.2 }],
"rowCount": 1,
"truncated": false,
"elapsedMs": 42
}
truncated が true のときは上限で打ち切られています。
エラー
エラー時は、isError を立てたテキストが返ります。構造化されたエラーコードは返しません。
主なメッセージです。
| メッセージ | 意味 |
|---|---|
Edge PC not found |
edge_pc_id が存在しないか、トークンの組織のものではない |
Device not found |
device_id が存在しないか、トークンの組織のものではない |
Device is not a sensor |
センサ用のツールにカメラ等の ID を渡した |
No frame available / Capture failed |
エッジPCから画像を取得できなかった(オフライン・カメラ未接続など) |
Dashboard not found / Query not found |
指定した ID のダッシュボード / 保存クエリが無い |
| SQL のエラーメッセージ | run_query に渡した SQL が不正(SELECT 以外、構文エラーなど) |
メッセージは英語です(Edge PC not found など)。
認証に失敗した場合は、ツール呼び出し以前に HTTP 401({"error":"Unauthorized"})が返ります。