Skip to content

protocols

MCP client

Connect to Model Context Protocol servers over STDIO, Streamable HTTP or HTTP + SSE, call tools, read resources and prompts, and test tools in Cloak Proxy.

An MCP request connects Cloak Proxy to a Model Context Protocol server, the kind of server AI assistants use for tools. You see the server’s tools, resources and prompts, call any tool with JSON arguments, and watch every JSON-RPC message in both directions. Use it to build and debug your own MCP server, to check what a third-party server really does before giving it to an assistant, or to test tools in the collection runner. Saved MCP requests can also give tools to AI requests.

This page is about Cloak Proxy as an MCP client. To let Claude Code, Cursor or another assistant control Cloak Proxy itself, see MCP server.

  1. In the API client’s sidebar, click MCP. The Overview page opens.

  2. Click New MCP Server, or open From a Preset and choose a ready-made server (table below). You can also click + at the top of the sidebar.

    The request is saved in a collection named MCP Servers, created the first time, and appears in the MCP sidebar list.

  3. Set the transport and the command or URL, then press ⌘ ↩ or click Connect.

The MCP section collects every MCP server in your workspace.

  1. MCP section in the sidebar
  2. + adds a new MCP server
  3. New MCP Server
  4. From a Preset
  5. Your saved servers; click one to open it
The MCP section of the API client: an Overview page with a Connect to an MCP server card holding New MCP Server and From a Preset buttons and one saved server
Preset Command What it does
Everything (demo) npx -y @modelcontextprotocol/server-everything Every MCP feature, for trying things out.
Filesystem npx -y @modelcontextprotocol/server-filesystem ~/Documents Read and search files in a folder.
Memory npx -y @modelcontextprotocol/server-memory A knowledge-graph memory.
Fetch uvx mcp-server-fetch Fetch web pages as Markdown.

The npx presets need Node.js, and Fetch needs uv. The rest of the Overview page covers using Cloak Proxy from AI assistants and turning a collection into an MCP server.

Pick the transport from the menu at the left of the connection bar:

Transport Connection bar holds Use for
STDIO The command line that starts the server, for example npx -y @modelcontextprotocol/server-everything. Local servers that run as a process. Cloak Proxy starts the process and talks to it over standard input and output.
Streamable HTTP The server’s URL, for example https://mcp.example.com/mcp. Remote servers using the current HTTP transport (MCP 2025-03-26 and later).
HTTP + SSE The server’s SSE endpoint URL. Older remote servers using the legacy event-stream transport (MCP 2024-11-05).

{{variables}} work in the command or URL.

An STDIO MCP request before connecting.

  1. Transport: STDIO, Streamable HTTP or HTTP + SSE
  2. Command line or server URL
  3. Connect (⌘↩)
  4. Tools, Resources and Prompts, with counts
  5. Environment (STDIO) or Headers (HTTP)
  6. Use in… exports the server to other MCP clients
An MCP request with the STDIO transport and the command npx -y @modelcontextprotocol/server-everything, disconnected, with Tools, Resources, Prompts, Environment and Use in… tabs

The command line is split into words like a shell does, honoring single and double quotes, but it isn’t run through a shell: pipes, && and $VARIABLES don’t work. The first word is the program.

Apps started from the Dock get a minimal PATH, so Cloak Proxy adds the usual tool folders when it looks up the program: /opt/homebrew/bin, /usr/local/bin, ~/.local/bin, ~/.volta/bin, ~/.cargo/bin, ~/.bun/bin, ~/.deno/bin, your nvm Node.js versions, and the system folders. If the program still isn’t found, the log shows Command not found and you can type its full path instead.

The Environment tab configures the process:

Field What it does
Environment variable table Variables added to the process’s environment, on top of Cloak Proxy’s own. Values can use {{variables}}. Mark a row as secret to mask its value on screen.
Working directory (optional) The folder the process starts in. ~ is expanded. It must exist, or connecting fails with Working directory does not exist.

Lines the server writes to standard error appear in the log as stderr entries. When you disconnect, Cloak Proxy closes the server’s input, then stops the process if it doesn’t exit on its own.

For Streamable HTTP and HTTP + SSE, the tab is called Headers: a table of headers sent with every request to the server, typically Authorization: Bearer {{mcp_token}}. Values can use {{variables}}, and rows can be marked secret to mask them.

