SEP-2290: Content Negotiation Extension#2317
SEP-2290: Content Negotiation Extension#2317schlpbch wants to merge 6 commits intomodelcontextprotocol:mainfrom
Conversation
Adds the SEP entry for the Content Negotiation Extension (io.modelcontextprotocol/content-negotiation), linking to the full specification at https://github.com/schlpbch/ext-content-negotiation. Closes modelcontextprotocol#2290
Link to modelcontextprotocol/modelcontextprotocol#2317 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Add PR link to spec header (modelcontextprotocol/modelcontextprotocol#2317) - Bump version to v0.9.4 in spec and README badge - Add v0.9.4 release notes Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Run Prettier on SEP source file - Run generate:seps to produce .mdx and update docs.json
Email addresses in <addr> format are parsed as JSX tags in MDX. Use parentheses instead.
v0.9.5 — Java / Spring AI 2.0 Reference ImplementationA new reference implementation has been added for the Java ecosystem:
The repo now has worked examples for three ecosystems: TypeScript / MCP SDK, Python / FastMCP, and Java / Spring AI 2.0. Release: https://github.com/schlpbch/ext-content-negotiation/releases/tag/v0.9.5 |
v0.9.6 — Go Reference ImplementationA new reference implementation has been added for the Go ecosystem:
The repo now has worked examples for five ecosystems: TypeScript / MCP SDK, Python / FastMCP, Java / Spring AI 2.0, Rust / rmcp, and Go / go-sdk. Release: https://github.com/schlpbch/ext-content-negotiation/releases/tag/v0.9.6 |
v0.9.6 — Go and C# / .NET Reference ImplementationsTwo new reference implementations have been added:
The repo now has worked examples for six ecosystems: TypeScript / MCP SDK, Python / FastMCP, Java / Spring AI 2.0, Rust / rmcp, Go / go-sdk, and C# / .NET. Release: https://github.com/schlpbch/ext-content-negotiation/releases/tag/v0.9.6 |
v0.9.6 (updated) — Kotlin Reference Implementation added
The repo now has worked examples for seven ecosystems: TypeScript / MCP SDK, Python / FastMCP, Java / Spring AI 2.0, Rust / rmcp, Go / go-sdk, C# / .NET, and Kotlin / kotlin-sdk. Release: https://github.com/schlpbch/ext-content-negotiation/releases/tag/v0.9.6 |
v0.9.6 (updated) — Swift Reference Implementation added
The repo now has worked examples for eight ecosystems: TypeScript / MCP SDK, Python / FastMCP, Java / Spring AI 2.0, Rust / rmcp, Go / go-sdk, C# / .NET, Kotlin / kotlin-sdk, and Swift / swift-sdk. Release: https://github.com/schlpbch/ext-content-negotiation/releases/tag/v0.9.6 |
PR description updatedThe PR description has been updated to reflect the current state of the proposal:
|
Summary
This PR adds the SEP entry for SEP-2290: Content Negotiation Extension, an Extensions Track proposal that introduces transparent content negotiation for MCP.
Abstract
Not all MCP clients are the same, clients differ in what they need from the server and how they can consume it.
Clients also have different context window sizes or latency requirements, which may necessitate varying levels of detail or verbosity in responses. For example, a client with a small context window may prefer concise
summaries, while one with a larger window can handle more verbose explanations.
The content needed by a human consumer (e.g., an end-user interface) may prioritize readability and conciseness, while an agent (e.g., a downstream tool or another model) may require structured data, detailed reasoning traces, or specific formats.
Especially locally running agents have limited compute resources and thus prefer more compact responses that minimize unnecessary information. E.g., an agent running an mobile device (e.g. on Gemini Nano) may want to avoid large reasoning traces that consume bandwidth and processing power.
Real-World Use Cases
Some examples:
Key Design Principles
Impact on MCP ecosystem
This extension also helps to significantly reduce bandwidth and latency as well as significantly reduce compute requirements. All data not sent by server is bandwidth and compute saved on both sides. These also reduces electrical power consumption and thus have positive environmental impact.
Full Specification
The complete specification is maintained at:
https://github.com/schlpbch/ext-content-negotiation (v0.9.4)
Includes: feature tag registry, protocol examples, RFC 2295 mapping, security analysis, TypeScript reference implementation, and comparison with SEP-2053 Server Variants.
Reference Implementation
A FastMCP (Python) reference implementation is available at:
https://github.com/schlpbch/ext-content-negotiation/blob/master/FASTMCP_REFERENCE.md
Demonstrates
ContentNegotiationMiddleware, aFeaturesdataclass with typed convenience properties, and aget_features(ctx)helper for tool handlers — all built on FastMCP v3's middleware and session-state APIs.Current Status
Draft specification complete with:
Checklist
seps/2290-content-negotiation-extension.md