Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 16 additions & 7 deletions docs/extensions/auth/enterprise-managed-authorization.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -89,15 +89,24 @@ Key aspects of the flow:

To support Enterprise-Managed Authorization, your client must:

1. **Declare support** in the `initialize` request:
1. **Declare support** in its per-request capabilities:

```json
```jsonc
{
"capabilities": {
"extensions": {
"io.modelcontextprotocol/enterprise-managed-authorization": {}
}
}
"jsonrpc": "2.0",
"id": 1,
"method": "...",
"params": {
// Other fields...
"_meta": {
// Other fields...
"io.modelcontextprotocol/clientCapabilities": {
"extensions": {
"io.modelcontextprotocol/enterprise-managed-authorization": {},
},
},
},
},
}
```

Expand Down
42 changes: 28 additions & 14 deletions docs/extensions/auth/oauth-client-credentials.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -92,15 +92,24 @@ To use the OAuth Client Credentials extension, your client must:
<Steps>
<Step title="Declare support">

Include the extension in the `initialize` request capabilities:
Include the extension in its per-request capabilities:

```json
```jsonc
{
"capabilities": {
"extensions": {
"io.modelcontextprotocol/oauth-client-credentials": {}
}
}
"jsonrpc": "2.0",
"id": 1,
"method": "...",
"params": {
// Other fields...
"_meta": {
// Other fields...
"io.modelcontextprotocol/clientCapabilities": {
"extensions": {
"io.modelcontextprotocol/oauth-client-credentials": {},
},
},
},
},
}
```

Expand Down Expand Up @@ -143,15 +152,20 @@ Ensure the token includes the required scopes for the requested operation.
</Step>
<Step title="Advertise support">

Optionally (but recommended for discoverability), include the extension in the `initialize` response:
Optionally (but recommended for discoverability), include the extension in the `server/discover` response:

```json
```jsonc
{
"capabilities": {
"extensions": {
"io.modelcontextprotocol/oauth-client-credentials": {}
}
}
"jsonrpc": "2.0",
"id": 1,
"result": {
// Other fields...
"capabilities": {
"extensions": {
"io.modelcontextprotocol/oauth-client-credentials": {},
},
},
},
}
```

Expand Down
37 changes: 20 additions & 17 deletions docs/extensions/overview.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -113,47 +113,50 @@ A **breaking change** is any modification that would cause existing implementati

## Negotiation

Clients and servers advertise their support for extensions in the `extensions` field within their respective capabilities during the [initialization handshake](/specification/latest/basic/lifecycle).
Clients and servers advertise their support for extensions in the `extensions` field within their respective capability declarations.

### Client Capabilities

Clients advertise extension support in the `initialize` request:
Clients advertise extension support in `_meta["io.modelcontextprotocol/clientCapabilities"]` within each request:

```json
{
"jsonrpc": "2.0",
"id": 1,
"method": "initialize",
"method": "tools/call",
"params": {
"protocolVersion": "2025-06-18",
"capabilities": {
"roots": {
"listChanged": true
},
"extensions": {
"io.modelcontextprotocol/ui": {
"mimeTypes": ["text/html;profile=mcp-app"]
"name": "get_weather",
"arguments": {
"location": "New York"
},
"_meta": {
"io.modelcontextprotocol/protocolVersion": "2025-06-18",
"io.modelcontextprotocol/clientCapabilities": {
"extensions": {
"io.modelcontextprotocol/ui": {
"mimeTypes": ["text/html;profile=mcp-app"]
}
}
},
"io.modelcontextprotocol/clientInfo": {
"name": "ExampleClient",
"version": "1.0.0"
}
},
"clientInfo": {
"name": "ExampleClient",
"version": "1.0.0"
}
}
}
```

### Server Capabilities

Servers advertise extension support in the `initialize` response:
Servers advertise extension support in the `server/discover` response:

```json
{
"jsonrpc": "2.0",
"id": 1,
"result": {
"protocolVersion": "2025-06-18",
"supportedVersions": ["2025-06-18"],
"capabilities": {
"tools": {},
"extensions": {
Expand Down
36 changes: 23 additions & 13 deletions docs/extensions/tasks/overview.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -152,19 +152,24 @@ To consume task-augmented responses, your client must:
<Steps>
<Step title="Declare support">

Include the extension in per-request capabilities:
Include the extension in its per-request capabilities:

```json
```jsonc
{
"jsonrpc": "2.0",
"id": 1,
"method": "...",
"params": {
// Other fields...
"_meta": {
// Other fields...
"io.modelcontextprotocol/clientCapabilities": {
"extensions": {
"io.modelcontextprotocol/tasks": {}
}
}
}
}
"io.modelcontextprotocol/tasks": {},
},
},
},
},
}
```

Expand Down Expand Up @@ -204,13 +209,18 @@ To return tasks from your server:

Include the extension in your `server/discover` capabilities:

```json
```jsonc
{
"capabilities": {
"extensions": {
"io.modelcontextprotocol/tasks": {}
}
}
"jsonrpc": "2.0",
"id": 1,
"result": {
// Other fields...
"capabilities": {
"extensions": {
"io.modelcontextprotocol/tasks": {},
},
},
},
}
```

Expand Down
Loading