modelcontextprotocol / modelcontextprotocol/java-sdk
Should McpTransportContextExtractor contain default methods for protocol version, lastEventId and sessionId
未關閉
還沒有人認領這個 Issue。
waiting for triage
- 主要語言
- Java
- 星號
- 3.7k
- 分支
- 1.1k
- 平均合併
- 1 天 15 小時
- 30 天內合併 PR
- 9
描述
I am defining my McpTransportContextExtractor implementation as:
@Internal
@Singleton
class DefaultMcpTransportContextExtractor implements McpTransportContextExtractor<HttpRequest<?>> {
public static final String HTTP_HEADER_MCP_PROTOCOL_VERSION = "MCP-Protocol-Version";
public static final String DEFAULT_PROTOCOL_VERSION = "2025-03-26";
public static final String HTTP_HEADER_MCP_SESSION_ID = "Mcp-Session-Id";
public static final String HTTP_HEADER_DEFAULT_LAST_EVENT_ID = "Last-Event-ID";
@Override
public McpTransportContext extract(HttpRequest<?> request, McpTransportContext transportContext) {
transportContext.put(HTTP_HEADER_MCP_PROTOCOL_VERSION,
request.getHeaders().get(HTTP_HEADER_MCP_PROTOCOL_VERSION, String.class)
.orElse(DEFAULT_PROTOCOL_VERSION));
request.getHeaders().get(HTTP_HEADER_MCP_SESSION_ID, String.class)
.ifPresent(v -> transportContext.put(HTTP_HEADER_MCP_SESSION_ID, v));
request.getHeaders().get(HTTP_HEADER_DEFAULT_LAST_EVENT_ID, String.class)
.ifPresent(v -> transportContext.put(HTTP_HEADER_DEFAULT_LAST_EVENT_ID, v));
return transportContext;
}
}
But given that the specification defines session id, last event and protocol version. I think it would be good if the McpTransportContextExtractor contained default methods:
default String getSessionId() {
return null;
}
default String getLastEventId() {
return null;
}
default String getProtocolVersion() {
return "2025-03-26";
}
I can submit a PR if you think it is a good idea. With this change the TransportContext will have a clear API for those spec defined concepts.
貢獻指南
從這裡開始
- 先讀完整個 Issue,再讀專案的貢獻指南。
- 在 Issue 下留言說明你要接手 —— 這能避免兩個人做同樣的事。
- Fork 儲存庫,在一個分支上完成修改。
- 送出 Pull Request,並在描述裡引用這個 Issue 編號。
研究方向
定位 McpTransportContextExtractor,並結合 McpTransportContext 的使用情況檢查其現有實作。檢查協定版本、工作階段 ID 和最後事件 ID 的預設存取器是否符合目前的 API 和協定概念;完成的標準是該介面公開一致且相容的 API。
由索引模型根據 Issue 內容生成。
評估
- 技術堆疊
- java
- 領域
- api, backend-api-design
- Issue 類型
- 功能
- 難度
- 3/5
- 預估耗時
- 1-2 天
- 活躍度
- 停滯
- 描述清晰度
- 基本清楚
- 新手友好度
- 45/100