With Streamable HTTP, Cloak Proxy keeps the session id the server assigns, opens the optional event stream for server messages, and ends the session when you disconnect. MCP connections go straight to the server, not through Cloak Proxy’s listening port.

When you click Connect, Cloak Proxy starts or reaches the server, sends initialize, and then lists the server’s tools, and its resources and prompts if the server offers them. A line under the connection bar shows the server’s name and version, the protocol version you agreed on and the server’s instructions, if any.

Cloak Proxy asks for protocol version 2025-06-18 and accepts a server that answers with 2025-11-25, 2025-06-18, 2025-03-26 or 2024-11-05. Any other version fails the connection with an unsupported version error.

  1. Open Tools. The list shows each tool’s title (or name) and description.

  2. Select a tool. Its description and an Arguments editor appear. The arguments start from the tool’s input schema: defaults where the schema has them, and empty values for required fields.

  3. Edit the arguments as JSON. Warnings appear in orange below the editor when they don’t match the schema, for example a missing required field or a wrong type.

  4. Press ⌘ ⇧ ↩ or click Run Tool. The result’s text appears under the button. If the tool reports a failure, the result starts with Tool reported an error:.

Selecting a tool also saves it, with its arguments, on the request: that’s the call the collection runner and cloakctl make. Selecting the same tool again keeps the arguments you saved.

The connection stays open while you work, and switching tabs doesn’t close it. A single call waits up to 60 seconds; when the server sends progress notifications, the wait starts over with each one.

Tab What you see Action
Resources Each resource’s title (or name) and URI. Read fetches the resource and adds its contents to the log. Binary contents show as their size.
Prompts Each prompt’s title, description and arguments. Required arguments are marked with *. Get fetches the prompt with every argument set to an empty string and adds the resulting messages to the log.

The tab badges count tools, resources and prompts.

The Messages log at the bottom shows the whole conversation with the server:

Entry Meaning
Outgoing (blue) A JSON-RPC request or notification Cloak Proxy sent, such as tools/call.
Incoming (green) A response or request from the server.
Notification A notification from the server, such as a progress update or a list change.
stderr A line the STDIO server wrote to standard error.
Error / Couldn’t connect A transport or protocol failure, with the reason.

Select an entry to see its full JSON as a tree. Hide events hides notifications and stderr lines, the search field filters entries, and Clear empties the log. The log keeps the last 5,000 entries.

The Use in… tab turns this request into configuration for another MCP client. Choose the app in Add this server to, then click Copy:

App Snippet Where it goes
Claude Desktop JSON for mcpServers. Remote servers are bridged with npx mcp-remote, because Claude Desktop’s config file only starts local processes. ~/Library/Application Support/Claude/claude_desktop_config.json
Cursor JSON for mcpServers. .cursor/mcp.json in a project, or ~/.cursor/mcp.json
VS Code JSON for servers, with the transport type. .vscode/mcp.json
Claude Code A claude mcp add command with the transport, environment variables or headers. Run it in a terminal.

Variables are filled in, so the snippet contains real values. The working directory isn’t exported, because none of these formats has a field for it.

The collection runner and cloakctl run a saved MCP request in one step: connect, make one call, disconnect.

Saved on the request What the run does Body
No tool selected Calls tools/list. A JSON array of tools, each with name, description and inputSchema.
A tool and arguments Calls tools/call with the saved arguments (after filling in {{variables}}). The tool result as JSON: its content array, isError, and structuredContent when the server sends it.
Response part Value
Status 200 OK, or 500 Tool Error when the tool’s result has isError: true.
Headers Content-Type: application/json, mcp-server (the server’s name and version), mcp-protocol-version, and mcp-tool for tool calls.

A tool that fails is a response, so tests can check it. A server that can’t be started or reached, or arguments that aren’t valid JSON, is reported as an error with no response. The tool call waits up to the request timeout, 30 seconds by default.

MCP requests have no Scripts tab of their own. Put tests in the collection’s or a folder’s post-response script, and check pm.info.requestName for tests meant for one request:

Collection post-response script
if (pm.info.requestName === "Search issues tool") {
pm.test("tool succeeded", () => pm.response.to.have.status(200));
pm.test("returned text content", () => {
const result = pm.response.json();
pm.expect(result.content[0].type).to.eql("text");
pm.expect(result.content[0].text).to.include("issue");
});
}