协议修订: 2024-11-05
- stdio,通过标准输入和标准输出进行通信
- HTTP with Server-Sent Events (SSE)
stdio
在 stdio 传输中:- 客户端将MCP服务器作为子进程启动。
- 服务器在其标准输入(
stdin)上接收JSON-RPC消息,并在标准输出(stdout)上写入响应。 - 消息由换行符分隔,不能包含嵌入的换行符。
- 服务器可以将其标准错误(
stderr)写入UTF-8字符串以进行日志记录。客户端可以捕获、转发或忽略此日志记录。 - 服务器不能将其
stdout写入任何不是有效MCP消息的内容。 - 客户端不能将其
stdin写入任何不是有效MCP消息的内容。
HTTP with SSE
在 SSE 传输中,服务器作为独立进程运行,可以处理多个客户端连接。安全警告
实现HTTP with SSE传输时:- 服务器必须验证所有传入连接上的
Origin头以防止DNS重绑定攻击 - 在本地运行时,服务器应该仅绑定到localhost (127.0.0.1) 而不是所有网络接口 (0.0.0.0)
- 服务器应该为所有连接实现适当的认证
- SSE端点,供客户端建立连接并从服务器接收消息
- 常规HTTP POST端点,供客户端向服务器发送消息
endpoint 事件。所有后续客户端消息必须作为HTTP POST请求发送到此端点。
服务器消息作为SSE message 事件发送,消息内容在事件数据中编码为JSON。