<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>MCP on 萌叔</title><link>https://vearne.cc/categories/mcp/</link><description>Recent content in MCP on 萌叔</description><generator>Hugo -- 0.155.0</generator><language>zh-CN</language><lastBuildDate>Fri, 08 May 2026 12:51:38 +0000</lastBuildDate><atom:link href="https://vearne.cc/categories/mcp/index.xml" rel="self" type="application/rss+xml"/><item><title>关于MCP transport协议的一些说明</title><link>https://vearne.cc/posts/2026-05-09-6a37c0c5-c704-4710-935e-837e1baa851b/</link><pubDate>Fri, 08 May 2026 12:51:38 +0000</pubDate><guid>https://vearne.cc/posts/2026-05-09-6a37c0c5-c704-4710-935e-837e1baa851b/</guid><description>&lt;pre tabindex="0"&gt;&lt;code&gt;版权声明 本站原创文章 由 萌叔 发表
转载请注明 萌叔 | http://vearne.cc
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="0-起因"&gt;0. 起因:&lt;/h2&gt;
&lt;p&gt;萌叔开发的某个MCP服务，在本地调试正常，然后当它在线上部署时，发出tool调用后，经常没有反应，使用
&lt;a href="https://github.com/modelcontextprotocol/inspector"&gt;modelcontextprotocol/inspector&lt;/a&gt; 进行调试
发现&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;Error from MCP server: SseError: SSE error: Premature close
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;MCP 服务器的 SSE 连接提前关闭错误。这个错误通常意味着客户端与服务器建立的 Server-Sent Events 长连接被意外中断了。&lt;/p&gt;
&lt;p&gt;有可能MCP的Client和Server的连接被当成空闲连接给kill了。
这是否与协议的设计有某种联系，萌叔使用wireshark抓包发现了一些有趣的事情。&lt;/p&gt;
&lt;h2 id="1-sse-模式"&gt;1. SSE 模式&lt;/h2&gt;
&lt;p&gt;HTTP+SSE 传输（需要 /sse和 /message两个端点）
并通过不同的 HTTP 方法来区分行为：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;POST 请求：客户端向该端点发送 JSON-RPC 消息（请求、通知或响应）。&lt;/li&gt;
&lt;li&gt;GET 请求：客户端向该端点发起请求以建立 SSE（Server-Sent Events）流，用于接收服务端的长连接推送或流式数据。&lt;/li&gt;
&lt;li&gt;DELETE 请求（可选）：可用于终止会话。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="11连接1"&gt;1.1【连接1】&lt;/h3&gt;
&lt;p&gt;专门用于MCP-Server向MCP-Client推送数据&lt;/p&gt;
&lt;h4 id="请求"&gt;请求&lt;/h4&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;GET /sse HTTP/1.1
accept: text/event-stream
accept-encoding: gzip, deflate, br
user-agent: node-fetch
Host: localhost:8080
Connection: keep-alive
&lt;/code&gt;&lt;/pre&gt;&lt;h4 id="响应"&gt;响应&lt;/h4&gt;
&lt;p&gt;&lt;strong&gt;注意&lt;/strong&gt;：【连接1】是长连接，且Content-Type: text/event-stream，连接不会被关闭。
&lt;code&gt;text/event-stream&lt;/code&gt;&lt;/p&gt;</description></item></channel></rss>