Blinky Serial MCP Server
使用说明为 MCP 客户端提供一个可执行的服务器端实现的使用指南(以中文描述,包含核心功能、安装与配置要点、以及如何与 MCP 客户端对接的配置信息)。
-
项目简介
- 该仓库中的 Blinky Serial MCP Server(blinky-serial-mcp)实现了 MCP 标准的服务器端能力,提供对连接的 Blinky 设备的资源、工具及外部调用接口的集中管理与暴露。服务器通过 JSON-RPC 形式接收客户端请求,支持同一时刻对多台设备的管理,具备会话管理、能力声明和多种传输渠道的扩展能力(如标准输入/输出)。
- 核心组件围绕:设备管理、工具注册与执行、以及对设备能力的查询与控制,面向 LLM 客户端提供的资源/工具查询和执行能力,从而实现 LLM 与实际硬件/仿真环境的对接。
-
主要功能点
- MCP 协议核心实现
- 提供 ListTools 与 CallTool 两类请求的处理,以及对其他 MCP 请求的扩展能力。通过 JSON-RPC 规范与客户端交互,返回标准化响应或通知。
- 资源与工具暴露
- 持有并管理“设备会话”,可查询可用端口、连接/断开设备、查询设备信息、获取/设置设备设置、执行串口命令、以及控制设备的流媒体状态等。
- 多设备会话与路由
- 提供对多设备的会话管理,按端口分组,支持按端口或默认单设备场景进行工具调用,具备对设备状态的查询与事件订阅能力。
- 安全与健壮性设计
- 集成了设备连接/断开、命令执行的错误处理路径,包含对串口端口状态、设备连通性及异常的处理逻辑,确保 MCP 客户端在调用失败时能获得清晰的错误信息。
- MCP 协议核心实现
-
安装与运行(简述)
- 依赖环境:Node.js(ESM/模块化风格支持),在 blinky-serial-mcp 目录下安装依赖并执行服务器。
- 运行方式:启动一个 MCP 服务器实例,默认通过 STDIO 传输与客户端进行通信(也可扩展其他传输,如 SSE/WebSocket)。启动后,客户端需按照 MCP 客户端配置与服务器建立连接。
-
服务器配置(示例,供 MCP 客户端使用) 说明:下列配置用于描述如何让 MCP 客户端连接到该服务器。配置信息以 JSON 形式呈现,服务器名称、启动命令及参数需要一致地被客户端识别与使用。若实际部署使用的是编译后的 dist/index.js,请将命令路径指向编译产物。
{ "server_name": "blinky-serial-mcp", "command": "node", "args": [ "./blinky-serial-mcp/dist/index.js" ], "transport": "stdio", "description": "Blinky Serial MCP Server,通过标准输入/输出与 MCP 客户端通信;默认实现暴露设备管理、工具执行等能力。" }
注:若尚未将 TypeScript 源码编译为产物 dist/index.js,请在正式部署前完成编译。MCP 客户端无需关心实现细节,只需提供上述启动命令与参数即可建立连接。
-
基本使用方法
- 服务器部署与启动
- 在服务器上安装 Node.js,并在 blinky-serial-mcp 目录执行依赖安装(如 npm install)。
- 编译 TS 源码(如有需要),将 blinky-serial-mcp/src/index.ts 编译为 dist/index.js。
- 启动服务器进程,确保其输出或日志可访问,等待 MCP 客户端建立连接。
- 与 MCP 客户端协作
- MCP 客户端通过 TCP/STDIO(取决于实现的传输)发起 JSON-RPC 请求,调用 ListTools/CallTool 等能力。
- 客户端可通过 ListTools 获取可用工具清单,通过 CallTool 调用已注册的工具(如 list_ports、connect、disconnect、status、send_command、stream_start、stream_stop 等等),服务器将返回相应的结果或状态信息。
- 日常运维
- 当存在多设备连接时,确保端口资源不被占用,必要时进行端口冲突排查。
- 如需要扩展新工具,请在服务器端实现新的工具处理逻辑并在 MCP Tool 注册处暴露。
- 服务器部署与启动
-
注意事项
- MCP 服务器作为后端服务,面向 MCP 客户端提供能力,务必确保设备会话的创建、维护与清理逻辑健壮,以避免端口锁死或资源泄露。
- 如需支持其他传输(如 SSE、WebSocket),可在现有基础上扩展传输层实现,以满足不同部署场景。
-
备注
- 该实现包含较多额外的功能与集成(如多设备测试、测试驱动、外部工具调用、以及与 Blinky 硬件生态的深度耦合)。若仅需要 MCP 的核心能力,请按需裁剪不必要的依赖。