MQTTX SSE Server
by ysfscream
README.md
# 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
}
}
}
```
This server cannot be deployed
Maintenance
ActivityInactive
ResponsivenessNo issues