Camel MCP
Apache Camel catalog verification and route validation via JBang MCP
The Camel MCP server provides AI agents with real-time access to the Apache Camel component catalog — verifying that components, EIPs, data formats, and expression languages actually exist in the target Camel version before they appear in any design or code.
This is the enforcement mechanism for Iron Law 1: MCP Catalog Verification.
How It Runs
The Camel MCP is the official Apache Camel JBang MCP server (camel-jbang-mcp). camel-kit init writes the agent’s launch configuration, and the agent starts the local server when it is needed. This is an abridged shape; generated commands also include the configured MCP repositories, Camel catalog repositories, and runtime logging options:
{
"camel": {
"command": "jbang",
"args": [
"org.apache.camel:camel-jbang-mcp:{version}:runner"
]
}
}
It runs as a local process. JBang and the server may resolve and cache the MCP runner and Camel catalog Maven artifacts from the configured repositories when those artifacts are not already available locally.
Core Tool Groups
How Camel-Kit Uses It
The AI generates component names from training data:
- route:
from:
uri: "camel-superqueue:orders" # ← hallucinated
steps:
- to: "camel-fastdb:customers" # ← doesn't exist
Components may be renamed, removed, or have different options between Camel versions. Training data can be months or years outdated.
Every component is verified before it enters the design or code:
AI: User mentioned "message queue"
→ camel_catalog_component_doc(component="jms", ...) ✓ exists
→ camel_catalog_component_doc(component="amqp", ...) ✓ exists
→ camel_catalog_component_doc(component="kafka", ...) ✓ exists
AI: "Which messaging system? JMS, AMQP, or Kafka?"
If a component doesn’t exist, the AI asks for clarification instead of guessing.
Configuration
camel-kit init generates MCP configuration per agent:
| Agent | Config File | Format |
|---|---|---|
| Claude Code | .mcp.json | JSON with mcpServers |
| IBM Bob 2 | .bob/mcp.json | JSON |
| IBM Bob 1 | .bob/mcp.json | JSON |
| Gemini CLI | .gemini/settings.json | JSON |
| OpenAI Codex CLI | .codex/config.toml | TOML under mcp_servers |
| GitHub Copilot CLI | .github/mcp.json | JSON |
| Pi | .mcp.json | JSON via pi-mcp-adapter with directTools allowlists |
| Qwen Code | .qwen/settings.json | JSON |
| OpenCode | opencode.json (or the existing project file, see below) | JSON / JSONC |
All configurations point to the same JBang-launched Camel MCP server and catalog. Each target exposes that server/tool universe through its native format, filters, and approval fields, except Pi, which consumes .mcp.json through pi-mcp-adapter. Install its current pin with pi install npm:pi-mcp-adapter@2.11.0.
The Codex configuration is repository-scoped and loads only after the repository is trusted; Codex also skips any user-added project hooks until trust, and Camel-Kit generates none. It declares the exact Camel workflow tool allowlist through enabled_tools and uses default_tools_approval_mode = "prompt"; Camel-Kit does not edit global Codex configuration or relax the active sandbox.
For OpenCode, init recognises four project configuration layers — opencode.json, opencode.jsonc, .opencode/opencode.json, and .opencode/opencode.jsonc, listed from lowest to highest precedence, so .opencode/opencode.jsonc wins when several exist. Re-running init (--here --force on an initialized project) edits the existing files in place — comments, trailing commas, and newline style are kept, and a symbolic link is written through to its target — preserves unrelated root settings, permission entries, and MCP servers, removes Camel-Kit’s managed permission and mcp entries from lower-precedence layers, and writes the current definitions to the highest-precedence existing file. Every layer is validated first: if any file is not valid JSON or JSONC, is not a JSON object, has a permission or mcp member that is not an object (a bare permission value of allow, ask, or deny is accepted and expanded to a wildcard rule), is not a regular file, or is a symbolic link to a missing file, init fails before any workspace file is changed. When no layer exists, init creates opencode.json. camel-kit doctor evaluates the same layers as one effective configuration and reports each permission finding against the file that defines the rule.
Version Alignment
The server artifact follows the distribution’s Camel Main stream; version-sensitive calls select the target runtime catalog explicitly:
| Property | Current Value |
|---|---|
| Camel MCP version | 4.21.0 |
| Camel Main default | 4.21.0 |
| Camel Spring Boot | 4.21.0 |
| Camel Quarkus | 4.18.2 |
Every version-sensitive catalog call passes the project runtime and full platform BOM. Camel-Kit rejects a response whose echoed Camel version does not match the resolved project version.
Next Steps
- Knowledge MCP — Documentation search (hybrid semantic search)
- Architecture Overview — Four-layer architecture
- Skills System — How skills invoke MCP tools