emqx-mcp-server

emqx-mcp-server

一个模型上下文协议 (MCP) 服务器实现,提供与 EMQX MQTT broker 的交互。

通信
开发者工具
监控
Python
访问服务器

Tools

list_mqtt_clients

List MQTT clients connected to your EMQX Cluster

get_mqtt_client

Get detailed information about a specific MQTT client by client ID

kick_mqtt_client

Disconnect a client from the MQTT broker by client ID

publish_mqtt_message

Publish an MQTT Message to Your EMQX Cluster on EMQX Cloud or Self-Managed Deployment

README

EMQX MCP 服务器

smithery badge

<a href="https://glama.ai/mcp/servers/m7zgbcr053"> <img width="380" height="200" src="https://glama.ai/mcp/servers/m7zgbcr053/badge" alt="emqx-mcp-server MCP server" /> </a>

一个 模型上下文协议 (MCP) 服务器实现,提供 EMQX MQTT broker 交互。 使 MCP 客户端能够与 EMQX Cloud 或自托管集群上的 MQTT 集群进行交互

功能

MQTT 客户端管理

  • 客户端列表:查看所有已连接的 MQTT 客户端,并提供灵活的过滤选项
  • 客户端信息:检索有关特定客户端的详细信息
  • 连接控制:断开有问题或过时的客户端与 broker 的连接
  • 灵活的过滤:按节点、用户名、客户端 ID、连接状态等过滤客户端

MQTT 消息发布

  • 基于主题的发布:将消息发送到任何 MQTT 主题
  • QoS 控制:选择服务质量级别(0、1 或 2)以实现可靠的传递
  • 消息保留:可以选择保留消息以供新订阅者使用
  • 自定义有效负载:支持任何消息内容格式

工具

list_mqtt_clients

  • 列出连接到您的 EMQX 集群的 MQTT 客户端
  • 输入:
    • page (number, optional): 页码 (默认: 1)
    • limit (number, optional): 每页结果数 (默认: 100, 最大 10000)
    • node (string, optional): 按特定节点名称过滤
    • clientid (string, optional): 按特定客户端 ID 过滤
    • username (string, optional): 按特定用户名过滤
    • ip_address (string, optional): 按客户端 IP 地址过滤
    • conn_state (string, optional): 按连接状态过滤
    • clean_start (boolean, optional): 按 clean start 标志过滤
    • proto_ver (string, optional): 按协议版本过滤
    • like_clientid (string, optional): 按客户端 ID 模式进行模糊搜索
    • like_username (string, optional): 按用户名模式进行模糊搜索
    • like_ip_address (string, optional): 按 IP 地址模式进行模糊搜索

get_mqtt_client

  • 按客户端 ID 获取有关特定 MQTT 客户端的详细信息
  • 输入:
    • clientid (string, required): 要检索的客户端的唯一标识符

kick_mqtt_client

  • 通过客户端 ID 断开客户端与 MQTT broker 的连接
  • 输入:
    • clientid (string, required): 要断开连接的客户端的唯一标识符

publish_mqtt_message

  • 将 MQTT 消息发布到 EMQX Cloud 或自管理部署上的 EMQX 集群
  • 输入:
    • topic (string, required): 要发布到的 MQTT 主题
    • payload (string, required): 要发布的消息内容
    • qos (number, optional): 服务质量级别 (0, 1, or 2) (默认: 0)
    • retain (boolean, optional): 是否保留消息 (默认: false)

设置 EMQX 集群

在使用 EMQX MCP Server 工具之前,您需要设置一个配置了正确的 API 密钥和客户端身份验证的 EMQX 集群。 有几种选择:

  1. EMQX Cloud Serverless 部署:
  • 最容易上手的方式。
  • 从 EMQX Cloud 获取免费的 serverless 部署
  • EMQX Cloud Serverless 注册
  1. EMQX Cloud Dedicated 部署:
  • 为生产工作负载提供专用资源
  • 提供增强的性能、可靠性和自定义选项
  • 支持各种云提供商(AWS、GCP、Azure)
  • 包括专业的 SLA 和支持
  • EMQX Cloud Dedicated 创建部署
  1. 自托管 EMQX 平台:
  • 在本地下载并部署 EMQX 平台
  • 按照 EMQX 平台 上的安装说明进行操作

使用 Claude Desktop App 在本地运行

选项 1:通过 Smithery 安装

要通过 Smithery 为 Claude Desktop 自动安装 emqx-mcp-server:

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

选项 2:Docker

  1. 如果您尚未安装 Claude Desktop App,请先安装。

  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_URL, EMQX_API_KEY, EMQX_API_SECRET

  4. 打开或重启 Claude Desktop App

  5. 尝试让 Claude 使用 MQTT broker 做一些事情(例如,要求它将 MQTT 消息发布到某个主题)。

选项 3:手动安装

