简体中文
了解 MCP 的通信机制
{ jsonrpc: "2.0", id: number | string, method: string, params?: object }
{ jsonrpc: "2.0", id: number | string, result?: object, error?: { code: number, message: string, data?: unknown } }
{ jsonrpc: "2.0", method: string, params?: object }
const server = new Server({ name: "example-server", version: "1.0.0" }, { capabilities: {} }); const transport = new StdioServerTransport(); await server.connect(transport);
import express from "express"; const app = express(); const server = new Server({ name: "example-server", version: "1.0.0" }, { capabilities: {} }); let transport: SSEServerTransport | null = null; app.get("/sse", (req, res) => { transport = new SSEServerTransport("/messages", res); server.connect(transport); }); app.post("/messages", (req, res) => { if (transport) { transport.handlePostMessage(req, res); } }); app.listen(3000);
interface Transport { // 开始处理消息 start(): Promise<void>; // 发送 JSON-RPC 消息 send(message: JSONRPCMessage): Promise<void>; // 关闭连接 close(): Promise<void>; // 回调 onclose?: () => void; onerror?: (error: Error) => void; onmessage?: (message: JSONRPCMessage) => void; }
class ExampleTransport implements Transport { async start() { try { // 连接逻辑 } catch (error) { this.onerror?.(new Error(`连接失败: ${error}`)); throw error; } } async send(message: JSONRPCMessage) { try { // 发送逻辑 } catch (error) { this.onerror?.(new Error(`发送消息失败: ${error}`)); throw error; } } }