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

Without MCP

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.

With MCP

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:

AgentConfig FileFormat
Claude Code.mcp.jsonJSON with mcpServers
IBM Bob 2.bob/mcp.jsonJSON
IBM Bob 1.bob/mcp.jsonJSON
Gemini CLI.gemini/settings.jsonJSON
OpenAI Codex CLI.codex/config.tomlTOML under mcp_servers
GitHub Copilot CLI.github/mcp.jsonJSON
Pi.mcp.jsonJSON via pi-mcp-adapter with directTools allowlists
Qwen Code.qwen/settings.jsonJSON
OpenCodeopencode.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:

PropertyCurrent Value
Camel MCP version4.21.0
Camel Main default4.21.0
Camel Spring Boot4.21.0
Camel Quarkus4.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