Replies: 1 comment
|
Use an explicit application-level handle instead:
That design survives reconnects, multiple iframes, multiple MCP transports, horizontal scaling, and resumed UI state. It also avoids treating a transport identifier as an authorization capability. This is now the protocol's explicit direction: the 2026-07-28 revision removes |
Uh oh!
There was an error while loading. Please reload this page.
Summary
initializeis being called multiple times within a single conversation, resulting in multipleMcp-Session-Idvalues. My server relies onMcp-Session-Idto link requests together (per the spec), and this was working ~3 days ago — but something changed and now it's broken.What I'm seeing
sequenceDiagram participant Host as Host (Claude Desktop) participant Server as MCP Server Note over Host,Server: Before conversation starts Host->>Server: POST initialize Server-->>Host: Mcp-Session-Id: aaa-111 Host->>Server: POST resources/read<br/>Mcp-Session-Id: aaa-111 Server-->>Host: HTML (app UI) Host->>Server: POST tools/call (discover_run)<br/>Mcp-Session-Id: aaa-111 Server-->>Host: { runId: null } (no run yet, expected) Note over Host,Server: User types prompt... Note over Host,Server: Second initialize — unexpected! Host->>Server: POST initialize Server-->>Host: Mcp-Session-Id: bbb-222 Host->>Server: POST tools/call (run_web_automation)<br/>Mcp-Session-Id: bbb-222 Note over Server: Stores run under bbb-222 ✅ Host->>Server: POST tools/call (discover_run)<br/>Mcp-Session-Id: aaa-111 Note over Server: Looks up aaa-111 → null ❌<br/>(run is under bbb-222)My server stores a session→run mapping on
run_web_automation, then the MCP App iframe callsdiscover_runto find that run. Becausediscover_runstill uses the first session (aaa-111) but the run was stored under the second session (bbb-222), the lookup fails and the app can't show live status/screenshots.What I'd expect
One
initializeper conversation → oneMcp-Session-Idshared across model and app tool calls.Happy to share server logs and more details if helpful.
Environment
@modelcontextprotocol/ext-appsAll reactions