purpose
Durable Objects の duration(GB-sec)が無料枠(13,000 GB-sec/日)を超過している問題に対処する。mcp-server のチャンネル接続を SSE から WebSocket に切り替え、DO hibernation を有効化する。
premise
- WebhookStore DO の duration が全体の大部分を占めている(3日間で15.8k GB-sec)
- 原因: mcp-server が SSE(EventSource)で接続 → DO が hibernation できずアクティブ時間が膨張
- Worker DO側は WebSocket Hibernation API を正しく実装済み(
this.ctx.acceptWebSocket() + 3ハンドラ)
- DO のコメントに「SSE fallback は hibernation 中にイベントを逃す可能性がある」と明記
- local-mcp にはすでに WebSocket 接続実装がある(
local-mcp/src/index.ts L515-618)
- Node.js 18+ にネイティブ WebSocket API があり、依存追加不要
- mcp-server の
engines は >=18.0.0
constraints
- チャンネル機能(リアルタイム通知)は維持する
- Free プランの無料枠内に収める
- local-mcp の WebSocket 実装パターンを参考にする
eventsource パッケージへの依存を除去可能
方針
mcp-server のチャンネル接続を EventSource(SSE)から ネイティブ WebSocket に切り替える。
local-mcp の実装(local-mcp/src/index.ts L515-618)を参考に移植。
25秒 keepalive、自動再接続(exponential backoff)を含む。
target files
mcp-server/server/index.js(チャンネル接続部分を SSE → WebSocket に変更)
mcp-server/package.json(eventsource 依存を除去、該当する場合)
purpose
Durable Objects の duration(GB-sec)が無料枠(13,000 GB-sec/日)を超過している問題に対処する。mcp-server のチャンネル接続を SSE から WebSocket に切り替え、DO hibernation を有効化する。
premise
this.ctx.acceptWebSocket()+ 3ハンドラ)local-mcp/src/index.tsL515-618)enginesは>=18.0.0constraints
eventsourceパッケージへの依存を除去可能方針
mcp-server のチャンネル接続を EventSource(SSE)から ネイティブ WebSocket に切り替える。
local-mcp の実装(
local-mcp/src/index.tsL515-618)を参考に移植。25秒 keepalive、自動再接続(exponential backoff)を含む。
target files
mcp-server/server/index.js(チャンネル接続部分を SSE → WebSocket に変更)mcp-server/package.json(eventsource 依存を除去、該当する場合)