背景
mcp-gateway#204 で、Node.js 26 の組み込み undici が HTTP/2 上で長寿命 SSE GET と body 付き POST を併用した際、POST を dispatch せずタイムアウトまで starvation させる問題が確認された。
上流では nodejs/undici#5538 が修正され、undici v8.8.0 以降に収録済み。Node.js では v26.5.1 が undici 8.9.0 を bundle した最初のリリースである。
このリポジトリの main は既に以下を Node.js 26.5.1 へ更新済み:
一方、公開済み v0.5.0 は engines.node >=26.5.0 のため、未修正の Node.js v26.5.0 / undici 8.7.0 でも要件を満たす。また、engines は package manager の設定によっては警告に留まり、CLI の実行自体を止めない。
mcp-gateway が将来 HTTP/2 を既定有効へ戻した場合、未修正 runtime で subscriber を実行すると、従来どおり約 60 秒の timeout と副次的な 502 が再発し得る。
方針
- 実際の subscribe / call 処理へ入る前に Node.js runtime を検証し、v26.5.1 未満ではネットワーク接続を開始せず明示的に失敗する。
package.json#engines.node >=26.5.1、CI、Docker の現在値を維持する。
- Node.js 26.5.1 要件の理由と mcp-gateway の h2 互換性検証結果を CHANGELOG / README に記録する。
- patch release を公開し、Squirrel Notifier ホストが修正版を取得できる状態にする。
クライアント側で allowH2: false を固定する回避策は追加しない。上流修正済みであり、runtime floor を一元化する方が将来の HTTP/2 利用を妨げず、保守対象も増やさないため。
受け入れ条件
関連
背景
mcp-gateway#204 で、Node.js 26 の組み込み undici が HTTP/2 上で長寿命 SSE GET と body 付き POST を併用した際、POST を dispatch せずタイムアウトまで starvation させる問題が確認された。
上流では nodejs/undici#5538 が修正され、undici v8.8.0 以降に収録済み。Node.js では v26.5.1 が undici 8.9.0 を bundle した最初のリリースである。
このリポジトリの
mainは既に以下を Node.js 26.5.1 へ更新済み:package.json#engines.node: PR chore(deps): update node.js to >=26.5.1 #148一方、公開済み v0.5.0 は
engines.node >=26.5.0のため、未修正の Node.js v26.5.0 / undici 8.7.0 でも要件を満たす。また、enginesは package manager の設定によっては警告に留まり、CLI の実行自体を止めない。mcp-gateway が将来 HTTP/2 を既定有効へ戻した場合、未修正 runtime で subscriber を実行すると、従来どおり約 60 秒の timeout と副次的な 502 が再発し得る。
方針
package.json#engines.node >=26.5.1、CI、Docker の現在値を維持する。クライアント側で
allowH2: falseを固定する回避策は追加しない。上流修正済みであり、runtime floor を一元化する方が将来の HTTP/2 利用を妨げず、保守対象も増やさないため。受け入れ条件
--help/--versionは unsupported runtime でも診断目的で利用できるpackage.json#engines.node、CI、Docker が v26.5.1 以上で揃っているengines.node >=26.5.1を確認するMCP_GATEWAY_ENABLE_HTTP2=trueの TLS gateway 経由で subscribe → notification → re-read → unsubscribe が成功する関連
fetchPOST hangs while an SSE stream is open nodejs/undici#5524