|
| 1 | +--- |
| 2 | +title: "Apache Camel Meets MCP: Securely Exposing Your Enterprise Routes as MCP Tools with Wanaku" |
| 3 | +date: 2025-10-22 |
| 4 | +draft: false |
| 5 | +authors: [ orpiske ] |
| 6 | +categories: ["Camel", "AI"] |
| 7 | +preview: "Apache Camel Meets MCP: Securely Exposing Your Enterprise Routes as MCP Tools with Wanaku" |
| 8 | +--- |
| 9 | + |
| 10 | +The biggest challenge for enterprises in the rapidly evolving world of Generative AI isn't just building "smarter" LLMs or agents — it's securely connecting that AI to the decades of business logic and data locked away in enterprise systems. How do you let an AI agent interact with your Salesforce data, your Kafka topics, or your internal databases without rewriting everything or creating a massive security hole? |
| 11 | + |
| 12 | +It turns out the answer may already be running in your organization. |
| 13 | + |
| 14 | +If you're using Apache Camel, you already have the most powerful, flexible, and comprehensive integration toolset on the planet. With its 300+ components, you've already built the bridges to your most critical systems. |
| 15 | + |
| 16 | +Today, I am excited to show you how to connect those battle-tested Camel routes directly to AI agents using [Wanaku](https://wanaku.ai) and the [Model Context Protocol (MCP)](https://modelcontextprotocol.io/docs/getting-started/intro). |
| 17 | + |
| 18 | +## What is Wanaku? |
| 19 | + |
| 20 | +Before we dive in, let's briefly introduce the new player. [Wanaku](https://wanaku.ai) is an open source integration service designed to securely connect AI agents with enterprise systems. |
| 21 | +At its core, it's an MCP Router—a central, secure gateway that manages and governs how AI agents access specific "Tools" (functions) and "Resources" (data). |
| 22 | + |
| 23 | +It acts as a proxy, filtering and securing the capabilities you want to expose to your LLMs. And thanks to its new [Camel Integration Capability](https://wanaku.ai/docs/camel-integration-capability/), Apache Camel is now a first-class citizen in this new AI-driven world. |
| 24 | + |
| 25 | +## The Magic: From Camel Route to AI Tool |
| 26 | + |
| 27 | +The new capability allows you to take a standard Apache Camel route and, with a simple mapping file, expose it as a native MCP Tool that any compliant AI agent can use. |
| 28 | + |
| 29 | +Let's walk through an example: promoting an employee. |
| 30 | + |
| 31 | +### Step 1: Your Existing Apache Camel Route |
| 32 | + |
| 33 | +First, imagine you have a standard Camel route definition written in YAML. This one defines a few internal endpoints for handling employee promotions. |
| 34 | + |
| 35 | +```yaml |
| 36 | +- route: |
| 37 | + id: route-3103 |
| 38 | + from: |
| 39 | + id: from-4035 |
| 40 | + uri: direct |
| 41 | + parameters: |
| 42 | + name: initiate-promotion |
| 43 | + steps: |
| 44 | + - log: |
| 45 | + id: log-2526 |
| 46 | + message: Initiating promotion process for employee ${header.EMPLOYEE} |
| 47 | + - setBody: |
| 48 | + simple: |
| 49 | + expression: Promotion process for employee ${header.EMPLOYEE} has started. |
| 50 | +- route: |
| 51 | + id: route-3104 |
| 52 | + from: |
| 53 | + id: from-4035-1797 |
| 54 | + uri: direct |
| 55 | + parameters: |
| 56 | + name: confirm-promotion |
| 57 | + # ... steps to confirm ... |
| 58 | +- route: |
| 59 | + id: route-3105 |
| 60 | + from: |
| 61 | + id: from-9762 |
| 62 | + uri: file |
| 63 | + parameters: |
| 64 | + directoryName: /.../promote-employee |
| 65 | + fileName: employee-history.txt |
| 66 | + # ... steps to load file ... |
| 67 | +``` |
| 68 | + |
| 69 | +This is pure, standard Apache Camel. We have two `direct` endpoints for initiating and confirming a promotion and a `file` endpoint for retrieving a resource. Notice that the first route expects a header named `EMPLOYEE`. |
| 70 | + |
| 71 | +### Step 2: The Wanaku "Rules" Mapping |
| 72 | + |
| 73 | +Now, here's the bridge. We create a separate Wanaku rules file. This file declares our MCP Tools and maps them directly to our Camel routes. |
| 74 | + |
| 75 | +```yaml |
| 76 | +mcp: |
| 77 | + tools: |
| 78 | + - initiate-employee-promotion: |
| 79 | + route: |
| 80 | + id: "route-3103" |
| 81 | + description: "Initiate the promotion process for an employee" |
| 82 | + properties: |
| 83 | + - name: employee |
| 84 | + type: string |
| 85 | + description: The employee to confirm the promotion |
| 86 | + required: true |
| 87 | + mapping: |
| 88 | + type: header |
| 89 | + name: EMPLOYEE |
| 90 | + - confirm-employee-promotion: |
| 91 | + route: |
| 92 | + id: "route-3104" |
| 93 | + # ... other properties ... |
| 94 | + resources: |
| 95 | + - employee-performance-history: |
| 96 | + route: |
| 97 | + id: "route-3105" |
| 98 | + description: "Obtain the employee performance history" |
| 99 | +``` |
| 100 | +
|
| 101 | +Look at what's happening here. We're defining an MCP Tool named `initiate-employee-promotion`. |
| 102 | + |
| 103 | +1. We give it a human-readable `description` for the AI. |
| 104 | +2. We link it directly to our Camel `route-3103`. |
| 105 | +3. We define an input property `employee` for the AI. |
| 106 | +4. Crucially, we use the `mapping` block to tell Wanaku: "Take the AI's `employee` argument and inject it as a Camel header named `EMPLOYEE`". |
| 107 | + |
| 108 | +We do the same for the `employee-performance-history`, mapping it as an MCP Resource to our `file`-based route (`route-3105`). |
| 109 | + |
| 110 | +### Step 3: The Result |
| 111 | + |
| 112 | +When Wanaku loads these two files, the following happens automagically: |
| 113 | + |
| 114 | +1. An AI agent connects to Wanaku sees a new tool available: `initiate-employee-promotion`, which takes one argument: `employee`. |
| 115 | +2. The agent decides to use it: "Please initiate the promotion for 'Jane Doe'." |
| 116 | +3. Wanaku receives this request, validates it, and triggers your `route-3103` in Apache Camel. |
| 117 | +4. It injects "Jane Doe" into the `EMPLOYEE` message header. |
| 118 | +5. Your Camel route runs exactly as it always has, logging the message and returning a confirmation. |
| 119 | +6. Wanaku passes this response back to the AI. |
| 120 | + |
| 121 | +Your enterprise-grade Camel route is now an AI tool, and you didn't have to write a single line of new integration code. |
| 122 | + |
| 123 | +## From 300+ Components to 300+ AI Tools |
| 124 | + |
| 125 | +This example is simple, but now think bigger. That `uri` in your Camel route doesn't have to be `direct` or `file`. It can be: |
| 126 | + |
| 127 | +* `kafka:my-topic` |
| 128 | +* `salesforce:getSObject` |
| 129 | +* `sql:select * from ...` |
| 130 | +* `jms:queue:my-queue` |
| 131 | +* `aws2-s3:my-bucket` |
| 132 | + |
| 133 | +Anything you can do in Apache Camel, you can now securely expose to an AI agent. This opens up a new frontier for integration. You can even visually design your routes in a tool like Kaoto or Camel Karavan, export the YAML, add the Wanaku rules file, and instantly |
| 134 | +create a new AI-powered tool. |
| 135 | + |
| 136 | +### Secure by Default |
| 137 | + |
| 138 | +The best part? This isn't the Wild West. Wanaku is built for the enterprise. It provides a full MCP Authentication flow, including support for OIDC. This means you can use your existing identity provider (like Keycloak) to define exactly which agents, users, or applications are allowed to access which tools. |
| 139 | + |
| 140 | +You have fine-grained control, ensuring that only an "HR-Admin" agent can run the initiate-employee-promotion tool, while a "Public-Chatbot" agent cannot. |
| 141 | + |
| 142 | +### Conclusion |
| 143 | + |
| 144 | +Generative AI is a powerful new interface, but its true value is unlocked when it can interact with the systems that run your business. With Apache Camel and Wanaku, you don't have to rebuild your integrations for the AI era. You can leverage the powerful, reliable, and secure routes you've already perfected. |
| 145 | + |
| 146 | +This is the ultimate bridge between established enterprise integration and the future of AI. |
| 147 | + |
| 148 | +Ready to give your Camel routes AI superpowers? Check out the Wanaku documentation to get started: https://wanaku.ai/docs/ |
0 commit comments