Hacktoberfest 2026: as issues que os mantenedores marcaram para outubro, abertas e boas para iniciantes. Ver issues do Hacktoberfest

Methods of undeclared capabilities return -32603 instead of -32601

Aberta
#602 0 comentários 0 reações 1 responsável Ver no GitHub

Mantenedores costumam responder em até 1 dia

@koic já está trabalhando nisso.

Desde 14/10/2026.

  • #604 de @dominikklein — fechado sem integrar
  • #611 de @koic — aberto

Avaliação

Esta issue ainda não foi avaliada.

Descrição

bug

On a server that only declares the tools capability, prompts/list (and the other prompt and resource methods) comes back as an Internal error instead of Method not found:

server = MCP::Server.new(name: "repro", version: "1.0.0", tools: [], capabilities: { tools: {} })

server.handle_json('{"jsonrpc":"2.0","id":1,"method":"prompts/list"}')
# => {"jsonrpc":"2.0","id":1,"error":{"code":-32603,"message":"Internal error","data":"Server does not support prompts (required for prompts/list)"}}

server.handle_json('{"jsonrpc":"2.0","id":2,"method":"unknown/x"}')
# => {"jsonrpc":"2.0","id":2,"error":{"code":-32601,"message":"Method not found","data":"unknown/x"}}

Over Streamable HTTP on the 2026-07-28 path, the first one ends up as HTTP 200 with -32603, the second as 404 with -32601. The transport spec asks for the 404 in both cases:

If the server does not implement the requested RPC method, it MUST respond with 404 Not Found and a JSON-RPC error with code -32601 (Method not found).

(Streamable HTTP, Protocol Version Header)

For a client, "the server didn't declare prompts" and "the server has no prompts/list" mean the same thing, and -32603 reads as if the server crashed. I ran into it with the conformance suite (0.2.0-alpha.12, caching scenario against a tools-only server): prompts/list returned JSON-RPC error -32603: Internal error.

The mapping is in Server#handle_request: Methods::MissingRequiredCapabilityError is re-raised with error_type: :internal_error. Raising it with error_code: JsonRpcHandler::ErrorCode::METHOD_NOT_FOUND instead looks like it would fix both protocol eras.

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

Primeiros passos

  1. Leia a issue inteira e depois o guia de contribuição do projeto.
  2. Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
  3. Faça um fork do repositório e trabalhe em uma branch.
  4. Abra um pull request que referencie o número da issue.

Mais de modelcontextprotocol/ruby-sdk

Todas as issues de modelcontextprotocol/ruby-sdk

Issues semelhantes

Mais issues de Ruby

Receba novas issues na sua caixa de entrada

Um resumo curto de issues do GitHub para quem está começando.