PEAC MCP 服务器实现(Node.js/TypeScript)
使用说明(Markdown 版):
-
项目简介
- 该仓库包含一个用于 MCP(Model Context Protocol)交互的服务器实现,核心目标是通过标准化的 JSON-RPC 方式向 LLM 客户端提供上下文信息和能力。实现了对 Tool 的注册与执行、资源/证据的处理,以及通过标准化的传输(包括 stdio)进行交互。
-
主要功能点
- MCP 核心协议支持:通过 JSON-RPC 2.0 处理请求和发送通知。
- 工具 (Tools) 注册与执行:服务器暴露工具集,客户端可通过 “tools/call” 调用实现的工具。
- 证据与Receipt 支持:可对请求结果签名、返回签名证据,便于离线验证与审计。
- 会话与能力声明:在连接建立阶段、通过能力广告向客户端声明服务器能力。
- 多传输适配:目前示例以 STDIO 传输为主,未来可拓展到 SSE/WebSocket 等。
- 安全与可扩展性:私钥管理、签名/验证、错误报告遵循标准化模式,便于扩展和审计。
-
安装步骤
- 环境要求:Node.js 版本推荐 Node 18 及以上,TypeScript 构建环境(通过项目的构建脚本输出可执行文件)。
- 安装依赖:在仓库根目录执行包管理器安装(如 pnpm/yarn/npm),确保包含 @peac/core 和 MCP 相关包的依赖。
- 构建与运行:
- 使用构建工具打包 MCP 服务器模块,生成可执行的服务器文件。
- 启动服务器前可选配置环境变量,以注入私钥、证书等安全信息:
- PEAC_PRIVATE_KEY:私钥(用于签名 receipts)
- PEAC_KID:签名密钥 ID
- PEAC_PUBLIC_KEYS:用于验签的公钥集合
- 直接以 Node 运行打包后的服务器,服务器会在启动时输出启动信息。
-
服务器配置(示例说明,JSON 格式,供 MCP 客户端参考)
- server name: peac-mcp-server
- command: node dist/server.js
- args: ["--transport=stdio"](如需扩展传输,可添加对应参数) 备注:MCP 客户端在连接时需要知道服务器的启动命令、参数以及服务器对接的名称。以下为客户端无需的配置信息(仅供 MCP 客户端在集成中读取): { "server_name": "peac-mcp-server", "command": ["node", "dist/server.js"], "args": ["--transport=stdio"], "notes": "此配置用于 MCP 客户端以统一方式启动与连接,对客户端的工作方式并非必须直接执行,仅作集成示意;客户端实际连接依赖于具体实现的 MCP 客户端框架。" }
-
基本使用方法
- 启动与连接
- 启动 MCP 服务器进程,服务器将通过标准输出/错误输出显示启动信息。
- 客户端通过标准输入/输出与服务器进行 JSON-RPC 交互(请求/通知/响应)。
- 常用操作
- 通过 MCP 服务器提供的工具注册、调用外部功能(Tools)来实现上下文扩展。
- 通过资源管理接口访问数据、数据集等可读写资源。
- 通过 Receipt 签名与验证实现可验证的交互证据。
- 调试与扩展
- 查看服务器输出的日志与错误信息,结合签名/验签流程进行离线验证。
- 如需扩展传输协议,需在服务端实现相应传输适配层(如 SSE/WebSocket),并在客户端实现对应的传输通道。
- 启动与连接
-
备注
- MCP 客户端连接时需要知道服务器提供的能力、工具集合和端点信息,并通过标准化的 JSON-RPC 进行交互。
- 服务器端对会话和能力声明有基本实现,具体细节可根据应用场景进一步扩展。