MCP Servers

Connect external tools and APIs to your agent via the Model Context Protocol. The agent discovers each server's tools automatically and decides when to call them — no per-tool wiring in your application.

What MCP gives you

Model Context Protocol is a standard for exposing tools to LLMs. Once you point an agent at an MCP server, the agent sees its tool catalogue and can invoke tools mid-conversation — look up an order, fetch a product, file a ticket, search a database. The LLM decides; the platform executes; the result feeds back into the reply. All in a single /v1/chat call.

Transports

3

Auth modes

Bearer · API key · Basic

Per-request rounds

8 (default)

Per-agent servers

Plan-dependent

What you see

Agent → MCP
MCP · Order Status AgentSearch servers+ Add MCP Server
ServerTransportConnectionToolsEnabled
orders-apiHTTPConnected · 142ms5On
catalog-searchSSEConnected · 89ms3On
filesystemstdio (local)Connected · 12ms8On
legacy-crmHTTPAuth failed · 401Off
4 servers · 16 tools availableRe-test connections

Pick a transport

  • stdio (local process)Spawns an MCP server as a local subprocess on the platform's runner and talks to it over stdin/stdout. Best for first-party tools that ship as a CLI binary — filesystem, shell, git wrappers. Requires command + args + optional env.
  • SSE (Server-Sent Events)Connects to a remote HTTP endpoint that streams events. Best for legacy MCP servers or when you want the server lifetime decoupled from request lifetime. Requires a URL like https://mcp.example.com/sse and optional headers.
  • HTTP (streamable)The newer, recommended remote transport. A single request/response endpoint that supports chunked streaming. Best for production deployments — easier to host, friendlier to firewalls. Requires a URL like https://mcp.example.com/mcp.

Add a server

Agent → MCP → + Add MCP Server
New MCP serverCancelAdd server
Identity

Name

filesystem

Transport

stdio — Local process

Enabled

On
stdio settings

Command

npx

Arguments

-y, @modelcontextprotocol/server-filesystem, /tmp

Environment

API_KEY=abc123 HOME=/tmp
HTTP / SSE settings (shown when transport ≠ stdio)

URL

https://mcp.example.com/mcp

Headers

X-Workspace-Id=ws_abc X-Version=2

Auth scheme

Bearer · API key · Basic · None

Bearer token

sk-…

API key header

X-Api-Key
Test connectionSave
  • NameShort identifier shown in the agent's tools list and in Tracing. Make it human (orders-api, not srv-7). Unique per agent.
  • TransportPicks which connection mode to use. Switching transport reveals/hides the relevant fields below.
  • Command + Arguments (stdio)The binary to spawn and its args. npx is the most common command for first-party@modelcontextprotocol/server-* packages.
  • Environment (stdio)One KEY=value per line. Injected into the spawned process. Use this for provider keys the local server needs — never put secrets in Arguments where they'd show up in process listings.
  • URL (sse / http)Fully-qualified endpoint. SSE wants the streaming path (usually /sse); HTTP wants the MCP root (usually /mcp).
  • Headers (sse / http)Custom request headers, one Header-Name=value per line. Useful for tenant scoping, version pinning, or upstream gateway routing.
  • Auth schemeBearer sends Authorization: Bearer <token>; API key sends a custom header (you name it); Basic sends username + password as RFC 7617; None sends nothing.
  • Test connectionHits the server, lists its tools, and shows the round-trip latency. Catch misconfig before saving.

Step-by-step — connect a remote HTTP server

  1. 1

    Get the MCP endpoint URL from your server

    Most hosted MCP servers expose /mcp as the streamable endpoint and /sse as the SSE fallback. Use the one your server documents.
  2. 2

    Open Agent → MCP → + Add MCP Server

    Set Name, pick HTTP — Streamable HTTP, paste the URL.
  3. 3

    Pick the auth scheme

    Bearer + token is the most common. Paste the token into the password-style field — the value is encrypted at rest and never returned in API responses.
  4. 4

    Click Test connection

    Wait for the green status + tool count. If it fails, the error shows which step (DNS, TLS, auth, or MCP handshake) failed.
  5. 5

    Save and verify in Playground

    Open Playground and ask a question that should trigger one of the server's tools. The tool inspector shows what fired.

