Skip to content

MCP ブリッジプラグイン

EMQX MCP ブリッジプラグインは、EMQXをMCP(Model Context Protocol)対応デバイスと統合するためのプラグインです。このプラグインを使用することで、ユーザーはMCP対応の大規模言語モデルやAIエージェントを使ってIoTデバイスにアクセスし、制御することができます。

MCP ブリッジプラグインの仕組み

MCP ブリッジプラグインはEMQX内にインストールされて動作します。起動後、Streamable HTTPまたはSSEに基づくMCP接続をMQTTプロトコルに変換するHTTPエンドポイントを公開します。

IoTデバイスはMQTTを使ってEMQXブローカーに接続し、MCP対応の大規模モデルやAIエージェントはMCP ブリッジプラグインが公開するHTTPエンドポイントに接続します。

MCP over MQTTを使ったデバイスへのアクセス

デバイス側では、MCP over MQTTプロトコルを使用し、MCPサーバーとして自身のツールや機能を直接公開できます。プラグインはデバイスが登録したツールをツールタイプごとに集約します。MCP ブリッジプラグインでは、MCP over MQTTプロトコルのServer Nameの概念をツールタイプにマッピングしています。

つまり、同じタイプの複数デバイスが登録したツールは、ブリッジプラグインによって単一の論理的なツールに集約され、MCPクライアントから呼び出せるようになります。

この方式は、スマートホーム、産業制御システム、音声対応玩具など、単一または少数のデバイスにクライアントがアクセスするシナリオに適しています。これらのシナリオでは、ユーザーは大規模なデバイス群を管理するよりも、自分のデバイスにアクセスすることが主な目的です。

同じタイプの複数デバイスのツールが単一の論理ツールに集約されるため、MCP ブリッジプラグインはツール定義に必須パラメータとしてtarget-mqtt-client-idを注入します。AIエージェントがツールを呼び出す際には、ビジネスロジックに基づいて対象デバイスIDを判定し、このパラメータで指定する必要があり、これによりMCPリクエストが特定のデバイスにルーティングされます。

標準MQTTを使ったデバイスへのアクセス

デバイスはMCP over MQTTの代わりに標準MQTTプロトコルでEMQXに接続することも可能です。この場合、ユーザーはMCP ブリッジプラグイン内でMCPツールを直接実装し、これらの通常のMQTTデバイスに間接的にアクセスできます。

この方式は、スマートシティ、コネクテッドビークル、産業用IoTなど、より柔軟なデバイスアクセスが求められるシナリオに適しています。MCP ブリッジプラグイン内では、ユーザー定義の外部サービスやAPIへのアクセス、外部データベースからのデバイス報告データの取得など、任意のビジネスロジックを実装可能です。

MCPツールのコード実装例については、Create Custom MCP Toolsを参照してください。