SEP-2433: Transfer Descriptors — Out-of-Band Data Transfer Negotiation#2433
Open
bhanquier wants to merge 6 commits intomodelcontextprotocol:mainfrom
Open
SEP-2433: Transfer Descriptors — Out-of-Band Data Transfer Negotiation#2433bhanquier wants to merge 6 commits intomodelcontextprotocol:mainfrom
bhanquier wants to merge 6 commits intomodelcontextprotocol:mainfrom
Conversation
bhanquier
added a commit
to bhanquier/tomcp
that referenced
this pull request
Mar 22, 2026
MCP as negotiation layer for data transfer, not the pipe itself. Packages: - @tomcp/types: shared Zod schemas and TypeScript types - @tomcp/server: buildDescriptor(), tomcpResult(), registerToMCPTools() - @tomcp/client: executeTransfer(), handleDescriptor(), LLM providers Features: - Level 1: structured descriptor routing (http, https, fs) - Level 2: LLM generates transfer code from protocol description - Multi-LLM: Gemini 2.5 Flash + Claude Sonnet + bring-your-own - Retry with tier escalation (high → mid → full) - Demo: 3 scenarios pass end-to-end (paginated API, binary codec, SSE) SEP-2433: modelcontextprotocol/modelcontextprotocol#2433 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Table alignment, blank lines before lists. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Run `npm run generate:seps` to produce the required .mdx file and fix table/list formatting issues caught by CI. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
The SEP previously described two levels. The implementation has three: - Level 1: native handler (0 tokens) - Level 1.5: cached code from prior Level 2 (0 tokens after first run) - Level 2: LLM generates code (one-time cost, then cached) Added: - Level 1.5 flow diagram and specification (§3.2) - Updated Abstract to describe three levels - Updated Rationale (§Why Three Levels) with cost curve - Replaced "Descriptor caching" open question with specific cache invalidation and cross-agent sharing questions Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
777544a to
96eaba9
Compare
…ead) When servers offer multiple protocol candidates, they MUST rank by: 1. Security: encrypted over unencrypted, built-in integrity, scoped creds 2. Efficiency: match protocol to data pattern (streaming, P2P, bulk) 3. Overhead: binary over text, compressed, Level 1 > 1.5 > 2 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Add 'collaborate' as 4th transfer mode - Add collaborate config schema (session_id, role, intent, participants, sync_protocol, blackboard) - Add Section 7: Collaborative Transfers with flow diagram and 5 use cases - Add collaborative mode security risks (session hijacking, poisoned contributions, participant enumeration) - Add 4 collaboration-related open questions (7-10) - Reference implementation: @tomcp/collab npm package Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
This SEP proposes Transfer Descriptors, a structured mechanism for MCP servers to negotiate out-of-band data transfers instead of passing large payloads inline through JSON-RPC.
The core idea: MCP remains the control plane (discovery, negotiation) and delegates actual data transfer to the optimal channel (HTTP, S3, WebSocket, BitTorrent, filesystem, etc.) via a structured Transfer Descriptor.
Three Levels
After a single Level 2 invocation, all subsequent transfers with the same protocol cost 0 tokens.
Analogy
SDP in WebRTC: SDP negotiates codecs and transport, media flows peer-to-peer. Transfer Descriptors do the same for agent data transfer.
Motivation
Key Features
Protocol Selection Hierarchy
When offering multiple protocols, servers rank by strict priority:
Protocol Marketplace
A registry where protocol descriptions are published, versioned, and discovered by agents. Ships with built-in descriptions for HTTP, SSE, WebSocket, S3 presigned, MQTT, WebRTC DataChannel, WebTorrent/BitTorrent v2.
Use Cases
Reference Implementation
A working PoC with 5 npm packages (types, server, client, CLI, proxy) + VoMCP extension (voice, voice-server). Three demo scenarios validate Level 2 with protocols the client has never seen:
PoC: transfer-over-mcp
Seeking Sponsor
Looking for a sponsor among the Core Maintainers to shepherd this proposal.
Discussion: #2437