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
| Server | Transport | Connection | Tools | Enabled |
|---|---|---|---|---|
| orders-api | HTTP | Connected · 142ms | 5 | On |
| catalog-search | SSE | Connected · 89ms | 3 | On |
| filesystem | stdio (local) | Connected · 12ms | 8 | On |
| legacy-crm | HTTP | Auth failed · 401 | — | Off |
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+ optionalenv. - 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/sseand 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
Name
Transport
Enabled
Command
Arguments
Environment
URL
Headers
Auth scheme
Bearer token
API key header
- NameShort identifier shown in the agent's tools list and in Tracing. Make it human (
orders-api, notsrv-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.
npxis the most common command for first-party@modelcontextprotocol/server-*packages. - Environment (stdio)One
KEY=valueper line. Injected into the spawned process. Use this for provider keys the local server needs — never put secrets inArgumentswhere 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=valueper line. Useful for tenant scoping, version pinning, or upstream gateway routing. - Auth scheme
BearersendsAuthorization: Bearer <token>;API keysends a custom header (you name it);Basicsends username + password as RFC 7617;Nonesends 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
Get the MCP endpoint URL from your server
Most hosted MCP servers expose/mcpas the streamable endpoint and/sseas the SSE fallback. Use the one your server documents. - 2
Open Agent → MCP → + Add MCP Server
SetName, pickHTTP — Streamable HTTP, paste the URL. - 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
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
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
Pick a published MCP server package
@modelcontextprotocol/server-filesystemis the canonical "hello world". Many others live under the same scope. - 2
Set Command + Arguments
Command: npxandArguments: -y, @modelcontextprotocol/server-filesystem, /tmp. The directory tells the server which folder it's allowed to read. - 3
Add any env vars
For server packages that need provider API keys, put them inEnvironment—OPENAI_API_KEY=sk-…on its own line. Never inline in Arguments. - 4
Test, save, verify
Same as above — Test connection, then verify in Playground.
Connection diagnostics
DNS
OK · 18 ms
TLS
OK · 41 ms
Handshake
OK · 64 ms
Tool list
5 tools · 142 ms
| Tool | Description |
|---|---|
| get_order | Fetch order detail by id |
| get_delivery_status | Carrier + tracking number for an order |
| get_order_products | Line items + prices for an order |
| create_return | Issue a return for a shipped order |
| list_recent_orders | Recent 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?".
// 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
Environmentinstead, 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
Enabledoff 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