Skip to content

Commit b31ddf3

Browse files
authored
Retire wording tied to pre-2.0 milestones (#3211)
1 parent 6f69a37 commit b31ddf3

14 files changed

Lines changed: 26 additions & 28 deletions

File tree

docs/advanced/middleware.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@ A **middleware** is one async function that wraps every message your server rece
55
You write it as `async (ctx, call_next)` and append it to `server.middleware`. That is the whole API.
66

77
!!! warning
8-
The middleware list is marked **provisional** in the source. The signature and semantics are
9-
expected to change before v2 is final. Use it to *observe* (timing, logging, tracing) and to
8+
The middleware list is marked **provisional** in the source: its signature and semantics may
9+
change in a 2.x minor release. Use it to *observe* (timing, logging, tracing) and to
1010
*refuse* messages; do not make it the foundation your server stands on.
1111

1212
`MCPServer` takes the list at construction (`MCPServer(name, middleware=[...])`) and exposes it as

examples/stories/legacy_routing/README.md

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -94,8 +94,7 @@ eras need different auth, rate limits, or scaling.
9494
- DNS-rebinding protection is on by default; the harness disables it
9595
(`NO_DNS_REBIND`) because the in-process httpx2 client sends no `Origin`.
9696
Drop the kwarg for a real deployment.
97-
- `mcp.shared.inbound` is a deep import path — a shorter re-export is planned
98-
before beta.
97+
- `mcp.shared.inbound` is a deep import path; there is no shorter re-export.
9998

10099
## Spec
101100

examples/stories/middleware/README.md

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -31,12 +31,13 @@ uv run python -m stories.middleware.client --http
3131

3232
## Caveats
3333

34-
- **Lowlevel-only.** `Server.middleware` on `mcp.server.lowlevel.Server` is the
35-
one public hook; `MCPServer` has no public accessor for it yet (a
36-
`MCPServer.middleware` accessor is planned before beta).
34+
- **One list, two accessors.** `Server.middleware` on
35+
`mcp.server.lowlevel.Server` is the hook this story uses; `MCPServer`
36+
exposes the same list as `MCPServer.middleware` (or takes it at
37+
construction as `MCPServer(name, middleware=[...])`).
3738
- The middleware signature is **provisional** (see the TODO in
38-
`src/mcp/server/lowlevel/server.py`): it tightens to a covariant `Context[L]`
39-
and gains an outbound seam before v2 final.
39+
`src/mcp/server/lowlevel/server.py`): it may change in a 2.x minor release,
40+
tightening to a covariant `Context[L]` and gaining an outbound seam.
4041
- `ServerMiddleware` / `CallNext` / `HandlerResult` are imported from
4142
`mcp.server.context` (helper tier); not re-exported at `mcp.server.lowlevel`.
4243
- Do **not** `await ctx.session.send_request(...)` while wrapping `initialize`

examples/stories/middleware/server.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
"""Dispatch-layer middleware: `Server.middleware` is the public hook.
22
3-
A lowlevel-only story: `MCPServer` has no public middleware accessor yet, so the
4-
one supported registration point is the `middleware` list on `lowlevel.Server`.
3+
This story registers on the lowlevel `Server`; `MCPServer` exposes the same
4+
list as `MCPServer.middleware`, so the recipe carries over unchanged.
55
"""
66

77
import json

examples/stories/roots/README.md

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
> **Deprecated** in the 2026-07-28 protocol (SEP-2577); functional through the
44
> deprecation window. Migration: accept directory paths as ordinary tool
55
> parameters or resource URIs instead of relying on `roots/list`.
6-
> TODO(maxisbey): revisit before beta.
76
87
The client passes a `list_roots_callback` returning the filesystem locations it
98
is willing to expose; a server tool calls `ctx.session.list_roots()` mid-request

examples/stories/sampling/README.md

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
> **Deprecated** in the 2026-07-28 protocol (SEP-2577); functional through the
44
> deprecation window. Migration: call your LLM provider directly from the
55
> server instead of requesting completions through the client.
6-
> TODO(maxisbey): revisit before beta.
76
87
A tool that asks the **client's** LLM for a completion mid-call — the inverted
98
MCP direction. The server holds no model API key; it awaits

examples/stories/serve_one/README.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -34,15 +34,15 @@ uv run python -m stories.serve_one.client
3434
## Caveats
3535

3636
- **Deep imports**`serve_one`, `serve_connection`, and `Connection` are only
37-
reachable at `mcp.server.runner` / `mcp.server.connection` today; a shorter
38-
`mcp.server.*` re-export is tracked for beta.
37+
reachable at `mcp.server.runner` / `mcp.server.connection`; there is no
38+
shorter `mcp.server.*` re-export.
3939
- **Lowlevel-only.** The drivers take a `lowlevel.Server` and `MCPServer` has
4040
no public accessor for its underlying one (`_lowlevel_server` is private), so
4141
there is no `MCPServer`-tier variant of this story. Build the lowlevel
4242
`Server` directly until that accessor lands.
4343
- **No public `DispatchContext`**`SingleExchangeContext` is hand-rolled
44-
boilerplate; a public helper (or a `serve_one` overload that builds one) is
45-
tracked for beta.
44+
boilerplate; there is no public helper (or `serve_one` overload) that builds
45+
one.
4646
- **Lifespan** — the transport entry enters `server.lifespan(server)` **once**
4747
and threads `lifespan_state` to every `handle_one()` call; never enter it
4848
per-request.

examples/stories/sse_polling/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
> the sessionful transport are removed in the 2026-07-28 protocol (SEP-2575)
55
> with no modern-era equivalent; the closest 2026-era pattern is client-side
66
> reconnection over a persisted `DiscoverResult`
7-
> [`reconnect/`](../reconnect/). TODO(maxisbey): revisit before beta.
7+
> [`reconnect/`](../reconnect/).
88
99
SEP-1699 server-initiated SSE disconnection with `Last-Event-ID` replay. The
1010
server's `EventStore` stamps every SSE event with an ID and opens each response

examples/stories/starlette_mount/README.md

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,8 +45,7 @@ kill "$SERVER_PID"
4545
no `Origin` header. Remove it (or configure allowed hosts) for a real
4646
deployment.
4747
- The parent-lifespan dance is a known SDK ergonomics gap (other SDKs mount
48-
with no extra ceremony); tracked for the beta reshape. The recipe shown here
49-
is what works today.
48+
with no extra ceremony). The recipe shown here is what works today.
5049

5150
## Spec
5251

examples/stories/streaming/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ uv run python -m stories.streaming.client --http --server server_lowlevel
5555
through the deprecation window. Migration: write to stderr or emit
5656
OpenTelemetry instead of `notifications/message`. It is shown here because
5757
servers still need to support 2025-era clients during that window. Progress
58-
and cancellation are **not** deprecated. TODO(maxisbey): revisit before beta.
58+
and cancellation are **not** deprecated.
5959
- A cancelled request is not answered: no response follows
6060
`notifications/cancelled`. (The 2025-era streamable HTTP transport is the one
6161
exception - its wire ends a request only with a response, so it terminates

0 commit comments

Comments
 (0)