Skip to content

bug: MCP server WebSocket channel connection timeout after v0.9.3 #168

@liplus-lin-lay

Description

@liplus-lin-lay

purpose

v0.9.3 の SSE→WebSocket 切り替え後、MCP サーバーのツール呼び出しがタイムアウトする問題を修正する。

premise

  • v0.9.3 で mcp-server のチャンネル接続を EventSource(SSE)から WebSocket に切り替えた (Reduce Durable Objects duration by offloading SSE from DO #163)
  • 切り替え後、MCP ツール呼び出し(get_pending_status 等)が MCP error -32001: Request timed out になる
  • 根本原因特定: Node.js のネイティブ WebSocket API はブラウザ仕様準拠で、コンストラクタの第二引数は protocols(文字列/配列)のみ。{ headers: { Authorization: ... } } オプションオブジェクトはサイレントに無視される
  • 結果として認証ヘッダーが Worker に届かず、接続が拒否される → リトライループ → OAuthが繰り返し発火
  • local-mcp は ws npm パッケージを使っており、headers オプションが正しくサポートされている
  • Node.js v24.14.1 で確認済み

constraints

  • ws パッケージを依存に追加し、local-mcp と同じ WebSocket 接続パターンを使用する
  • ネイティブ WebSocket は使わない

target files

  • mcp-server/server/index.js(WebSocket 接続で ws パッケージを使用)
  • mcp-server/package.json(ws 依存追加)

Metadata

Metadata

Labels

bugSomething isn't workingin-progress着手中、実装または検証が進行中

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions