String request ids are limited to letters, digits, "_" and "-"
Mantenedores costumam responder em até 1 dia
@koic já está trabalhando nisso.
Desde 14/10/2026.
Avaliação
Esta issue ainda não foi avaliada.
Descrição
String request ids are only accepted if they consist of letters, digits, _ and -. Anything else is refused as Invalid Request:
server = MCP::Server.new(name: "repro", version: "1.0.0", tools: [], capabilities: { tools: {} })
server.handle_json('{"jsonrpc":"2.0","id":"req.1","method":"tools/list"}')
# => {"jsonrpc":"2.0","id":null,"error":{"code":-32600,"message":"Invalid Request","data":"Request ID must match validation pattern, or be an integer or null"}}
server.handle_json('{"jsonrpc":"2.0","id":"req-1","method":"tools/list"}')
# => {"jsonrpc":"2.0","id":"req-1","result":{"tools":[]}}
The pattern comes from JsonRpcHandler::DEFAULT_ALLOWED_ID_CHARACTERS (/\A[a-zA-Z0-9_-]+\z/). Both JSON-RPC 2.0 and MCP allow any string here ("Requests MUST include a string or integer ID", Basic Protocol, Requests), so a client that uses ids like req.1, call:42 or a URN can't talk to a Ruby server. The error also drops the id, even though it was readable, so the client can't match the answer to its request.
JsonRpcHandler.handle takes an id_validation_pattern: keyword, but MCP::Server#handle and #handle_json don't pass one through, so a server can't loosen it without patching the SDK.
Is the restriction intentional, for example to keep odd characters out of logs? If so, an option on the server would already help. Otherwise accepting any string would match the spec.
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
-
Empty members in the Accept header cause a 500Talvez já em andamento @koic assumiu hoje. Abertabug
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 82/100
modelcontextprotocol/ruby-sdk#609 ·
Mantenedores costumam responder em até 1 dia
-
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
-
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