modelcontextprotocol / modelcontextprotocol/java-sdk

Current implementation of HttpServletStreamableServerTransportProvider or HttpServletSseServerTransportProvider needs strict stickyness

オープン
#499 コメント 11 件 リアクション 0 件 担当者 0 名 GitHub で見る

まだ誰も着手していません。

enhancement feature/session-storage P2
主要言語
Java
スター
3.7k
フォーク
1.1k
平均マージ
1日 15時間
マージ済み PR(30日)
9

説明

Current implementations are holding mcp sessions into a in memory Map https://github.com/modelcontextprotocol/java-sdk/blob/713ee1add0e29d184224aabdf06d024ef30a2754/mcp/src/main/java/io/modelcontextprotocol/server/transport/HttpServletStreamableServerTransportProvider.java#L108
This make it mandatory to have strict stickyness "a la" browser" in a replicated/high availability environement which doesn't exist for agent (and we cannot rely on llm agents to implement this)
The feature could be

  • first very simple option an option for HttpServletStreamableServerTransportProvider.Builder to have an option to provide the map (then users can use different tools to have some shared Map)
  • create an interface to handle those sessions (with minimum operations such add, get. delete)

コントリビューションガイド

コントリビューションガイドを開く

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

調査の方向性

まず、108行目付近のインメモリセッション Map がある HttpServletStreamableServerTransportProvider.java から始め、次に同じセッション処理について HttpServletSseServerTransportProvider を調べます。builder が提供する Map の案とセッション管理インターフェースを比較し、厳密なセッション固定なしのレプリケートされたデプロイメントに必要な操作を定義します。完了の条件は、両方のサーブレットトランスポートが、文書化された拡張ポイントを通じて共有セッション状態を使用できることです。

索引モデルが issue の本文から書いたものです。

評価

技術スタック
java
領域
backend, distributed-systems
issue の種類
機能追加
難易度
4/5
見積もり時間
3〜5日
活発さ
停滞
明瞭さ
おおむね明確
初心者へのやさしさ
42/100

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。