WebTransport binding for the Model Context Protocol.
MCP-Flow eliminates head-of-line blocking in MCP by leveraging QUIC streams and datagrams for parallel, mixed-reliability communication.
| Traditional MCP | MCP-Flow |
|---|---|
| Single stream blocks all messages | Parallel streams for concurrent operations |
| Large responses freeze the connection | Bulk data flows on dedicated Execution Streams |
| No progress updates during transfers | Real-time datagrams for progress, audio, logs |
# Build everything
make build
# Terminal 1: Start a server
make run-go
# Terminal 2: Run the test client
./bin/mcp-flow-clientschema/0.1/
├── schema.ts # TypeScript type definitions
├── schema.json # JSON Schema for validation
└── IMPLEMENTATION.md # Wire formats, state machine, examples
examples/
├── go/ # Go server (quic-go)
├── python/ # Python server (aioquic)
├── typescript/ # TypeScript server (Deno)
└── client/ # Go test client
- No head-of-line blocking — Large responses stream independently
- Mixed reliability — Datagrams for progress/audio, streams for data
- Encoding negotiation — JSON or CBOR, negotiated at connection time
- Backward compatible — Standard MCP JSON-RPC messages, new transport
| Document | Description |
|---|---|
| Implementation Guide | Wire formats, state machine, error codes |
| Schema Reference | Type definitions and constants |
| Examples README | Running the reference servers |
| Contributing | How to contribute |
Version 0.1 — Reference implementations demonstrate the core Control Stream protocol. Execution Streams and Datagrams are specified but not yet implemented in examples.
