项目简介

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 连接。
  • 能力声明: 向客户端声明服务器提供的工具和协议版本等信息。

安装步骤

  1. 安装 Node.js 和 npm: 确保你的机器上已安装 Node.js (v14 或更高版本) 和 npm。
  2. 克隆仓库: 使用 git 命令克隆仓库到本地:
    git clone https://github.com/ysfscream/mqttx-mcp-sse-server.git
    cd mqttx-mcp-sse-server
  3. 安装依赖: 在仓库目录下运行 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' 端口启动。

基本使用方法

  1. 建立 SSE 连接: MCP 客户端通过配置的 'url' 地址与服务器建立 SSE 长连接。
  2. 发送 JSON-RPC 请求: 客户端通过 POST 请求向 '/mqttx/message?sessionId=xxx' (其中 'sessionId' 由服务器在 SSE 连接建立时提供) 发送 JSON-RPC 格式的请求,调用服务器提供的工具,例如 'mqttConnect' (连接 MQTT broker)、'mqttSubscribe' (订阅 MQTT 主题)、'mqttPublish' (发布 MQTT 消息) 等。
  3. 接收 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与计算