<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>JSON-RPC on XLabs</title><link>https://www.xlabs.club/tags/json-rpc/</link><description>Recent content in JSON-RPC on XLabs</description><generator>Hugo</generator><language>zh-CN</language><copyright>Copyright (c) 2020-2025 XLabs Club</copyright><lastBuildDate>Wed, 23 Sep 2026 00:10:25 +0800</lastBuildDate><atom:link href="https://www.xlabs.club/tags/json-rpc/index.xml" rel="self" type="application/rss+xml"/><item><title>MCP Streamable HTTP 实测：Accept 少一项就 406，第二次 initialize 会吃掉整个 Server</title><link>https://www.xlabs.club/blog/mcp-streamable-http-sdk-behavior/</link><pubDate>Wed, 23 Sep 2026 00:00:00 +0800</pubDate><guid>https://www.xlabs.club/blog/mcp-streamable-http-sdk-behavior/</guid><description>&lt;p&gt;MCP 把 SSE 改成 Streamable HTTP 之后，文档把 Accept、&lt;code&gt;Mcp-Session-Id&lt;/code&gt;、DELETE、405、404 这一整套状态机讲了一遍。我把官方 SDK 1.30.0（Node 26）跑起来实际抓了一遍，结论先放在这里：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Accept 少一项就是 406&lt;/strong&gt;，错误码 &lt;code&gt;-32000&lt;/code&gt;，但消息明确写「Client must accept both application/json and text/event-stream」——这是好事。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;Mcp-Session-Id&lt;/code&gt; 只在 initialize 响应里下发一次&lt;/strong&gt;，之后每个请求/每条流都必须带；不带就是 400，带错/带旧就是 404，DELETE 之后也是 404。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;会话模式下，&lt;code&gt;McpServer&lt;/code&gt; 一个实例只接受一次 initialize&lt;/strong&gt;。第二个客户端的 initialize 拿到的是 400 + &lt;code&gt;-32600 &amp;quot;Only one initialization request is allowed&amp;quot;&lt;/code&gt;——这是 SDK 层面的限制，不是协议的限制。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;协议允许 JSON-RPC batch&lt;/strong&gt;，但 SDK 拒绝「一个 batch 里既有 initialize 又有别的方法」，错误消息是「Only one initialization request is allowed」。先把 initialize 单独发完，后续 batch &lt;code&gt;tools/call&lt;/code&gt; 是正常 200 的。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;sessionIdGenerator: undefined&lt;/code&gt; 是另一个世界&lt;/strong&gt;：无会话模式下 GET / DELETE 全部 500，连「不支持」都不愿意告诉你。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;下面把每一组实验贴出来，curl 形态的你拿去就能复现。&lt;/p&gt;</description></item></channel></rss>