Realtime & Streaming Protocols
In addition to plain HTTP, the URL scheme determines whether a request is sent normally or switches the editor into a persistent-session mode with its own response panel.
Server-Sent Events (SSE)
No special URL scheme needed — send a request as normal (GET or otherwise) to an endpoint that responds with Content-Type: text/event-stream. Volley detects this and switches the response panel to a live-updating event log instead of a single body: each event shows its event/id/retry fields, the raw data, and the time it was received. Click Cancel (shown in place of Send while connected) to close the stream.
WebSocket
Set the request URL to ws:// or wss://. The Send button becomes Connect — click it to open a relayed WebSocket connection (proxied through Volley's local server, so there's no browser CORS/origin restriction). Once connected:
- The response panel shows a transcript of sent and received messages with timestamps.
- A composer at the bottom lets you type a message and send it over the open connection.
- The button becomes Disconnect — click it, or close the tab, to close the connection.
Headers and auth configured on the request (e.g. a Sec-WebSocket-Protocol or Authorization header) are sent with the initial handshake.
MCP (Model Context Protocol)
Volley includes a small built-in MCP client for talking to MCP servers directly from a request tab. Pick the transport from the Protocol dropdown in the URL bar:
- MCP · Streamable HTTP — enter the server's endpoint as a normal URL (e.g.
https://mcp.deepwiki.com/mcp). It's proxied server-side via the same mechanism as a normal request (no CORS issues). - MCP · stdio — the URL field becomes a command line (e.g.
npx -y @some/mcp-server). Volley spawns that command as a local child process and speaks newline-delimited JSON-RPC over its stdin/stdout.
Either way, click Connect to perform the initialize handshake (Volley sends initialize then notifications/initialized automatically). Once connected:
- The response panel shows the JSON-RPC message transcript (sent and received), plus the connected server's name/version once known.
- A composer lets you pick a method (autocompleted from common MCP methods like
tools/list,tools/call,resources/list,resources/read,prompts/list,prompts/get) and supply a JSONparamsobject, then send it as a new JSON-RPC request. Volley wraps your method/params in the full{"jsonrpc":"2.0","id":<auto>,...}envelope. - Click Disconnect, or close the tab, to end the session.
For example, after tools/list shows you a tool's name and input schema, call it with tools/call and a params object like:
{
"name": "read_wiki_contents",
"arguments": { "repoName": "owner/repo" }
}
If you've scrolled up in the transcript, new messages arrive without yanking your scroll position — a "New response ↓" banner appears until you scroll to (or click it to jump to) the bottom.
CORS handling
Volley tries a direct fetch() first; if the browser blocks it (CORS), the request is automatically retried through the local Node server, where CORS doesn't apply. SSE and Digest Auth always go through the server.