MCP servers add executable external tools to an agent. Skills are prompt assets; MCP servers are live tool providers.
| Table | Purpose |
|---|---|
mcp_servers |
id, name, description, URL, headers, metadata |
agent_mcp_servers |
enabled assignment for agent_id or global * |
AgentRunner creates an McpClientManager when MCP stores are available. Connections are kicked off asynchronously — connectAll() is fire-and-forget so runner hydration never blocks on a slow or broken MCP server. Tools surface as each connection completes; a call against a still-connecting server returns "MCP server … is still connecting. Try again in a moment." Tool discovery is cached in the manager, and shutdown disconnects all clients.
Failure to connect one MCP server does not prevent the agent from running. Per-server status (connecting / connected / disconnected / error) is surfaced through mcp_status and the gateway UI/API.
MCP tools are namespaced:
mcp__{serverId}__{toolName}
| Tool | Purpose |
|---|---|
mcp_status |
list server connection states and discovered tools |
mcp_enable |
enable and connect a server for this agent |
mcp_disable |
disable and disconnect a server for this agent |
| Method | Path | Description |
|---|---|---|
GET |
/api/admin/mcp-servers |
list servers |
GET |
/api/admin/mcp-servers/assignments |
list assignments |
GET |
/api/admin/mcp-servers/{id} |
get one server |
POST |
/api/admin/mcp-servers |
create or upsert a server |
DELETE |
/api/admin/mcp-servers/{id} |
delete a server |
POST |
/api/admin/mcp-servers/{id}/enable |
enable for agentId or global * |
POST |
/api/admin/mcp-servers/{id}/disable |
disable for agentId or global * |
| Method | Path | Description |
|---|---|---|
GET |
/api/agents/{agentId}/mcp-servers |
list effective servers for an agent |
POST |
/api/agents/{agentId}/mcp-servers/{serverId}/enable |
enable for agent |
POST |
/api/agents/{agentId}/mcp-servers/{serverId}/disable |
disable for agent |
Agent API routes require owner or admin auth.
{
"id": "github",
"name": "GitHub",
"description": "GitHub MCP tools",
"url": "https://example.com/mcp",
"headers": {
"Authorization": "Bearer $TOKEN"
},
"metadata": {}
}Headers are persisted as JSON. Store sensitive values in deployment secrets where possible.