emqx-mcp-server

hybrid server

The server is able to function both locally and remotely, depending on the configuration or use case.

Integrations

  • Allows interaction with MQTT clusters on EMQX Cloud or self-hosted clusters, enabling clients to list connected MQTT clients, retrieve client information, disconnect clients, and publish messages to MQTT topics

EMQX MCP サーバー

EMQX MQTTブローカーとの連携を可能にするモデルコンテキストプロトコル(MCP)サーバー実装。MCPクライアントがEMQX Cloudまたはセルフホスト型クラスター上のMQTTクラスターと連携できるようにします。

特徴

MQTTクライアント管理

  • クライアントリスト: 柔軟なフィルタリングオプションを使用して、接続されているすべての MQTT クライアントを表示します。
  • クライアント情報: 特定のクライアントに関する詳細情報を取得します
  • 接続制御: 問題のあるクライアントや古いクライアントをブローカーから切断します
  • 柔軟なフィルタリング: ノード、ユーザー名、クライアント ID、接続状態などでクライアントをフィルタリングします。

MQTT メッセージパブリッシング

  • トピックベースのパブリッシング:任意のMQTTトピックにメッセージを送信します
  • QoS制御: 信頼性の高い配信のためにサービス品質レベル(0、1、または2)を選択します。
  • メッセージの保持: 新規購読者へのメッセージを保持するオプション
  • カスタムペイロード: あらゆるメッセージコンテンツ形式をサポート

ツール

リスト_mqtt_クライアント

  • EMQX クラスターに接続されている MQTT クライアントを一覧表示します
  • 入力:
    • ページ(数値、オプション):ページ番号(デフォルト:1)
    • 制限(数値、オプション):1ページあたりの結果数(デフォルト:100、最大10000)
    • node (文字列、オプション): 特定のノード名でフィルタリング
    • clientid (文字列、オプション): 特定のクライアントIDでフィルタリング
    • ユーザー名(文字列、オプション):特定のユーザー名でフィルタリング
    • ip_address (文字列、オプション): クライアントのIPアドレスでフィルタリング
    • conn_state (文字列、オプション): 接続状態でフィルタリングする
    • clean_start (ブール値、オプション): クリーンスタートフラグでフィルタリング
    • proto_ver (文字列、オプション): プロトコルバージョンでフィルタリング
    • like_clientid (文字列、オプション): クライアントIDパターンによるあいまい検索
    • like_username (文字列、オプション): ユーザー名パターンによるあいまい検索
    • like_ip_address (文字列、オプション): IPアドレスパターンによるあいまい検索

get_mqtt_client

  • クライアントIDで特定のMQTTクライアントの詳細情報を取得します
  • 入力:
    • clientid (文字列、必須): 取得するクライアントの一意の識別子

kick_mqtt_client

  • クライアントIDでMQTTブローカーからクライアントを切断する
  • 入力:
    • clientid (文字列、必須): 切断するクライアントの一意の識別子

publish_mqtt_メッセージ

  • EMQX クラウドまたはセルフマネージド デプロイメント上の EMQX クラスターに MQTT メッセージをパブリッシュする
  • 入力:
    • topic (文字列、必須): 公開先のMQTTトピック
    • ペイロード(文字列、必須): 公開するメッセージの内容
    • qos (数値、オプション): サービス品質レベル (0、1、または 2) (デフォルト: 0)
    • retain(ブール値、オプション):メッセージを保持するかどうか(デフォルト:false)

EMQXクラスターのセットアップ

EMQX MCPサーバーツールを使用する前に、APIキーとクライアント認証を適切に設定したEMQXクラスターをセットアップする必要があります。いくつかのオプションがあります。

  1. EMQX クラウド サーバーレス デプロイメント:
  • 始めるのに最も簡単な方法。
  • EMQX Cloudから無料のサーバーレスデプロイメントを入手する
  • EMQX Cloud Serverlessにサインアップ
  1. EMQX クラウド専用展開:
  • 本番環境のワークロードに専用のリソースを提供する
  • 強化されたパフォーマンス、信頼性、カスタマイズオプションを提供
  • さまざまなクラウドプロバイダー(AWS、GCP、Azure)をサポート
  • プロフェッショナルなSLAとサポートが含まれています
  • EMQX Cloud Dedicatedでデプロイメントを作成する
  1. セルフホスト型 EMQX プラットフォーム:
  • EMQXプラットフォームをローカルにダウンロードして展開する
  • EMQXプラットフォームのインストール手順に従ってください。

Claudeデスクトップアプリでローカルで実行する

オプション1: Smithery経由でインストールする

