Skip to content

Bring-your-own MCP

Coro’s executor (@coro-ai/llm-anthropic) receives multiple MCP servers concurrently:

SourceBehaviour
In-process coro serverSCM, tracker, log, lifecycle, observability (loki_*, tempo_*), self-improvement — always present.
Plugin-provided MCPsSCM plugins expose provider-native namespaces (mcp__github__*, …) when manifests declare them.
BYO user serversDefined under mcpServers in config — edited in the dashboard.

The merge helper collectUserMcpServers() documents invariants (packages/runner/src/jobs/runner.ts): reserved IDs coro / a5 collide with internal servers and are rejected with warnings.

Open Settings → Extensions → MCP servers:

MCP servers settings

  1. Paste or edit your mcpServers JSON in the text area (live validation shows parse errors before save).
  2. Toggle Inherit Claude Code MCP servers to merge definitions from Claude Code config files (~/.claude.json, ~/.claude/settings.json).
  3. Click Save all changes.

Use Refresh under the Claude Code panel to preview inherited servers before enabling inheritance.

Defining servers

Entries are keyed by alphanumeric ids (become mcp__<id>__toolName prefixes in prompts). Supported transport shapes mirror Claude Code definitions:

stdio bridge

{
"mcpServers": {
"frigate": {
"type": "stdio",
"command": "/usr/local/bin/frigate-mcp",
"args": ["--config", "${HOME}/.frigate.toml"],
"env": {"FRIGATE_API_KEY": "{{SECRET}}"}
}
}
}

HTTP / SSE

{
"mcpServers": {
"payments": {
"type": "http",
"url": "https://mcp.payments.example.com/mcp",
"headers": { "Authorization": "Bearer ${PAYMENTS_MCP_TOKEN}" }
},
"search": {
"type": "sse",
"url": "https://search.company.net/sse"
}
}
}

Both optional arrays allowedTools / disallowedTools scope what the Claude Agent SDK exposes—use them to avoid flooding prompts with seldom-used MCP verbs.

Toggle individual servers via "enabled": false without deleting the block entirely.

Inherit Claude Code entries — inheritClaudeCodeMcps

Enable the toggle on the MCP servers settings page (writes inheritClaudeCodeMcps": true to config):

  1. Inherited servers load first (Object.assign).
  2. Explicit mcpServers from the dashboard editor override colliding IDs last.

This preserves operator control: mute a noisy Claude Code MCP by masking it locally with "enabled": false.

Security reminder: Claude Code bundles may originate from unmanaged machines — treat inheritance as convenience, not policy.

Guardrails interplay

Broad MCP surfaces widen blast radius (read_file style tools inadvertently touching secrets directories). Align with /guides/configure-guardrails/ (tool.before script checks) plus organisational reviews before enabling destructive remote MCP adapters.