最初のエージェントのビルドとデプロイ
このガイドでは、EMQX Agents を使ってイベント駆動型のエージェントを作成する手順を説明します。工場のデバイスからの MQTT メッセージを監視し、各読み取り値をローリング平均と比較して、デバイスの平均温度がしきい値を超えた場合にアラートをパブリッシュする温度異常監視エージェントを構築します。
このガイドの終了時には、以下が揃っています。
- EMQX Broker に接続された稼働中の EMQX Agents デプロイメント
- ブローカー用に設定されたコネクター
- ライブ MQTT イベントに反応するデプロイ済みのエージェント
前提条件
- 有効なプロジェクトを持つ EMQX Cloud アカウント
- 稼働中の状態にある EMQX ブローカーのデプロイメント。ブローカーは EMQX Agents のデプロイメントと同じプロジェクトおよびリージョン内である必要があります。
- テストメッセージをパブリッシュするための MQTT クライアント(例:MQTTX)
ステップ 1: EMQX Agents デプロイメントをリクエストする
EMQX Agents は現在プライベートベータとして提供されています。デプロイメントはサポートチケットを提出後、EMQX チームによってプロビジョニングされます。
EMQX Cloud コンソールにログインし、プロジェクトを開きます。
EMQX Agents カードで Join Beta をクリックします。

開いた Support Tickets ページで + New をクリックしてチケットを作成します。
件名と説明が事前入力されたチケットフォームが開きます。必要に応じて編集し、Confirm をクリックして送信します。
EMQX チームがプロジェクト用のデプロイメントをプロビジョニングし、通知します。デプロイメントが準備できたらクリックして開きます。
ステップ 2: コネクターを追加する
エージェントが MQTT トピックをサブスクライブしたりメッセージをパブリッシュしたりする前に、EMQX Broker を指すコネクターを設定する必要があります。
EMQX Agents デプロイメントで左メニューの Connectors をクリックします。
Available タブで EMQX Broker を見つけて Add をクリックします。
Add Connector パネルで以下を入力します:
- Type:
EMQX Brokerが自動入力されています。 - Name: 例として
factory-brokerと入力します。 - Address: ブローカーのアドレスを
host:port形式で入力します。常にポート番号を含めてください。例:暗号化なしの MQTT はbroker.example.com:1883、TLS はbroker.example.com:8883。アドレスは EMQX ブローカーのデプロイメントの概要ページの MQTT Connection Information セクションで確認できます。 - Username と Password: EMQX ブローカーのデプロイメントの Access Control -> Authentication で設定した認証情報を入力します。
- Client ID Prefix: 空欄のままにします。クライアントIDはシステムが自動生成します。
- このガイドでは Enable TLS/SSL はオフ、Default QoS は
1のままにします。
- Type:
Confirm をクリックします。
コネクターは Added タブに表示され、Description 列にアドレスが表示されます。

ステップ 3: チャットを開始しエージェントを説明する
エージェントは会話を通じて構築されます。やりたいことを説明すると、LLM がエージェント定義を生成します。
左メニューの Chats をクリックし、+ New Chat をクリックします。
入力エリア左下のコネクターアイコンをクリックします。設定済みのコネクター一覧が表示されます。
factory-brokerにチェックを入れて、このセッションで利用可能にします。
入力欄にエージェントの動作を説明します。このガイドでは以下を入力します:
I want to monitor MQTT temperature events on the topic factory/+/+/temperature. Each message payload is JSON, for example: {"device_id": "dev-0042", "temp": 95.4} The agent should track the last 3 readings per device. If the rolling average exceeds 70, publish an alert to alerts/anomaly.右下のドロップダウンから思考モードを選択し、送信ボタンをクリックします。
LLM がリクエストを処理し、エージェントの指示を生成します。ローリング温度履歴を管理するスキルを書き、MQTT トリガーとパブリッシュツールを設定した完全なエージェント定義を組み立てます。
ステップ 4: エージェントのデプロイ
LLM によるエージェント定義の生成が完了すると、チャットの下部に Deploy Agent ボタンが表示されます。

Deploy Agent をクリックします。
ダイアログが表示され、Agent Name と Description が事前入力されています。必要に応じて編集し、Deploy Agent をクリックします。

エージェントの作成が即座に開始され、エージェント詳細ページに遷移します。
数分後、エージェントのステータスが Running になります。以下の5つのタブ(Overview, Runs, Trigger, Tools, Prompt)でチャットから生成された完全な設定を確認できます:
- Trigger: 種類は
mqtt、トピックはfactory/+/+/temperature、QoS は1、factory-brokerコネクターに接続。 - Tools:
mqtt.publish、alerts/anomalyトピックに制限。 - Prompt: LLM がこのエージェント用に書いた指示で、各イベントの動作を説明。