Smithery経由で Claude Desktop 用の emqx-mcp-server を自動的にインストールするには:

npx -y @smithery/cli install @Benniu/emqx-mcp-server --client claude

オプション2: Docker

  1. Claude デスクトップ アプリをまだインストールしていない場合はインストールしてください。
  2. イメージをプルします:
    docker pull benniuji/emqx-mcp-server
  3. claude_desktop_config.jsonファイルに次の内容を追加します。
    • MacOSの場合: ~/Library/Application\ Support/Claude/claude_desktop_config.json
    • Windows の場合: %APPDATA%/Claude/claude_desktop_config.json
    { "mcpServers": { "EMQX_MCP_Server": { "command": "docker", "args": [ "run", "-i", "--rm", "-e", "EMQX_API_URL=https://your-emqx-cloud-instance.com:8443/api/v5", "-e", "EMQX_API_KEY=<YOUR-API-KEY>", "-e", "EMQX_API_SECRET=<YOUR-API-SECRET>", "benniuji/emqx-mcp-server" ] } } }

    注: 環境変数EMQX_API_URLEMQX_API_KEYEMQX_API_SECRETを更新してください。

  4. Claudeデスクトップアプリを開くか再起動する
  5. Claude に MQTT ブローカーで何かを実行するように依頼してみてください (たとえば、トピックに MQTT メッセージを公開するように依頼します)。

オプション3: 手動インストール

まず、 uv実行ファイルがインストールされていることを確認してください。まだインストールされていない場合は、こちらの手順に従ってインストールできます。

  1. Claude デスクトップ アプリをまだインストールしていない場合はインストールしてください。
  2. このリポジトリをクローンします。
  3. claude_desktop_config.jsonファイルに次の内容を追加します。
    • MacOSの場合: ~/Library/Application\ Support/Claude/claude_desktop_config.json
    • Windowsの場合: %APPDATA%/Claude/claude_desktop_config.json GXP4

    注意: path/to/repo/src/emqx_mcp_server実際のパスに更新し、環境変数EMQX_API_URLEMQX_API_KEY 、およびEMQX_API_SECRETを EMQX インスタンスに合わせて変更してください。

  4. Claudeデスクトップアプリを開くか再起動する
  5. Claude に MQTT ブローカーで何かを実行するように依頼してみてください (たとえば、トピックに MQTT メッセージを公開するように依頼します)。

プロンプトの例

ユーザー:

Please list the clients connected to the MQTT broker.

法学修士:

Here are the clients currently connected to your MQTT broker: Connected Client: - Client ID: mqttx_2232bdb1 - Username: test - Protocol: MQTT v5 ... There is currently 1 client connected to your MQTT broker. Would you like more detailed information about this specific client or would you like to perform another action with your MQTT broker?

ユーザー:

Yes, please provide the detail info of this client.

法学修士:

I'll retrieve the detailed information for this client for you. ... Here's the detailed information for client "mqttx_2232bdb1": **Basic Information:** - **Client ID:** mqttx_2232bdb1 - **Username:** test ... **Connection Details:** - **Connected:** Yes - **Created At:** 2025-03-02T05:29:51.103+00:00 ... Would you like to perform any actions with this client, such as publishing a message to a topic or disconnecting the client?

ユーザー:

Please write a poem and send it to the topic '/poem' with QoS 1.

法学修士:

I'll create a poem and publish it to the topic '/poem' with QoS 1. Let me do that for you. ... I've successfully published the poem to the topic '/poem' with QoS 1. The message has been delivered with ID: 00062F55A1EFB1156ABC481240B30000. The poem I sent was: - Signals in the ether, - Invisible threads that bind, - Devices speak in whispers, - Across the digital divide. - Messages like leaves falling, - From cloud to waiting ground, - Connected yet untethered, - Where silence makes no sound. - Brokers of the modern age, - Routing dreams from here to there, - In this web of connections, - We find ourselves everywhere. - Like stars in constellation, - Each point of light has worth, - The language of machines, - Redefining our Earth. Is there anything else you'd like to do with your MQTT broker?

ユーザー:

Please kick out the client mqttx_2232bdb1

法学修士

I'll disconnect the client from the MQTT broker for you. ... The client has been successfully disconnected. The system returned: > Client mqttx_2232bdb1 has been disconnected The MQTT client with ID "mqttx_2232bdb1" is now disconnected from your broker. Is there anything else you would like to do with your MQTT broker?

ライセンス

このプロジェクトは、Apache License バージョン 2.0 に基づいてライセンスされています。詳細については、 LICENSEファイルを参照してください。

ID: m7zgbcr053