Extending

MCP servers: plug in the outside world.

MCP (Model Context Protocol) is how external capabilities reach your agents — web research, SaaS integrations, retrieval systems, anything with an MCP server. It's also GoTo Agents' answer to "where's the big-corpus RAG?": attach one, don't hard-wire one.

Registering a server

Registrations are JSON, one file per server, keyed by the server's identity:

{
  "firecrawl": {
    "url": "https://mcp.firecrawl.dev/{FIRECRAWL_KEY}/sse",
    "transport": "streamable_http"
  }
}

Local stdio servers use command/args instead of url; the transport is inferred where it can be. Standard mcpServers-style JSON from other tools' documentation pastes in and is normalized automatically.

Secrets stay out of config files

API keys never live in the registration. Placeholders — {API_KEY}, ${VAR} — resolve at connect time from the placeholder store, which keeps values encrypted at rest. Share a workspace and the config travels; the secrets don't.

Scopes

Global servers are available to every workspace; workspace servers only inside their own walls. The usual scope chain applies, and workspace portability tracking flags any quiet dependency on a global server. Exposed tools surface to agents alongside built-in tools, gated by agent attachment like everything else.

Debugging

The MCP Debug page (Settings menu) shows each server's connection state and lets you test tool calls directly. Servers reconnect automatically on config changes, or manually from the workspace's MCP panel.

Beyond servers

A registration doesn't have to point at a live server at all — it can declare a capability surface whose calls route back to the caller, or a pure stub with no implementation. That's the novel half of the MCP story: Exposures & AIR.

Where it lives

  • core/mcp_manager.py — registration, normalization, scope resolution.
  • core/mcp_client_manager.py — live connections and reconnection.
  • core/mcp_tool_adapter.py — surfacing server tools to the runtime.
  • core/placeholder_manager.py — placeholder and secret resolution.