emqx mcp server
A Model Context Protocol (MCP) server implementation that provides EMQX MQTT broker interaction.
A Model Context Protocol (MCP) server implementation that provides EMQX MQTT broker interaction.
A Model Context Protocol (MCP) server implementation that provides EMQX MQTT broker interaction. Enabling MCP clients to interact with the MQTT clusters on EMQX Cloud or self-hosted clusters
Before using the EMQX MCP Server tools, you need to set up an EMQX cluster with properly configured API Key and client authentication. There are several options:
Sign up at EMQX Cloud Serverless
EMQX Cloud Dedicated Deployment:
Create a deployment at EMQX Cloud Dedicated
Self-hosted EMQX Platform:
To install emqx-mcp-server for Claude Desktop automatically via Smithery:
npx -y @smithery/cli install @Benniu/emqx-mcp-server --client claude
docker pull benniuji/emqx-mcp-server
Add the following to your claude_desktop_config.json
file:
~/Library/Application Support/Claude/claude_desktop_config.json
%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"
]
}
}
}
Note: Update the env variables:EMQX_API_URL
, EMQX_API_KEY
, EMQX_API_SECRET
4. Open or Restart Claude Desktop App
5. Try asking Claude to do something with the MQTT broker (e.g. ask it to publish an MQTT message to a topic).
First, ensure you have the uv
executable installed. If not, you can install it by following the instructions here.
claude_desktop_config.json
file:~/Library/Application Support/Claude/claude_desktop_config.json
%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>"
}
}
}
}
Note: Make sure to update path/to/repo/src/emqx_mcp_server
to the actual path and modify the environment variables EMQX_API_URL
, EMQX_API_KEY
, and EMQX_API_SECRET
to match your EMQX instance.User:
Please list the clients connected to the MQTT broker.
LLM:
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?
User:
Yes, please provide the detail info of this client.
LLM:
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?
User:
Please write a poem and send it to the topic '/poem' with QoS 1.
LLM:
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?
User:
Please kick out the client mqttx_2232bdb1
LLM
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?
This project is licensed under the Apache License Version 2.0 - see the LICENSE file for details.
[
{
"description": "Publish an MQTT Message to Your EMQX Cluster on EMQX Cloud or Self-Managed Deployment",
"inputSchema": {
"properties": {
"request": {
"title": "request",
"type": "string"
}
},
"required": [
"request"
],
"title": "publishArguments",
"type": "object"
},
"name": "publish_mqtt_message"
},
{
"description": "List MQTT clients connected to your EMQX Cluster",
"inputSchema": {
"properties": {
"request": {
"title": "request",
"type": "string"
}
},
"required": [
"request"
],
"title": "list_clientsArguments",
"type": "object"
},
"name": "list_mqtt_clients"
},
{
"description": "Get detailed information about a specific MQTT client by client ID",
"inputSchema": {
"properties": {
"request": {
"title": "request",
"type": "string"
}
},
"required": [
"request"
],
"title": "get_client_infoArguments",
"type": "object"
},
"name": "get_mqtt_client"
},
{
"description": "Disconnect a client from the MQTT broker by client ID",
"inputSchema": {
"properties": {
"request": {
"title": "request",
"type": "string"
}
},
"required": [
"request"
],
"title": "kick_clientArguments",
"type": "object"
},
"name": "kick_mqtt_client"
}
]