首先,确保您已安装 uv 可执行文件。 如果没有,您可以按照 此处 的说明进行安装。

  1. 如果您尚未安装 Claude Desktop App,请先安装。
  2. 克隆此存储库。
  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": "uv",
          "args": [
            "--directory",
            "path/to/repo/src/emqx_mcp_server",
            "run",
            "emqx-mcp-server"
          ],
          "env":{
            "EMQX_API_URL":"https://your-emqx-cloud-instance.com:8443/api/v5",
            "EMQX_API_KEY":"<YOUR-API-KEY>",
            "EMQX_API_SECRET":"<YOUR-API-SECRET>"
          }
        }
      }
    }
    
    注意:请确保将 path/to/repo/src/emqx_mcp_server 更新为实际路径,并修改环境变量 EMQX_API_URLEMQX_API_KEYEMQX_API_SECRET 以匹配您的 EMQX 实例。
  4. 打开或重启 Claude Desktop App
  5. 尝试让 Claude 使用 MQTT broker 做一些事情(例如,要求它将 MQTT 消息发布到某个主题)。

示例提示

用户:

请列出连接到 MQTT broker 的客户端。

LLM:

以下是当前连接到您的 MQTT broker 的客户端:
已连接的客户端:
  - 客户端 ID:mqttx_2232bdb1
  - 用户名:test
  - 协议:MQTT v5
  ...
目前有 1 个客户端连接到您的 MQTT broker。 您是否需要有关此特定客户端的更多详细信息,或者您想使用您的 MQTT broker 执行其他操作?

用户:

是的,请提供此客户端的详细信息。

LLM:

我将为您检索此客户端的详细信息。
...
这是客户端“mqttx_2232bdb1”的详细信息:

**基本信息:**
-   **客户端 ID:** mqttx_2232bdb1
-   **用户名:** test
...
**连接详细信息:**
-   **已连接:** 是
-   **创建于:** 2025-03-02T05:29:51.103+00:00
...
您是否想对此客户端执行任何操作,例如将消息发布到某个主题或断开客户端的连接?

用户:

请写一首诗,并以 QoS 1 发送到主题“/poem”。

LLM:

我将创作一首诗,并以 QoS 1 发布到主题“/poem”。 让我为您做这件事。
...
我已成功将这首诗以 QoS 1 发布到主题“/poem”。 该消息已通过 ID:00062F55A1EFB1156ABC481240B30000 传递。

我发送的诗是:

- 以太中的信号,
- 无形的线索将它们联系在一起,
- 设备低声细语,
- 跨越数字鸿沟。
- 消息像落叶,
- 从云端到等待的地面,
- 连接但不受束缚,
- 在寂静无声的地方。
- 现代时代的经纪人,
- 将梦想从这里传递到那里,
- 在这个连接的网络中,
- 我们发现自己无处不在。
- 像星座中的星星,
- 每个光点都有价值,
- 机器的语言,
- 重新定义我们的地球。

您还想用您的 MQTT broker 做什么吗?

用户:

请踢出客户端 mqttx_2232bdb1

LLM

我将为您断开客户端与 MQTT broker 的连接。
...
客户端已成功断开连接。 系统返回:
> 客户端 mqttx_2232bdb1 已断开连接
客户端 ID 为“mqttx_2232bdb1”的 MQTT 客户端现在已与您的 broker 断开连接。 您还想用您的 MQTT broker 做什么吗?

许可证

本项目采用 Apache License Version 2.0 许可证 - 有关详细信息,请参阅 LICENSE 文件。

推荐服务器

Playwright MCP Server

Playwright MCP Server

一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。

官方
精选
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。

官方
精选
本地
TypeScript
graphlit-mcp-server

graphlit-mcp-server

模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。

官方
精选
TypeScript
MCP Package Docs Server

MCP Package Docs Server

促进大型语言模型高效访问和获取 Go、Python 和 NPM 包的结构化文档,通过多语言支持和性能优化来增强软件开发。

精选
本地
TypeScript
Claude Code MCP

Claude Code MCP

一个实现了 Claude Code 作为模型上下文协议(Model Context Protocol, MCP)服务器的方案,它可以通过标准化的 MCP 接口来使用 Claude 的软件工程能力(代码生成、编辑、审查和文件操作)。

精选
本地
JavaScript
@kazuph/mcp-taskmanager

@kazuph/mcp-taskmanager

用于任务管理的模型上下文协议服务器。它允许 Claude Desktop(或任何 MCP 客户端)在基于队列的系统中管理和执行任务。

精选
本地
JavaScript
Apple MCP Server

Apple MCP Server

通过 MCP 协议与 Apple 应用(如“信息”、“备忘录”和“通讯录”)进行交互,从而使用自然语言发送消息、搜索和打开应用内容。

精选
本地
TypeScript
DuckDuckGo MCP Server

DuckDuckGo MCP Server

一个模型上下文协议 (MCP) 服务器,通过 DuckDuckGo 提供网页搜索功能,并具有内容获取和解析的附加功能。

精选
Python
YouTube Transcript MCP Server

YouTube Transcript MCP Server

这个服务器用于获取指定 YouTube 视频 URL 的字幕,从而可以与 Goose CLI 或 Goose Desktop 集成,进行字幕提取和处理。

精选
Python
mermaid-mcp-server

mermaid-mcp-server

一个模型上下文协议 (MCP) 服务器,用于将 Mermaid 图表转换为 PNG 图像。

精选
JavaScript