An open API service indexing awesome lists of open source software.

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.

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
}
}
}
```