Skip to content

Commit 76ac296

Browse files
Merge branch 'main' into fix/task-diagram-clarity
2 parents b485635 + 5268def commit 76ac296

File tree

7 files changed

+43
-31
lines changed

7 files changed

+43
-31
lines changed

docs/clients.mdx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ This page provides an overview of applications that support the Model Context Pr
1111

1212
{/* prettier-ignore-start */}
1313

14+
1415
| Client | [Resources] | [Prompts] | [Tools] | [Discovery] | [Sampling] | [Roots] | [Elicitation] | [Instructions] |
1516
| ------------------------------------------------ | ----------- | --------- | ------- | ---------------------- | ---------- | ----- | ------------ | -------------- |
1617
| [5ire][5ire] |||||||||
@@ -48,7 +49,7 @@ This page provides an overview of applications that support the Model Context Pr
4849
| [Genkit][Genkit] | ⚠️ ||||||||
4950
| [Glama][Glama] |||||||||
5051
| [Gemini CLI][Gemini CLI] |||||||||
51-
| [GenAIScript][GenAIScript] | ||||||||
52+
| [GenAIScript][GenAIScript] | ||||||||
5253
| [GitHub Copilot coding agent][GitHubCopilotCodingAgent] |||||||||
5354
| [goose][goose] |||||||||
5455
| [gptme][gptme] |||||||||

docs/specification/draft/basic/authorization.mdx

Lines changed: 9 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -203,6 +203,13 @@ MCP supports three client registration mechanisms. Choose based on your scenario
203203
- **Pre-registration**: When client and server have an existing relationship
204204
- **Dynamic Client Registration**: For backwards compatibility or specific requirements
205205

206+
Clients supporting all options **SHOULD** follow the following priority order:
207+
208+
1. Use pre-registered client information for the server if the client has it available
209+
2. Use Client ID Metadata Documents if the Authorization Server indicates if the server supports it (via `client_id_metadata_document_supported` in OAuth Authorization Server Metadata)
210+
3. Use Dynamic Client Registration as a fallback if the Authorization Server supports it (via `registration_endpoint` in OAuth Authorization Server Metadata)
211+
4. Prompt the user if no other option is available
212+
206213
### Client ID Metadata Documents
207214

208215
MCP clients and authorization servers **SHOULD** support OAuth Client ID Metadata Documents as specified in
@@ -630,21 +637,8 @@ The authorization server takes a URL as input from an unknown client and fetches
630637
A malicious client could use this to trigger the authorization server to make requests to arbitrary URLs,
631638
such as requests to private administration endpoints the authorization server has access to.
632639

