使用说明内容(Markdown格式)

  • 项目简介

    • 该仓库实现了一个基于 MQTT 的 MCP 服务器,核心功能包括接收并处理 MCP(Model Context Protocol)格式的请求,响应 JSON-RPC 格式的结果,以及通过 MQTT 主题进行服务发现、会话管理与能力声明。服务器具备工具注册与调用、资源读取与列举、以及客户端连接/断开等会话管理能力。
  • 主要功能点

    • MCP 请求/响应处理:支持处理诸如 initialize、tools/list、tools/call、resources/list、resources/read 等 MCP 相关请求,并返回符合 MCP 规范的 JSON-RPC 响应或通知。
    • MQTT 传输与会话管理:通过 MQTT 5.0 进行通信,包含连接、订阅、保留消息、会话状态与客户端会话管理。
    • 工具与资源管理:提供动态注册工具、定义输入参数、执行回调,以及资源的列举与读取能力。
    • JSON-RPC 编解码:内置 JSON-RPC 编码/解码,支持错误处理、结果封装与多种参数类型的解析。
    • 安全与认证(注释实现思路):代码结构设计支持 TLS/TLS-MQTT、用户名密码、以及基于 MQTT 主题的访问控制,适合在安全边缘场景部署。
  • 安装步骤

    • 安装依赖
      • MQTT C 客户端库 (paho.mqtt.c)
      • cJSON 库
    • 构建并安装
      • 先编译安装 paho.mqtt.c
      • 再编译安装 cJSON
      • 最后在本仓库目录下执行构建命令以生成可执行组件
    • 运行服务器
      • 将编译生成的服务器程序启动(按你的环境配置对应的 broker URI、客户端ID、用户名/密码等参数)
  • 服务器配置(JSON 配置示例,适用于 MCP 客户端需要读取的服务描述信息,配置字段以便 MCP 客户端理解服务器能力与会话需求;以下为示例说明,具体字段含义与实现可能因部署方式不同而略有差异) { "serverName": "paho-mcp-over-mqtt", "description": "MQTT-based MCP server for resource and tool management", "startCommand": "./mcp_server", // 启动服务的可执行文件名称(实际路径请按你的部署调整) "startArgs": [ "--name", "paho-mcp-over-mqtt", "--description", "MCP over MQTT server", "--broker_uri", "tcp://broker.emqx.io:1883", "--client_id", "mcp_server_01", "--user", "", "--password", "", "--cert", "" ] }

    说明:

    • serverName 与 description 对应服务器的可识别名称与描述,便于客户端在服务发现阶段获取信息。
    • startCommand 与 startArgs 指示启动服务器的命令与参数,用于帮助部署自动化与容器化场景的客户端/运维工具知晓如何启动该 MCP 服务器。
    • 客户端通常不需要直接读取该配置,而通过 MCP 的服务发现能力获取服务器能力(如工具列表、资源等)。
  • 基本使用方法

      1. 启动 MQTT Broker(支持 MQTT 5.0 及以上)
      1. 部署并启动 MCP 服务器程序
      1. 客户端通过 MCP 协议的标准接口向服务器发起请求,如获取工具列表、调用工具、列举资源、读取资源等
      1. 服务器返回 JSON-RPC 格式的结果或通知至客户端指定的主题
  • 运行与调试要点

    • 确保 broker_uri、客户端身份认证等参数正确无误
    • 观察服务器对连接丢失、重新连接的处理(conn_lost、onConnect、onConnectFailure 等回调)
    • 使用工具注册、资源注册等 API,确保 tool/resource 的元数据正确分配
    • 使用 jsonrpc 编解码实现请求/响应的一致性与可移植性
  • 注意事项

    • 本实现具备完整的服务器端逻辑,包含对 MCP 请求的处理、会话管理、工具与资源的注册维护、以及基于 JSON-RPC 的通信流程,适合作为边缘计算/物联网场景中的 AI 上下文服务后端。

信息

分类

AI与计算