MCP TypeScriptサーバーSDK:共有のトランスポートまたはサーバーインスタンスを使用している場合、あるクライアントからのメッセージが別のクライアントに送信される。

### 概要
影響を受けるバージョンでは、HTTP経由でアクセス可能なMCPサーバーが、あるクライアントからの応答や通知を別のクライアントに送信する可能性がありました。これは、クライアントが共有のステートレスなトランスポート、または1つの`McpServer`または`Server`インスタンスを使用している場合に発生します。

メッセージは、JSON-RPCの`id`のみに基づいて接続と関連付けられます。SDKクライアントはリクエスト番号を0から割り当てるため、通常の使用では`id`が衝突する可能性があります。

### 影響はありますか?
はい、複数のクライアントがHTTPエンドポイントにアクセスでき、コードが起動時にトランスポートまたはサーバーを1回だけ作成している場合(リクエストごと、またはセッションごとに作成していない場合)、影響を受ける可能性があります。このリリース以前の、`@modelcontextprotocol/hono`、`express`、`fastify`、および`node`のREADMEの例では、そのような実装が示されていました。

影響を受けるバージョン:`@modelcontextprotocol/server` 2.0.0から2.2.0。

影響を受けないもの:

- 毎回新しいサーバーを構築するファクトリを使用する`createMcpHandler()`
- stdioサーバー
- `@modelcontextprotocol/sdk` 1.26.0以降

### 修正方法
`@modelcontextprotocol/server`を2.3.0以降にアップグレードしてください。

**コードの変更も必要です。** SDKは共有を許可しないように変更されたため、影響を受けるアプリケーションはアップグレード後にリクエストに失敗します。2回目の`connect()`は`ALREADY_CONNECTED`エラーで拒否され、ステートレスなトランスポートは2回目のリクエストを拒否します。

以下のいずれかの方法に変更してください。

- **`createMcpHandler()`:** 毎回新しい`McpServer`を構築するファクトリを渡します。
- **リクエストごと:** リクエストハンドラ内で新しい`McpServer`と新しいトランスポートを構築します。
- **セッションごと:** `sessionIdGenerator`を設定し、セッションごとに1つの`McpServer`と1つのトランスポートを保持します。

まだアップグレードできない場合は、同じ変更が影響を受けるバージョンを修正します。

影響を受けるパッケージ:
- npm (JavaScript) `@modelcontextprotocol/server`: 影響あり >= 2.0.0, < 2.3.0、2.3.0で修正済み。