633-
Authorization servers fetching metadata documents **MUST** protect against
634-
[Server-Side Request Forgery (SSRF)](https://developer.mozilla.org/docs/Web/Security/Attacks/SSRF) attacks,
635-
as well as against being used as Denial of Service (DoS) amplifiers:
636-
637-
- Validate URLs and resolved IP addresses before fetching
638-
- Limit response size (recommended 5 kilobytes)
639-
- Implement request timeouts
640-
- Implement aggressive caching of metadata documents (respecting HTTP cache headers)
641-
- Never cache error responses or invalid documents
642-
- Rate limit metadata fetch requests per client
643-
- Monitor and alert on unusual metadata fetch patterns
644-
- Only fetch client metadata after authenticating the user
645-
646-
While there is no amplification in the fetch request bandwidth, aggressive caching minimizes
647-
the risk of authorization servers being used in distributed denial of service attacks.
640+
Authorization servers fetching metadata documents **SHOULD** consider
641+
[Server-Side Request Forgery (SSRF)](https://developer.mozilla.org/docs/Web/Security/Attacks/SSRF) risks, as described in [OAuth Client ID Metadata Document: Server Side Request Forgery (SSRF) Attacks](https://datatracker.ietf.org/doc/html/draft-ietf-oauth-client-id-metadata-document-00#name-server-side-request-forgery).
648642

649643
#### Localhost Redirect URI Risks
650644

docs/specification/draft/basic/transports.mdx

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,7 @@ MCP endpoint.
111111
at any time in order to avoid holding a long-lived connection. The client
112112
**SHOULD** then "poll" the SSE stream by attempting to reconnect.
113113
- If the server does close the _connection_ prior to terminating the _SSE stream_,
114-
it **SHOULD** send an SSE event with a standard `retry` field before
114+
it **SHOULD** send an SSE event with a standard [`retry`](https://html.spec.whatwg.org/multipage/server-sent-events.html#the-retry-value) field before
115115
closing the connection. The client **MUST** respect the `retry` field,
116116
waiting the given number of milliseconds before attempting to reconnect.
117117
- The SSE stream **SHOULD** eventually include a JSON-RPC _response_ for the
@@ -148,6 +148,9 @@ MCP endpoint.
148148
[resuming](#resumability-and-redelivery) a stream associated with a previous client
149149
request.
150150
- The server **MAY** close the SSE stream at any time.
151+
- If the server closes the _connection_ without terminating the _stream_, it
152+
**SHOULD** follow the same polling behavior as described for POST requests:
153+
sending a `retry` field and allowing the client to reconnect.
151154
- The client **MAY** close the SSE stream at any time.
152155

153156
### Multiple Connections
@@ -168,15 +171,20 @@ lost:
168171
- If present, the ID **MUST** be globally unique across all streams within that
169172
[session](#session-management)—or all streams with that specific client, if session
170173
management is not in use.
171-
2. If the client wishes to resume after a broken connection, it **SHOULD** issue an HTTP
172-
GET to the MCP endpoint, and include the
174+
- Event IDs **SHOULD** encode sufficient information to identify the originating
175+
stream, enabling the server to correlate a `Last-Event-ID` to the correct stream.
176+
2. If the client wishes to resume after a disconnection (whether due to network failure
177+
or server-initiated closure), it **SHOULD** issue an HTTP GET to the MCP endpoint,
178+
and include the
173179
[`Last-Event-ID`](https://html.spec.whatwg.org/multipage/server-sent-events.html#the-last-event-id-header)
174180
header to indicate the last event ID it received.
175181
- The server **MAY** use this header to replay messages that would have been sent
176182
after the last event ID, _on the stream that was disconnected_, and to resume the
177183
stream from that point.
178184
- The server **MUST NOT** replay messages that would have been delivered on a
179185
different stream.
186+
- This mechanism applies regardless of how the original stream was initiated (via
187+
POST or GET). Resumption is always via HTTP GET with `Last-Event-ID`.
180188

181189
In other words, these event IDs should be assigned by servers on a _per-stream_ basis, to
182190
act as a cursor within that particular stream.
@@ -291,8 +299,8 @@ protocol version 2024-11-05) as follows:
291299
defined above:
292300
- If it succeeds, the client can assume this is a server supporting the new Streamable
293301
HTTP transport.
294-
- If it fails with an HTTP 4xx status code (e.g., 405 Method Not Allowed or 404 Not
295-
Found):
302+
- If it fails with the following HTTP status codes "400 Bad Request", "404 Not
303+
Found" or "405 Method Not Allowed":
296304
- Issue a GET request to the server URL, expecting that this will open an SSE stream
297305
and return an `endpoint` event as the first event.
298306
- When the `endpoint` event arrives, the client can assume this is a server running

docs/specification/draft/changelog.mdx

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,11 +26,22 @@ the previous revision, [2025-06-18](/specification/2025-06-18).
2626
3. Updated the [Security Best Practices guidance](https://modelcontextprotocol.io/specification/draft/basic/security_best_practices).
2727
4. Clarify that input validation errors should be returned as Tool Execution Errors rather than Protocol Errors to enable model self-correction ([SEP-1303](https://github.com/modelcontextprotocol/modelcontextprotocol/issues/1303)).
2828
5. Support polling SSE streams by allowing servers to disconnect at will ([SEP-1699](https://github.com/modelcontextprotocol/modelcontextprotocol/issues/1699)).
29+
6. Clarify SEP-1699: GET streams support polling, resumption always via GET regardless of stream origin, event IDs should encode stream identity, disconnection includes server-initiated closure (Issue [#1847](https://github.com/modelcontextprotocol/modelcontextprotocol/issues/1847)).
30+
7. Align OAuth 2.0 Protected Resource Metadata discovery with RFC 9728, making `WWW-Authenticate` header optional with fallback to `.well-known` endpoint ([SEP-985](https://github.com/modelcontextprotocol/modelcontextprotocol/issues/985)).
31+
8. Add support for default values in all primitive types (string, number, enum) for elicitation schemas ([SEP-1034](https://github.com/modelcontextprotocol/modelcontextprotocol/issues/1034)).
32+
9. Establish JSON Schema 2020-12 as the default dialect for MCP schema definitions ([SEP-1613](https://github.com/modelcontextprotocol/modelcontextprotocol/issues/1613)).
2933

3034
## Other schema changes
3135

3236
1. Decouple request payloads from RPC method definitions into standalone parameter schemas. ([SEP-1319](https://github.com/modelcontextprotocol/specification/issues/1319), PR [#1284](https://github.com/modelcontextprotocol/specification/pull/1284))
3337

38+
## Governance and process updates
39+
40+
1. Formalize Model Context Protocol governance structure ([SEP-932](https://github.com/modelcontextprotocol/modelcontextprotocol/issues/932)).
41+
2. Establish shared communication practices and guidelines for the MCP community ([SEP-994](https://github.com/modelcontextprotocol/modelcontextprotocol/issues/994)).
42+
3. Formalize Working Groups and Interest Groups in MCP governance ([SEP-1302](https://github.com/modelcontextprotocol/modelcontextprotocol/issues/1302)).
43+
4. Establish SDK tiering system with clear requirements for feature support and maintenance commitments ([SEP-1730](https://github.com/modelcontextprotocol/modelcontextprotocol/issues/1730)).
44+
3445
## Full changelog
3546

3647
For a complete list of all changes that have been made since the last protocol revision,

0 commit comments

Comments
 (0)