|
2 | 2 |
|
3 | 3 | ---
|
4 | 4 |
|
| 5 | +## 🌐 Federation & Routing |
| 6 | + |
| 7 | +### 🧭 Epic: Streamable HTTP Transport (Protocol Revision 2025-03-26) |
| 8 | + |
| 9 | +> **Note:** stdio and the legacy HTTP+SSE transports are already supported; this epic adds the new Streamable HTTP transport per the 2025-03-26 spec. |
| 10 | +
|
| 11 | +* **HTTP POST Messaging** |
| 12 | + **As** an MCP client |
| 13 | + **I want** to send every JSON-RPC request, notification, or batch in a separate HTTP POST to the MCP endpoint, with `Accept: application/json, text/event-stream` |
| 14 | + **So that** the server can choose between immediate JSON replies or initiating an SSE stream. |
| 15 | + |
| 16 | +* **SSE-Backed Streaming on POST** |
| 17 | + **As** a developer |
| 18 | + **I want** the server, upon receiving request-bearing POSTs, to return `Content-Type: text/event-stream` and open an SSE stream—emitting JSON-RPC responses, server-to-client requests, and notifications until complete—before closing the stream |
| 19 | + **So that** clients can consume large or real-time payloads incrementally without buffering. |
| 20 | + |
| 21 | +* **Unsolicited Server Notifications via GET** |
| 22 | + **As** a client |
| 23 | + **I want** to open an SSE stream with a GET (using `Accept: text/event-stream`) to the same MCP endpoint |
| 24 | + **So that** I can receive unsolicited server-to-client messages independently of POST calls. |
| 25 | + |
| 26 | +* **Session Management & Resumability** |
| 27 | + **As** an operator |
| 28 | + **I want** the server to issue a secure `Mcp-Session-Id` on Initialize, require it on subsequent calls (400 if missing), allow DELETE to terminate, and support SSE resumability via `Last-Event-ID` headers |
| 29 | + **So that** clients can manage, resume, and explicitly end long-running sessions robustly. |
| 30 | + |
| 31 | +* **Security & Compatibility** |
| 32 | + **As** a platform admin |
| 33 | + **I want** to validate `Origin` headers, bind to localhost by default, and enforce authentication against DNS rebinding—while optionally preserving the legacy HTTP+SSE endpoints for backward compatibility with 2024-11-05 clients |
| 34 | + **So that** we uphold security best practices and maintain dual-transport support. |
| 35 | + |
| 36 | +--- |
| 37 | + |
| 38 | +## 🌐 Federation & Routing |
| 39 | + |
| 40 | +### 🧭 Epic: A2A Transport Support |
| 41 | + |
| 42 | +Enable full-duplex, application-to-application (A2A) integration so that virtual servers and gateways can speak A2A natively. |
| 43 | + |
| 44 | +* **A2A Gateway Registration** |
| 45 | + **As** a platform admin |
| 46 | + **I want** to register A2A-enabled servers as gateways (in addition to HTTP/SSE/WS) |
| 47 | + **So that** I can federate A2A backends alongside standard MCP peers. |
| 48 | + |
| 49 | +* **A2A Tool Invocation** |
| 50 | + **As** a developer |
| 51 | + **I want** to call A2A servers as tools via the A2A protocol |
| 52 | + **So that** A2A-native services appear in my tool catalog and handle messages over A2A transports. |
| 53 | + |
| 54 | +* **Expose Virtual Servers via A2A** |
| 55 | + **As** an operator |
| 56 | + **I want** to expose virtual servers (i.e. REST-wrapped MCP servers) over the A2A transport |
| 57 | + **So that** clients that only support A2A can invoke those servers transparently. |
| 58 | + |
| 59 | +--- |
| 60 | + |
| 61 | +## ⚙️ Lifecycle & Management |
| 62 | + |
| 63 | +### 🧭 Epic: Virtual Server Protocol Version Selection |
| 64 | + |
| 65 | +Allow choosing which MCP protocol version each virtual server uses. |
| 66 | + |
| 67 | +* **Per-Server Protocol Version** |
| 68 | + **As** a platform admin |
| 69 | + **I want** to specify the MCP protocol version (e.g. 2025-03-26 or earlier) on each virtual server |
| 70 | + **So that** clients requiring legacy behavior can continue to work without affecting others. |
| 71 | + |
| 72 | +* **Protocol Compatibility Testing** |
| 73 | + **As** a developer |
| 74 | + **I want** to validate a virtual server's behavior against multiple protocol versions in the Admin UI |
| 75 | + **So that** I can catch breaking changes before rolling out new servers. |
| 76 | + |
| 77 | +--- |
| 78 | + |
5 | 79 | ## 🔐 Authentication & Identity
|
6 | 80 |
|
7 | 81 | ### 🧭 [#87 Epic: JWT Token Catalog with Per-User Expiry and Revocation](https://github.com/IBM/mcp-context-forge/issues/87)
|
|
0 commit comments