Skip to content

Add WebSocket, Socket.IO, and MCP (HTTP) request protocols#1

Merged
mbadaz merged 8 commits into
mainfrom
feat/streaming-protocols
Jun 17, 2026
Merged

Add WebSocket, Socket.IO, and MCP (HTTP) request protocols#1
mbadaz merged 8 commits into
mainfrom
feat/streaming-protocols

Conversation

@mbadaz

@mbadaz mbadaz commented Jun 17, 2026

Copy link
Copy Markdown
Owner

Adds three new streaming/stateful request protocols plus the collection-management work that preceded them. None of these commits were on main yet, so this PR bundles all unmerged work.

Streaming protocols (WebSocket, Socket.IO, MCP)

A single multiplexed live channel underpins all three: the browser opens one WebSocket to /live, and many protocol sessions multiplex over it keyed by sessionId. The Node server owns every outbound connection, so {{variables}}, headers, auth, and the cookie jar apply just like HTTP requests. Each protocol is a driver behind a shared LiveDriver interface; an in-memory session manager enforces per-socket/global caps and a hard lifetime.

  • WebSocket — open a ws/wss connection, with a live message log, composer, and reusable saved messages.
  • Socket.IO — connect to a Socket.IO server (URL path = namespace, with a configurable engine.io handshake path, JSON auth payload, query params, and an events filter), emit named events with JSON args, and watch incoming events. Reusable saved emits.
  • MCP (HTTP) — connect to an external MCP server over Streamable HTTP (reusing headers + auth), browse its tools, fill a tool's arguments via a form generated from its JSON Schema, call it, and view the result. STDIO transport is out of scope for now.

Earlier collection-management work (also unmerged)

  • Folders inside collections, nestable to any depth (Postman-style), with their own scripts in the execution chain; Postman import preserves folder structure.
  • Drag-and-drop to move requests/folders between folders and collections.
  • Batch import of a whole folder of Postman exports.
  • Saved responses: each request keeps its last 3 responses (gitignored local cache).
  • Unsaved-changes prompt now only fires on tab close, not on navigation between requests.

Testing

  • Server: npm run typecheck, npm run build, 69 tests pass — including new integration tests that drive each protocol end-to-end through /live against in-test echo servers (ws, socket.io, and an MCP StreamableHTTPServerTransport), plus persistence round-trips.
  • Client: npm run typecheck, npm run build, 15 tests pass.
  • Boot smoke: server starts clean; /api and the existing /mcp server endpoint unaffected by the /live upgrade handling.

Note: the React editors for the streaming protocols (ConnectionEditor, McpEditor, JsonSchemaForm) have no automated coverage and were verified manually.

🤖 Generated with Claude Code

mbadaz and others added 8 commits June 17, 2026 14:11
…tion chain, import, MCP, UI, tests).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
… MCP tools, sidebar DnD, tests).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
…older menu, endpoint, MCP tool, tests).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
…tory endpoint/switcher, MCP, tests).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
…ween requests.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
…erver session manager, ws driver, sidebar/editor UI, tests).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
…ce-aware connect, editor UI, tests).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
… tool browser with JSON-Schema arg form, tests.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@mbadaz mbadaz merged commit afed727 into main Jun 17, 2026
2 checks passed
@mbadaz mbadaz deleted the feat/streaming-protocols branch June 17, 2026 22:34
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant