Empty members in the Accept header cause a 500
Mantenedores costumam responder em até 1 dia
@koic já está trabalhando nisso.
Desde 15/10/2026.
Avaliação
- Dificuldade
- 2/5
- Tempo estimado
- 1-3 horas
- Facilidade para iniciantes
- 82/100
Direção de pesquisa
O bug está em parse_accept_header no transporte Streamable HTTP, que chama split(";").first.strip e recebe nil para um membro vazio da lista. Execute a reprodução da issue para ver o 500. Está pronto quando membros vazios como application/json,,text/event-stream são ignorados e a requisição tem sucesso, com um teste cobrindo esse caso.
Escrita pelo modelo de indexação a partir do texto da issue.
Descrição
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.
- Linguagem predominante
- Ruby
- Estrelas
- 924
- Forks
- 136
- Merge médio
- 1d 5h
- PRs com merge (30d)
- 37
Preparar o ambiente
- Sem Dockerfile nem arquivo Docker Compose
- Sem modelo de pull request
- Ler o guia de contribuição
Primeiros passos
- Leia a issue inteira e depois o guia de contribuição do projeto.
- Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
- Faça um fork do repositório e trabalhe em uma branch.
- Abra um pull request que referencie o número da issue.
Mais de modelcontextprotocol/ruby-sdk
-
Error responses carry "id": null, which the MCP schema does not allowTalvez já em andamento @koic assumiu hoje. Abertabug
Dificuldade 3/5 Meio dia Facilidade para iniciantes 45/100
modelcontextprotocol/ruby-sdk#606 ·
Mantenedores costumam responder em até 1 dia
-
String request ids are limited to letters, digits, "_" and "-"Talvez já em andamento @koic assumiu há 1 dia. Abertabug
modelcontextprotocol/ruby-sdk#603 · 1 responsável ·
Mantenedores costumam responder em até 1 dia
-
Methods of undeclared capabilities return -32603 instead of -32601Talvez já em andamento @koic assumiu há 1 dia. Abertabug
modelcontextprotocol/ruby-sdk#602 · 1 responsável ·
Mantenedores costumam responder em até 1 dia
-
Requests with "id": null are run like notificationsTalvez já em andamento @koic assumiu há 1 dia. Abertabug
modelcontextprotocol/ruby-sdk#601 · 1 responsável ·
Mantenedores costumam responder em até 1 dia
-
Support modelcontextprotocol/experimental-ext-triggers-eventsTalvez já em andamento @koic assumiu há 4 dias. Abertaenhancement
modelcontextprotocol/ruby-sdk#594 · 1 responsável ·
Mantenedores costumam responder em até 1 dia
Todas as issues de modelcontextprotocol/ruby-sdk
Issues semelhantes
-
NoMethodError in auth#createAbertabugsnag
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 62/100
JoeMcB/improvcoaches#827 ·
-
Dificuldade 1/5 Menos de uma hora Facilidade para iniciantes 72/100
TheOdinProject/curriculum#31465 ·
Mantenedores costumam responder em até 1 dia
-
area: docs eco: ruby good first issue help wanted lane: free-agent roadmap size: XS type: docs
Dificuldade 1/5 Menos de uma hora Facilidade para iniciantes 66/100
arminazimi/evergreen#465 ·
Mantenedores costumam responder em até 1 dia
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 66/100
-
Dificuldade 1/5 Menos de uma hora Facilidade para iniciantes 72/100
simp/puppetsync#120 ·
Mantenedores costumam responder em até 2 dias