ステップ 5: エージェントをテストする
エージェントをトリガーし、動作を確認するためにテストメッセージを連続でパブリッシュします。
MQTT クライアントを開き、同じ認証情報で同じ EMQX Broker に接続します。
factory/+/+/temperatureにマッチするトピック、例えばfactory/plant-a/line-3/temperatureに複数のメッセージをパブリッシュします。JSON ペイロード例:json{"device_id": "dev-0022", "temp": 75.1}温度が70を超える値(例:
75.1、78.3、80.0)を少なくとも3回パブリッシュします。これによりエージェントはローリング平均を計算し、しきい値超過を検出できます。EMQX Agents デプロイメントに戻り、エージェントの Runs タブを開きます。
トリガートピックにマッチした各メッセージで1つの実行が作成され、各実行は success ステータスを示します。
実行IDをクリックして実行詳細ページを開きます。Timeline にはその実行のイベントシーケンスが表示されます:
イベント 説明 TRIGGER実行を開始した MQTT メッセージ(トピック含む) BUNDLE LOADEDエージェントのスキルと設定がロードされた CONTEXT LOADED会話コンテキストが準備された TOOLS RESOLVED利用可能なツールが解決された SYSTEM INITエージェントのプロンプトが適用された TOOL RESULTエージェントが呼び出した各ツールの結果(例: read、run_script、mqtt.publish)LLM CALLLLM 呼び出し(入力・出力トークン数付き) RESPONSE実行に対するエージェントの最終応答 RUN END実行の終了ステータス ローリング平均がしきい値を超えた場合、
mqtt.publishツールの結果がタイムラインに表示され、Response イベントでアラートのパブリッシュが確認できます。

オプション: MCP コネクターを使ったエージェントの構築
MCP コネクターを使うと、エージェントやチャットが Model Context Protocol(MCP)を通じて外部サービスを利用できます。
Slack などの外部サービスを使うエージェントを構築したい場合は、このオプションのフローを利用してください。このフローはメインの MQTT 温度監視とは異なるプロンプトを使うため、別のチャットを使います。
ステップ 1: MCP コネクターの追加
EMQX Agents デプロイメントで左メニューの Connectors をクリックします。
Available タブで MCP コネクターサービスとして Slack を見つけます。
コネクターカードの Add をクリックします。
Add Connector パネルでコネクター名を入力します(例:
ops-slack)。Type は選択したサービスで自動入力され、他の設定項目は不要です。Confirm をクリックします。

コネクターは Unauthorized ステータスで追加され、EMQX Agents が選択したサービスの認可ポップアップを開きます。外部認可フローを完了してください。認可成功後、Added タブでコネクターのステータスが Authorized に変わります。
ポップアップを閉じるか認可に失敗した場合は、Added タブに戻りコネクターの認可再試行アクションをクリックしてください。
ステップ 2: MCP コネクターを使ったチャットの開始
左メニューの Chats をクリックし、+ New Chat をクリックします。
入力エリア左下のコネクターアイコンをクリックします。
Connectors パネルで作成した MCP コネクターを選択します。
例では MQTT イベントと Slack 通知の両方を使うため、
factory-brokerと認可済みの Slack コネクターの両方を選択します。MCP コネクターは Authorized のものだけ選択可能です。表示されていて選択不可の場合は、Connectors ページに戻り認可を完了または再試行してください。

以下のプロンプトを入力します:
Listen to MQTT topic /devices/#. If the temperature in the MQTT message is above 30, please send a warning message to Slack. Channel: <channel-name>.<channel-name>は通知したい Slack チャンネル名に置き換えてください。思考モードを選択し、送信ボタンをクリックします。
LLM が選択した MCP コネクターのツールを含むエージェント定義を生成します。
ステップ 3: MCP エージェントのデプロイ
生成された定義が準備できたら Deploy Agent をクリックします。
事前入力された Agent Name と Description を確認し、Deploy Agent をクリックします。
エージェント詳細ページを開き、Tools と Prompt タブで生成されたエージェントが選択した MCP コネクターを使用していることを確認します。
ステップ 4: MCP エージェントのテスト
チャットプロンプトで指定した MQTT トピックと Slack アクションに従い、MCP エージェントをテストします。このテストフローはメインの温度異常監視とは異なります。
MQTT クライアントを使い、
/devices/#にマッチするトピック(例:/devices/device-001)にテストメッセージをパブリッシュします。json{"device_id": "device-001", "temperature": 31}プロンプトで指定した Slack チャンネルに警告メッセージが届いていることを確認します。
EMQX Agents に戻り、実行詳細ページを開きます。MCP コネクター呼び出しは実行タイムラインのツール結果として表示され、最終 Response イベントで結果が要約されます。
次にやること
- EMQX Tables コネクターを追加 してエージェントから時系列データのクエリや書き込みを行う。
- MCP コネクターの管理 で Gmail や Slack など外部サービスをエージェントに利用させる。
- エージェントの確認と管理 で実行履歴の監視、タイムラインの検査、動作更新による再デプロイを行う。
- コネクターの更新 で認証情報の変更や追加ブローカー接続の設定を行う。