Step-by-step — connect a local stdio server

  1. 1

    Pick a published MCP server package

    @modelcontextprotocol/server-filesystem is the canonical "hello world". Many others live under the same scope.
  2. 2

    Set Command + Arguments

    Command: npx and Arguments: -y, @modelcontextprotocol/server-filesystem, /tmp. The directory tells the server which folder it's allowed to read.
  3. 3

    Add any env vars

    For server packages that need provider API keys, put them in Environment OPENAI_API_KEY=sk-… on its own line. Never inline in Arguments.
  4. 4

    Test, save, verify

    Same as above — Test connection, then verify in Playground.

Connection diagnostics

Connection diagnostics · orders-api
Diagnostics · orders-apiRe-test

DNS

OK · 18 ms

TLS

OK · 41 ms

Handshake

OK · 64 ms

Tool list

5 tools · 142 ms

Tool catalogue
ToolDescription
get_orderFetch order detail by id
get_delivery_statusCarrier + tracking number for an order
get_order_productsLine items + prices for an order
create_returnIssue a return for a shipped order
list_recent_ordersRecent orders by customer

Diagnostics break the connection into discrete steps so you can pinpoint failures. A 401 at the handshake step is auth; a timeout at DNS is a domain typo or a private DNS issue; a slow tool list (>2s) usually means the server is doing heavy work on startup.

How the agent uses MCP tools

Each request, the platform builds the tool catalogue from every enabled MCP server attached to the agent and gives it to the LLM. When the LLM asks to call a tool, the platform routes the call to the right server, captures the result, and feeds it back to the LLM. This loop runs up to max_tool_rounds (default 8) before the final reply is returned.

The full sequence — which tool was called, the input the model sent, the output the tool returned, per-step latency — is visible in Tracing. That's the right place to debug "why did/didn't the agent call my tool?".

json
// Response shape when a tool fires
{
  "conversation_id": "conv-…",
  "message": { "role": "assistant", "content": "Order ORD-1234 ships Friday via FedEx." },
  "tool_calls": [
    {
      "name": "get_order",
      "input": { "order_id": "ORD-1234" },
      "output": "{\"status\":\"shipped\",\"carrier\":\"FedEx\",\"eta\":\"2026-04-07\"}"
    }
  ]
}

Gotchas

  • Tool descriptions matter. The LLM picks tools based on their description text. Vague descriptions like "does stuff" mean the agent rarely uses the tool. Be specific about what it does and when to call it.
  • Auth secrets are encrypted at rest. Bearer tokens, API keys, basic passwords — all stored encrypted, only decrypted server-side at the moment of an MCP call, and never returned in API responses.
  • Don't put secrets in stdio Arguments. Arguments show up in process listings on the host. Use Environment instead, which is injected directly into the spawned process.
  • Max tool rounds caps cost. If your agent loops calling tools without converging, the platform stops at 8 rounds by default and returns whatever it has. Raise the cap in agent advanced settings for genuinely complex flows; lower it for simple lookups.
  • Disabled servers are excluded entirely. Flip Enabled off and the agent stops seeing the tools on the next request. Useful for staging vs production cutovers without deleting the server config.
  • Cold local servers add latency. stdio servers spawn fresh on first use after an idle period. If you see a 1-2s extra delay on first call after a quiet stretch, that's the cold start — subsequent calls are warm.
  • SSE keep-alives can be blocked by proxies. If you're behind a corporate proxy that buffers responses, prefer the streamable HTTP transport — it's a single request/response and survives buffering proxies.

Build your own MCP server

Almost any internal API can become an MCP server by wrapping it with the official MCP SDK (TypeScript or Python). The pattern: expose a list of tools, describe each one in plain English, translate calls into your existing API. Once it's up, every agent in your workspace can consume it.