Empty members in the Accept header cause a 500
維護者通常 1 天內回覆
評估
研究方向
問題出在 Streamable HTTP 傳輸中的 parse_accept_header,它呼叫 split(";").first.strip,對空的列表成員會得到 nil。執行 issue 中的重現步驟,查看 500 錯誤。當像 application/json,,text/event-stream 這樣的空成員被略過且請求成功,並附帶涵蓋該情況的測試時,即完成。
由索引模型根據 Issue 內容生成。
描述
An Accept header with an empty list member makes the Streamable HTTP transport answer 500, even though both required media types are there:
server = MCP::Server.new(name: "repro", version: "1.0.0", tools: [], capabilities: { tools: {} })
transport = MCP::Server::Transports::StreamableHTTPTransport.new(server, stateless: true, enable_json_response: true)
env = Rack::MockRequest.env_for(
"/mcp",
method: "POST",
input: '{"jsonrpc":"2.0","id":1,"method":"tools/list"}',
"CONTENT_TYPE" => "application/json",
"HTTP_ACCEPT" => "application/json,,text/event-stream",
)
transport.handle_request(Rack::Request.new(env))
# => [500, ..., ['{"jsonrpc":"2.0","id":null,"error":{"code":-32603,"message":"Internal server error"}}']]
The same happens with ", application/json, text/event-stream". parse_accept_header calls part.split(";").first.strip, and for an empty member split returns [], so first is nil.
HTTP allows these: "a recipient MUST parse and ignore a reasonable number of empty list elements" (RFC 9110, section 5.6.1.2). Skipping empty members in parse_accept_header would fix it; I'll send a PR.
Seen with 1.7.0; main at 9d12f51 has the same code.
- 主要語言
- Ruby
- 星號
- 924
- 分支
- 136
- 平均合併
- 1 天 6 小時
- 30 天內合併 PR
- 38
環境準備
- 沒有 Dockerfile 或 Docker Compose 檔案
- 沒有 Pull Request 範本
- 閱讀貢獻指南
從這裡開始
- 先讀完整個 Issue,再讀專案的貢獻指南。
- 在 Issue 下留言說明你要接手 —— 這能避免兩個人做同樣的事。
- Fork 儲存庫,在一個分支上完成修改。
- 送出 Pull Request,並在描述裡引用這個 Issue 編號。
modelcontextprotocol/ruby-sdk 的其他 Issue
-
Error responses carry "id": null, which the MCP schema does not allow可能已有人在做 @koic 於 1 天前認領。 未關閉bug
難度 3/5 半天 新手友好度 45/100
modelcontextprotocol/ruby-sdk#606 ·
維護者通常 1 天內回覆
-
String request ids are limited to letters, digits, "_" and "-"可能已有人在做 @koic 於 2 天前認領。 未關閉bug
modelcontextprotocol/ruby-sdk#603 · 已指派 1 人 ·
維護者通常 1 天內回覆
-
Methods of undeclared capabilities return -32603 instead of -32601可能已有人在做 @koic 於 2 天前認領。 未關閉bug
modelcontextprotocol/ruby-sdk#602 · 已指派 1 人 ·
維護者通常 1 天內回覆
-
Requests with "id": null are run like notifications可能已有人在做 @koic 於 2 天前認領。 未關閉bug
modelcontextprotocol/ruby-sdk#601 · 已指派 1 人 ·
維護者通常 1 天內回覆
-
Support modelcontextprotocol/experimental-ext-triggers-events可能已有人在做 @koic 於 6 天前認領。 未關閉enhancement
modelcontextprotocol/ruby-sdk#594 · 已指派 1 人 ·
維護者通常 1 天內回覆
查看 modelcontextprotocol/ruby-sdk 的全部 Issue
相似的 Issue
-
難度 2/5 1-3 小時 新手友好度 85/100
維護者通常 4 天內回覆
-
難度 2/5 1-3 小時 新手友好度 66/100
-
難度 2/5 1-3 小時 新手友好度 68/100
-
ds-drift
難度 2/5 1-3 小時 新手友好度 68/100
we-promise/sure#4266 ·
維護者通常 1 天內回覆
-
:bank: debt
難度 2/5 1-3 小時 新手友好度 75/100
cucumber/cucumber-ruby-core#346 · 1 則留言 ·