ruflo/docs/adr/ADR-034-OPTIONAL-MCP-BACKENDS.md
Status: Accepted Date: 2026-03-05 Context: chat-ui-mcp MCP Bridge
ADR-033 added ruvector (61 tools) and ruflo (215 tools) as default MCP backends. Users also want access to additional AI agent capabilities:
These require their own API keys and have different resource profiles, so they should be opt-in rather than default.
Add three optional MCP backends that can be enabled via environment variables. Unlike ruvector/ruflo (enabled by default), these are disabled by default and require explicit API keys.
| Backend | Env Toggle | API Key Required | Command | Default |
|---|---|---|---|---|
| ruvector | ENABLE_RUVECTOR | None | npx ruvector mcp start | enabled |
| ruflo | ENABLE_RUFLO | None | npx ruflo mcp start | enabled |
| Claude Code | ENABLE_CLAUDE_CODE | ANTHROPIC_API_KEY | claude mcp serve | disabled |
| Gemini MCP | ENABLE_GEMINI_MCP | GOOGLE_API_KEY | npx gemini-mcp-server | disabled |
| Codex | ENABLE_CODEX | OPENAI_API_KEY | npx @openai/codex mcp serve | disabled |
All backends use the same StdioMcpClient from ADR-033. Tools are namespaced by backend name:
ruvector__hooks_route → ruvector MCP
ruflo__agent_spawn → ruflo MCP
claude__Read → Claude Code MCP
gemini__chat → Gemini MCP
codex__execute → Codex MCP
┌───────────────────────────────────────────────────────┐
│ MCP Bridge (/mcp) │
│ │
│ Built-in: search, web_research, system_guide │
│ │
│ Default backends (always-on): │
│ ┌─────────────┐ ┌──────────────┐ │
│ │ ruvector(61)│ │ ruflo (215) │ │
│ └─────────────┘ └──────────────┘ │
│ │
│ Optional backends (API key required): │
│ ┌──────────────┐ ┌───────────┐ ┌───────────────┐ │
│ │ Claude Code │ │ Gemini │ │ OpenAI Codex │ │
│ │ (opt-in) │ │ (opt-in) │ │ (opt-in) │ │
│ └──────────────┘ └───────────┘ └───────────────┘ │
└───────────────────────────────────────────────────────┘
# .env file
ENABLE_CLAUDE_CODE=true
ANTHROPIC_API_KEY=sk-ant-...
ENABLE_GEMINI_MCP=true
GOOGLE_API_KEY=AIzaSy... # already set for Gemini models
ENABLE_CODEX=true
OPENAI_API_KEY=sk-... # already set for OpenAI models
| Backend | Memory | CPU | Startup Time |
|---|---|---|---|
| ruvector | ~30MB | Low | ~3s |
| ruflo | ~50MB | Low | ~5s |
| Claude Code | ~100MB | Medium | ~5s |
| Gemini MCP | ~40MB | Low | ~4s |
| Codex | ~80MB | Medium | ~5s |
With all 5 backends enabled, the bridge container needs ~800MB memory.
/mcp endpoint — no client-side config changes@anthropic-ai/claude-code installed (large package)