最初のエージェントのビルドとデプロイ
このガイドでは、EMQX Agents を使ってイベント駆動型のエージェントを作成する手順を説明します。工場のデバイスからの MQTT メッセージを監視し、各読み取り値をローリング平均と比較し、デバイスの平均温度が閾値を超えた場合にアラートをパブリッシュする温度異常モニターを構築します。
このガイドの最後には、以下が完成します。
- EMQX Broker に接続された稼働中の EMQX Agents デプロイメント
- ブローカー用に設定されたコネクター
- ライブの MQTT イベントに反応するデプロイ済みエージェント
前提条件
- 有効なプロジェクトを持つ EMQX Cloud アカウント
- Running 状態の EMQX Broker デプロイメント
- テストメッセージをパブリッシュするための MQTT クライアント(例:MQTTX)
ステップ 1: EMQX Agents デプロイメントの作成
EMQX Agents はすべてのユーザーにパブリックベータとして提供されています。EMQX Cloud コンソールから直接 Agents デプロイメントを作成できます。
EMQX Cloud コンソールにログインし、プロジェクトを開きます。
EMQX Agents カードで + New をクリックします。

Agents デプロイメントのリージョンを選択します。Google Cloud のみがサポートされているクラウドプロバイダーです。
[任意] このガイドで Broker とプライベート接続を使用する場合は、Network Association (Optional) で Broker ネットワークを選択します。ネットワークの関連付けはコネクターが使用する Broker アドレスを変更しません。
Deploy をクリックし、操作を確認します。
デプロイメント作成後にネットワークを変更することはできません。フィールドの詳細説明やネットワークオプションについては、Create an EMQX Agents Deployment を参照してください。
デプロイメントのステータスが Running に変わったら、そのデプロイメントをクリックして開きます。
ステップ 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 Broker デプロイメントの概要ページの MQTT Connection Information セクションで確認できます。 - Username と Password: EMQX Broker デプロイメントの Access Control -> Authentication で設定した認証情報を入力します。
- Client ID Prefix: 空欄のままにします。クライアントIDはシステムが自動生成します。
- このガイドでは Enable TLS/SSL はオフ、Default QoS は
1のままにします。
- Type:
Confirm をクリックします。
コネクターは Added タブに表示され、Description 列にアドレスが表示されます。

ステップ 3: チャットを開始しエージェントを記述する
エージェントは会話を通じて構築されます。やりたいことを説明すると、LLM がエージェント定義を生成します。
左メニューの Chats をクリックし、+ New Chat をクリックします。
入力エリア左下のコネクターアイコンをクリックします。Connectors パネルが表示され、設定済みのコネクターが一覧で表示されます。
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 になります。4つのタブ(Overview, Runs, Configuration, Skills)でデプロイ済みエージェントとそのワークスペースを確認できます。
- Configuration: エージェントの指示、MQTT トリガー、
mqtt.publishツールが生成されています。トリガーはトピックフィルターfactory/+/+/temperature、QoS1、factory-brokerコネクターを使用します。パブリッシュツールはalerts/anomalyに制限されています。 - Skills: ローリング温度履歴を維持し、アラートをパブリッシュするタイミングを判断する生成されたスキルとサポートファイル。

ステップ 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つのランが作成されます。完了したランは Succeeded ステータスを表示します。
ラン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 パネルでコネクターの Name を入力します(例:
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 をクリックします。
エージェント詳細ページを開き、Configuration と Skills タブで生成されたエージェントが選択した 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 などの外部サービスをエージェントに利用させる。
- エージェントのレビューと管理 で実行履歴の監視、タイムラインの検査、動作更新による再デプロイを行う。
- コネクターの更新 で認証情報の変更や追加ブローカー接続の設定を行う。