项目简介
MQTTX MCP SSE 服务器是一个实现了 Model Context Protocol (MCP) 的后端服务,它使用 Server-Sent Events (SSE) 作为传输协议,为大型语言模型 (LLM) 应用提供 MQTT 消息代理的连接能力。通过此服务器,LLM 应用可以安全、标准地访问和操作 MQTT broker,实现消息的发布和订阅。
主要功能点
- MCP 协议实现: 遵循 Model Context Protocol 规范,提供标准的上下文服务接口。
- MQTT 操作工具: 提供连接 MQTT broker、订阅主题、发布消息等工具,方便 LLM 应用进行 MQTT 交互。
- Server-Sent Events (SSE): 使用 SSE 协议实现与客户端的实时通信,推送 MQTT 消息。
- 会话管理: 支持多客户端会话管理,隔离不同客户端的 MQTT 连接。
- 能力声明: 向客户端声明服务器提供的工具和协议版本等信息。
安装步骤
- 安装 Node.js 和 npm: 确保你的机器上已安装 Node.js (v14 或更高版本) 和 npm。
- 克隆仓库: 使用 git 命令克隆仓库到本地:
git clone https://github.com/ysfscream/mqttx-mcp-sse-server.git cd mqttx-mcp-sse-server - 安装依赖: 在仓库目录下运行 npm 命令安装项目依赖:
npm install
服务器配置
MCP 客户端需要配置以下信息以连接到 MQTTX MCP SSE 服务器。以下是一个 JSON 格式的配置示例,通常在 MCP 客户端的设置中添加,例如 MQTTX 客户端:
{ "mcpServers": { "mqttx-server": { "url": "http://服务器地址:4000/mqttx/sse" } } }
配置参数说明:
- 'url': 必须配置。MCP 服务器的 SSE 连接地址。请将 'http://服务器地址:4000/mqttx/sse' 替换为实际部署 MQTTX MCP SSE 服务器的地址和端口。例如,如果服务器运行在本地,则可以使用 'http://localhost:4000/mqttx/sse'。
服务器启动命令:
在仓库目录下,使用以下 npm 命令启动服务器:
npm start
服务器默认会在 '4000' 端口启动。
基本使用方法
- 建立 SSE 连接: MCP 客户端通过配置的 'url' 地址与服务器建立 SSE 长连接。
- 发送 JSON-RPC 请求: 客户端通过 POST 请求向 '/mqttx/message?sessionId=xxx' (其中 'sessionId' 由服务器在 SSE 连接建立时提供) 发送 JSON-RPC 格式的请求,调用服务器提供的工具,例如 'mqttConnect' (连接 MQTT broker)、'mqttSubscribe' (订阅 MQTT 主题)、'mqttPublish' (发布 MQTT 消息) 等。
- 接收 SSE 事件: 服务器通过 SSE 连接向客户端推送事件,包括:
- 'endpoint': 包含 JSON-RPC 请求的端点地址。
- 'heartbeat': 心跳事件,保持连接活跃。
- 'message': 包含 JSON-RPC 响应和 MQTT 消息通知。
示例 JSON-RPC 请求 (通过 POST 请求发送到 '/mqttx/message?sessionId=xxx'):
- 初始化请求 (initialize):
{ "jsonrpc": "2.0", "id": 1, "method": "initialize" }
- 列出可用工具请求 (tools/list):
{ "jsonrpc": "2.0", "id": 2, "method": "tools/list" }
- 调用 MQTT 连接工具 (tools/call):
{ "jsonrpc": "2.0", "id": 3, "method": "tools/call", "params": { "name": "mqttConnect", "arguments": { "host": "broker.example.com", "port": 1883, "clientId": "mqttx-client" } } }
- 调用 MQTT 订阅工具 (tools/call):
{ "jsonrpc": "2.0", "id": 4, "method": "tools/call", "params": { "name": "mqttSubscribe", "arguments": { "topic": "test/topic", "qos": 0 } } }
- 调用 MQTT 发布工具 (tools/call):
{ "jsonrpc": "2.0", "id": 5, "method": "tools/call", "params": { "name": "mqttPublish", "arguments": { "topic": "test/topic", "payload": "Hello MQTT!", "qos": 0, "retain": false } } }
请参考仓库的 'README.md' 文件和 'server.js' 代码了解更详细的 API 和工具使用方法。
信息
分类
AI与计算