https://github.com/ysfscream/mqttx-mcp-sse-server
An implementation of the Model-Context Protocol (MCP) that enables MQTT operations over Server-Sent Events (SSE) transport.
https://github.com/ysfscream/mqttx-mcp-sse-server
ai claude cursor emqx llm mcp mqtt mqtt-broker mqttx
Last synced: 2 months ago
JSON representation
An implementation of the Model-Context Protocol (MCP) that enables MQTT operations over Server-Sent Events (SSE) transport.
- Host: GitHub
- URL: https://github.com/ysfscream/mqttx-mcp-sse-server
- Owner: ysfscream
- License: mit
- Created: 2025-03-19T15:13:01.000Z (2 months ago)
- Default Branch: main
- Last Pushed: 2025-03-19T15:30:26.000Z (2 months ago)
- Last Synced: 2025-03-19T16:27:32.940Z (2 months ago)
- Topics: ai, claude, cursor, emqx, llm, mcp, mqtt, mqtt-broker, mqttx
- Language: JavaScript
- Homepage:
- Size: 21.5 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# MQTTX SSE Server
An implementation of the Model-Context Protocol (MCP) that enables MQTT operations over Server-Sent Events (SSE) transport.
## About MCP
The Model-Context Protocol (MCP) is a standardized protocol that allows AI assistants to interact with external tools and services. This server implements the MCP specification using SSE (Server-Sent Events) as the transport layer, providing MQTT broker connectivity capabilities.
## Features
- Implements MCP protocol version 2024-11-05
- Uses SSE (Server-Sent Events) as the transport layer
- Provides MQTT operations through MCP tools:
- Connect to MQTT brokers
- Subscribe to MQTT topics
- Publish messages to MQTT topics
- Real-time message delivery from subscribed topics
- Session management for multiple clients## Getting Started
### Prerequisites
- Node.js (v14 or later)
- npm### Installation
```bash
# Clone the repository
git clone https://github.com/yourusername/mqttx-sse-server.git
cd mqttx-sse-server# Install dependencies
npm install
```### Running the Server
```bash
npm start
```The server will start on port 4000 by default.
## Configuring MQTTX
To use this MCP server with MQTTX, add the following configuration to your MQTTX settings:
```json
{
"mcpServers": {
"mqttx-server": {
"url": "http://localhost:4000/mqttx/sse"
}
}
}
```## MCP Protocol Implementation
This server implements the Model-Context Protocol with the following components:
- **SSE Connection**: Establishes persistent connection for real-time updates
- **JSON-RPC API**: Handles tool calls and responses according to MCP spec
- **Tools Interface**: Provides MQTT functionality through standardized MCP tools
- **Session Management**: Tracks client sessions and their MQTT connections## API Reference
### SSE Connection
Establishes a persistent connection for receiving server events.
```plaintext
GET /mqttx/sse
```Response events:
- `endpoint`: Contains the URL for making JSON-RPC calls
- `heartbeat`: Regular ping to keep the connection alive
- `message`: Contains JSON-RPC responses### JSON-RPC Commands
All commands are sent to the message endpoint with your session ID:
```plaintext
POST /mqttx/message?sessionId=xxx
```#### Initialize
```json
{
"jsonrpc": "2.0",
"id": 1,
"method": "initialize"
}
```#### List Tools
```json
{
"jsonrpc": "2.0",
"id": 2,
"method": "tools/list"
}
```#### MQTT Connect
```json
{
"jsonrpc": "2.0",
"id": 3,
"method": "tools/call",
"params": {
"name": "mqttConnect",
"arguments": {
"host": "broker.example.com",
"port": 1883,
"clientId": "mqttx-client"
}
}
}
```#### MQTT Subscribe
```json
{
"jsonrpc": "2.0",
"id": 4,
"method": "tools/call",
"params": {
"name": "mqttSubscribe",
"arguments": {
"topic": "test/topic",
"qos": 0
}
}
}
```#### MQTT Publish
```json
{
"jsonrpc": "2.0",
"id": 5,
"method": "tools/call",
"params": {
"name": "mqttPublish",
"arguments": {
"topic": "test/topic",
"payload": "Hello MQTT!",
"qos": 0,
"retain": false
}
}
}
```