Skip to main content
View source

MCP Client

View as Markdown

A RocketRide tool node that connects to an external Model Context Protocol server and exposes its tools to AI agents.

What it does

Connects to an MCP server over one of three transports (STDIO (local subprocess), Streamable HTTP, or legacy HTTP+SSE), performs the MCP initialize handshake, discovers the server's tools via tools/list when the pipeline starts, and exposes them to agent nodes. Agents then discover and invoke these tools during their reasoning loop; each call is forwarded to the server as tools/call and the raw MCP result is returned.

This node has no pipeline lanes: it is a control-plane tool node, connected to agents via the tools invoke channel.

Tools are namespaced as serverName.toolName (e.g. mcp.search_docs), where serverName is set in configuration. Tools are discovered once at pipeline startup and cached; a server that adds tools later requires a pipeline restart to pick them up.

The implementation is pure Python standard library (subprocess, urllib, JSON-RPC 2.0), no MCP SDK dependency and no extra packages to install. Each request has a 20-second timeout.


Configuration

FieldTypeDescription
serverNamestringDefault "mcp". Namespace prefix for tools: . (example: local.echo)
transportstringDefault "streamable-http". How to connect to the MCP server
commandLinestringDefault "python -m rocketride_mcp". Command line to launch MCP server (stdio transport). Example: python -m rocketride_mcp
endpointstringDefault empty. MCP Streamable HTTP endpoint URL. Example: http(s)://host:port/mcp
sse_endpointstringDefault empty. Legacy MCP SSE URL (old transport). Example: http://127.0.0.1:8000/sse
headersobjectDefault {}. Extra HTTP headers for streamable-http/sse transports
bearerstringDefault empty. Optional Authorization bearer token

STDIO transport

Launches a local subprocess as the MCP server and speaks JSON-RPC over its stdin/stdout. The subprocess inherits the engine's environment (with PYTHONUNBUFFERED=1 set).

FieldType / DefaultDescription
commandLinestring, default python -m rocketride_mcpCommand line to launch the MCP server. Parsed with shell-style quoting.

Older configs that used separate command + args fields are still accepted for backwards compatibility.

Streamable HTTP transport

Connects to a modern Streamable HTTP MCP endpoint (spec 2025-03-26 transport). Handles both plain-JSON and SSE-streamed responses, tracks the Mcp-Session-Id returned by the server, and sends a best-effort DELETE to terminate the session when the pipeline stops.

FieldType / DefaultDescription
endpointstring, default emptyMCP Streamable HTTP endpoint URL. Example: http(s)://host:port/mcp
headersobject, default {}Extra HTTP headers
bearerstring, optional, secureOptional Authorization bearer token

Legacy HTTP+SSE transport

Connects to an older two-channel MCP server: a long-lived SSE GET stream for responses (read on a background thread) plus an endpoint event that supplies the session-specific POST URL for requests.

FieldType / DefaultDescription
sse_endpointstring, default emptyLegacy MCP SSE URL. Example: http://127.0.0.1:8000/sse
headersobject, default {}Extra HTTP headers
bearerstring, optional, secureOptional Authorization bearer token

Configuration is validated at save time: commandLine is required for stdio, endpoint for streamable-http, and sse_endpoint for sse.


Profiles

ProfileTransportNotes
RocketRide MCP server (stdio) (default)stdioLaunches python -m rocketride_mcp
Generic MCP server (Streamable HTTP)streamable-httpEnter endpoint URL
Generic MCP server (legacy HTTP+SSE)sseEnter SSE endpoint URL

Authentication

For the HTTP transports (streamable-http and sse), set bearer to send an Authorization: Bearer <token> header on every request. The token is stored encrypted and masked in the UI. Arbitrary additional headers (e.g. API-key headers) can be supplied via headers; a bearer value overrides any Authorization key in headers.

The STDIO transport has no authentication fields: the subprocess runs locally with the engine's environment.


Butterbase preset

services.butterbase.json in this directory defines Butterbase MCP Client, a branded preset that reuses this node's implementation (not a separate node). It pins the transport to streamable-http with endpoint https://api.butterbase.ai/mcp, namespaces tools as butterbase.<tool> (e.g. butterbase.init_app), and surfaces the bearer field as a Butterbase API key (bb_sk_..., created in the Butterbase dashboard). Prerequisite: enable Developer Mode on your Butterbase app so the agent can create and modify resources.


Notes

  • Protocol versions advertised during initialize: 2024-11-05 for STDIO, 2025-11-25 for Streamable HTTP and SSE.
  • Tool calls must use the fully namespaced server.tool form; a call addressed to a different serverName than this node's is rejected.
  • The MCP server process/connection is started in beginGlobal and shut down in endGlobal; a failed handshake or tool discovery fails pipeline startup with a warning.

Upstream docs


Schema

Butterbase MCP Client (services.butterbase.json)

FieldTypeDescriptionDefault
mcp_client.bearerstringAPI Key
Butterbase API key (bb_sk_...). Create one in the Butterbase dashboard: dashboard.butterbase.ai → API Keys. Sent as an Authorization Bearer token.
""
mcp_client.endpointstringEndpoint
Butterbase MCP Streamable HTTP endpoint. Defaults to the production server.
"https://api.butterbase.ai/mcp"
mcp_client.serverNamestringServer name
Namespace prefix for the discovered tools: . (example: butterbase.init_app).
"butterbase"

MCP Client (services.json)

FieldTypeDescriptionDefault
mcp_client.bearerstringBearer token
Optional Authorization bearer token
""
mcp_client.commandLinestringCommand line
Command line to launch MCP server (stdio transport). Example: python -m rocketride_mcp
"python -m rocketride_mcp"
mcp_client.endpointstringEndpoint
MCP Streamable HTTP endpoint URL. Example: http(s)://host:port/mcp
""
mcp_client.headersobjectHeaders
Extra HTTP headers for streamable-http/sse transports
{}
mcp_client.serverNamestringServer name
Namespace prefix for tools: . (example: local.echo)
"mcp"
mcp_client.sse_endpointstringSSE endpoint (legacy)
Legacy MCP SSE URL (old transport). Example: http://127.0.0.1:8000/sse
""
mcp_client.transportstringTransport
How to connect to the MCP server
"streamable-http"