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 客户端
  • 输入:
    • page(数字,可选):页码(默认值:1)
    • limit(数字,可选):每页结果数(默认值:100,最大 10000)
    • 节点(字符串,可选):按特定节点名称过滤
    • clientid(字符串,可选):按特定客户端 ID 进行过滤
    • 用户名(字符串,可选):按特定用户名过滤
    • ip_address(字符串,可选):按客户端 IP 地址过滤
    • conn_state(字符串,可选):按连接状态过滤
    • clean_start(布尔值,可选):按干净启动标志过滤
    • proto_ver(字符串,可选):按协议版本过滤
    • like_clientid (string,可选):按客户端 ID 模式进行模糊搜索
    • like_username(字符串,可选):按用户名模式模糊搜索
    • like_ip_address(字符串,可选):按 IP 地址模式进行模糊搜索

获取mqtt客户端

  • 通过客户端 ID 获取特定 MQTT 客户端的详细信息
  • 输入:
    • clientid(字符串,必需):要检索的客户端的唯一标识符

kick_mqtt_客户端

  • 根据客户端 ID 断开客户端与 MQTT 代理的连接
  • 输入:
    • clientid(字符串,必需):要断开连接的客户端的唯一标识符

发布_mqtt_消息

  • 在 EMQX 云或自管理部署上向 EMQX 集群发布 MQTT 消息
  • 输入:
    • topic(字符串,必需):要发布的 MQTT 主题
    • 有效载荷(字符串,必需):要发布的消息内容
    • qos(数字,可选):服务质量级别(0、1 或 2)(默认值:0)
    • retain(布尔值,可选):是否保留消息(默认值:false)

设置 EMQX 集群

在使用 EMQX MCP 服务器工具之前,您需要搭建一个 EMQX 集群,并正确配置 API 密钥和客户端身份验证。有以下几种选择:

  1. EMQX Cloud 无服务器部署:
  • 最简单的入门方法。
  • 从 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_KEYEMQX_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 许可证版本 2.0 获得许可 - 有关详细信息,请参阅LICENSE文件。

ID: m7zgbcr053