使用说明内容(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 的服务发现能力获取服务器能力(如工具列表、资源等)。
-
基本使用方法
-
- 启动 MQTT Broker(支持 MQTT 5.0 及以上)
-
- 部署并启动 MCP 服务器程序
-
- 客户端通过 MCP 协议的标准接口向服务器发起请求,如获取工具列表、调用工具、列举资源、读取资源等
-
- 服务器返回 JSON-RPC 格式的结果或通知至客户端指定的主题
-
-
运行与调试要点
- 确保 broker_uri、客户端身份认证等参数正确无误
- 观察服务器对连接丢失、重新连接的处理(conn_lost、onConnect、onConnectFailure 等回调)
- 使用工具注册、资源注册等 API,确保 tool/resource 的元数据正确分配
- 使用 jsonrpc 编解码实现请求/响应的一致性与可移植性
-
注意事项
- 本实现具备完整的服务器端逻辑,包含对 MCP 请求的处理、会话管理、工具与资源的注册维护、以及基于 JSON-RPC 的通信流程,适合作为边缘计算/物联网场景中的 AI 上下文服务后端。
信息
分类
AI与计算