[Doc] Document the client's ping answers and the stdio request limit
## Motivation and Context
The client answers server pings automatically, but the docs leave out where that applies and what the stdio transport
does with the other server-to-client requests.
The client Transports page now lists the automatic ping answer among the things the stdio transport handles,
and a note states that `ping` is the only server-to-client request answered there: a wire-level `elicitation/create`
or `sampling/createMessage` is ignored over stdio, so a server that sends one waits for an answer that never comes,
while the SEP-2322 `input_required` route works on every transport and keeps `on_elicitation` and `on_sampling` handlers
working over stdio. Without this note, the only trace of the limitation is a hung tool call.
The client Ping page now says that over HTTP a ping reaches the client only on a stream that is already open
and that the client never opens one to receive pings, so a server can only ping a client that has a stream open.
Registering `on_server_request("ping")` moves to the end of the section as the advanced option it is, together with
its side effect of opening the GET listening stream on `connect`.
The client overview mentions the automatic answer next to `MCP::Client#ping`,
and the server Ping page's Client Side section points at it.
## How Has This Been Tested?
Documentation only; the linked headings and pages exist.
## Breaking Changes
None.
This commit is contained in:
parent
91ee5a2123
commit
7e507f2963
1 changed files with 18 additions and 3 deletions
|
|
@ -59,6 +59,14 @@ The stdio transport automatically handles:
|
|||
- Spawning the server process with `Open3.popen3`
|
||||
- MCP protocol initialization handshake (`initialize` request + `notifications/initialized`)
|
||||
- JSON-RPC 2.0 message framing over newline-delimited JSON
|
||||
- Answering server `ping` requests; see [Answering Server Pings](/client/ping/#answering-server-pings)
|
||||
|
||||
{: .note }
|
||||
> `ping` is the only server-to-client request answered over stdio. A wire-level `elicitation/create`
|
||||
> or `sampling/createMessage` is ignored on this transport, so a server that sends one waits for an answer
|
||||
> that never comes; use Streamable HTTP for those, as described below. The SEP-2322 `input_required` route,
|
||||
> which is how the modern lifecycle asks for the same input, works on every transport, so `on_elicitation`
|
||||
> and `on_sampling` handlers still fire over stdio; see [Multi Round-Trip Requests](/client/mrtr/).
|
||||
|
||||
## HTTP Transport Layer
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue