Empty members in the Accept header cause a 500
I maintainer di solito rispondono entro 1 giorno
@koic ci sta già lavorando.
Dal 15/10/2026.
Valutazione
- Difficoltà
- 2/5
- Tempo stimato
- 1-3 ore
- Idoneità per principianti
- 82/100
Direzione di ricerca
Il bug è in parse_accept_header nel transport Streamable HTTP, che chiama split(";").first.strip e ottiene nil per un membro vuoto della lista. Esegui la riproduzione dell'issue per vedere l'errore 500. Il lavoro è completo quando i membri vuoti come application/json,,text/event-stream vengono saltati e la richiesta ha successo, con un test che copra questo caso.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
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.
- Lingua principale
- Ruby
- Stelle
- 924
- Fork
- 136
- Merge medio
- 1g 5h
- PR unite (30g)
- 37
Preparare l'ambiente
- Nessun Dockerfile né file Docker Compose
- Nessun modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di modelcontextprotocol/ruby-sdk
-
Error responses carry "id": null, which the MCP schema does not allowForse già presa @koic l’ha presa oggi. Apertabug
Difficoltà 3/5 Mezza giornata Idoneità per principianti 45/100
modelcontextprotocol/ruby-sdk#606 ·
I maintainer di solito rispondono entro 1 giorno
-
String request ids are limited to letters, digits, "_" and "-"Forse già presa @koic l’ha presa oggi. Apertabug
modelcontextprotocol/ruby-sdk#603 · 1 assegnatario ·
I maintainer di solito rispondono entro 1 giorno
-
Methods of undeclared capabilities return -32603 instead of -32601Forse già presa @koic l’ha presa oggi. Apertabug
modelcontextprotocol/ruby-sdk#602 · 1 assegnatario ·
I maintainer di solito rispondono entro 1 giorno
-
Requests with "id": null are run like notificationsForse già presa @koic l’ha presa oggi. Apertabug
modelcontextprotocol/ruby-sdk#601 · 1 assegnatario ·
I maintainer di solito rispondono entro 1 giorno
-
Support modelcontextprotocol/experimental-ext-triggers-eventsForse già presa @koic l’ha presa 4 giorni fa. Apertaenhancement
modelcontextprotocol/ruby-sdk#594 · 1 assegnatario ·
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di modelcontextprotocol/ruby-sdk
Issue simili
-
agent:triaged bug bughunt pm:bundler priority:p1
Difficoltà 2/5 1-3 ore Idoneità per principianti 70/100
SocketDev/socket-patch#1573 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
bug chat verified
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
I maintainer di solito rispondono entro 6 giorni
-
🐞 bug pending triage
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
CircuitVerse/CircuitVerse#8031 · 2 commenti ·
I maintainer di solito rispondono entro 1 giorno
-
BazaRb::Fake#enter rejects dotted badges accepted by BazaRb#enterForse già presa Una pull request collegata a questa issue è aperta o già unita. Aperta
Difficoltà 1/5 1-3 ore Idoneità per principianti 84/100
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 70/100
riscv/riscv-unified-db#2740 ·
I maintainer di solito rispondono entro 1 giorno