docs: stop presenting the in-memory client as the way to connect (#3443)
This commit is contained in:
parent
0c9136841f
commit
7bb486a10f
1 changed files with 803 additions and 598 deletions
|
|
@ -6,9 +6,17 @@ Servers released before 2026-07-28 open every connection with the **`initialize`
|
|||
|
||||
You almost never have to care, because `Client` negotiates for you. This page is about the one constructor argument that controls it, `mode=`, and the three times you change it.
|
||||
|
||||
Every snippet on this page is a `client.py` that talks to the Bookshop `server.py` from **[The Client](client/index.md)**. Start that server in one terminal:
|
||||
|
||||
```console
|
||||
uv run mcp run server.py --transport streamable-http
|
||||
```
|
||||
|
||||
Then run each snippet in a second terminal with `python client.py`.
|
||||
|
||||
## `mode="auto"`
|
||||
|
||||
```python title="client.py" hl_lines="14-15"
|
||||
```python title="client.py" hl_lines="7-8"
|
||||
--8<-- "docs_src/protocol_versions/tutorial001.py"
|
||||
```
|
||||
|
||||
|
|
@ -26,13 +34,14 @@ Either way you come out connected, and `client.protocol_version` tells you which
|
|||
That is the whole feature. One `Client`, any era of server, no branching in your code.
|
||||
|
||||
!!! info
|
||||
`MCPServer` answers `server/discover` on every transport — in-memory, stdio, streamable
|
||||
HTTP — so against your own server `auto` always lands on `2026-07-28`. The fallback only
|
||||
ever fires against a real pre-2026 server, which is exactly when you want it to.
|
||||
`MCPServer` answers `server/discover` on every transport — Streamable HTTP, stdio, and the
|
||||
in-process connection your tests use — so against your own server `auto` always lands on
|
||||
`2026-07-28`. The fallback only ever fires against a real pre-2026 server, which is exactly
|
||||
when you want it to.
|
||||
|
||||
## `mode="legacy"`
|
||||
|
||||
```python title="client.py" hl_lines="14"
|
||||
```python title="client.py" hl_lines="7"
|
||||
--8<-- "docs_src/protocol_versions/tutorial002.py"
|
||||
```
|
||||
|
||||
|
|
@ -56,7 +65,7 @@ At 2026-07-28 it is gone. The server *returns* its questions and you retry the c
|
|||
|
||||
`mode` also accepts a modern protocol version string. Today that set is exactly `["2026-07-28"]`.
|
||||
|
||||
```python title="client.py" hl_lines="14"
|
||||
```python title="client.py" hl_lines="7"
|
||||
--8<-- "docs_src/protocol_versions/tutorial003.py"
|
||||
```
|
||||
|
||||
|
|
@ -89,7 +98,7 @@ The probe is cheap, but it is still a round trip you pay on every reconnect, and
|
|||
|
||||
So keep it. After an `auto` connection, `client.session.discover_result` holds the exact `DiscoverResult` the server sent: its `supported_versions`, its `capabilities`, its `instructions`, and the identity the server stamped into the result's `_meta`. Hand it back as `prior_discover=` the next time:
|
||||
|
||||
```python title="client.py" hl_lines="15 17"
|
||||
```python title="client.py" hl_lines="8 10"
|
||||
--8<-- "docs_src/protocol_versions/tutorial004.py"
|
||||
```
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue