This is an automated email from the ASF dual-hosted git repository.

davsclaus pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel-website.git


The following commit(s) were added to refs/heads/main by this push:
     new 9f6d199f blog: Add CAPI Gateway - REST-to-MCP bridging with Apache 
Camel (#1528)
9f6d199f is described below

commit 9f6d199f81912d09ab96b3df38451fe157b7b642
Author: Rodrigo Serra Coelho <[email protected]>
AuthorDate: Tue Mar 3 12:55:45 2026 +0100

    blog: Add CAPI Gateway - REST-to-MCP bridging with Apache Camel (#1528)
---
 content/blog/2026/03/CAPIGateway/featured.png | Bin 0 -> 117858 bytes
 content/blog/2026/03/CAPIGateway/index.md     |  71 ++++++++++++++++++++++++++
 2 files changed, 71 insertions(+)

diff --git a/content/blog/2026/03/CAPIGateway/featured.png 
b/content/blog/2026/03/CAPIGateway/featured.png
new file mode 100644
index 00000000..7ceba9a3
Binary files /dev/null and b/content/blog/2026/03/CAPIGateway/featured.png 
differ
diff --git a/content/blog/2026/03/CAPIGateway/index.md 
b/content/blog/2026/03/CAPIGateway/index.md
new file mode 100644
index 00000000..32fcfc52
--- /dev/null
+++ b/content/blog/2026/03/CAPIGateway/index.md
@@ -0,0 +1,71 @@
+---
+title: "Your REST APIs already speak MCP. They just don't know it yet."
+date: 2026-03-03
+authors: [rodrigoserracoelho]
+categories: ["Usecases"]
+preview: "How I built a Consul-native API Gateway on Apache Camel — and why it 
now bridges REST APIs and LLM agents via MCP."
+---
+
+Four years ago, I started writing an API Gateway. Not because I wanted to 
build a product — but because we needed more from the tools we had.
+
+I was working inside a government institution running a complex hybrid 
environment — services spread across on-premises data centers and cloud, strict 
security and compliance requirements, and a growing number of APIs that all 
needed to be managed, secured, and observed.
+
+We were using a well known API Gateway product, a capable and powerful 
platform, but for our use case, it was too heavy. The footprint was large, the 
configuration management at scale was painful, and the licensing costs kept 
growing. A simple update was always a struggle — it felt like we were fighting 
the tool instead of using it.
+
+So I did what engineers do when they're frustrated enough: I built something.
+
+## The first version was a PoC
+
+I chose Apache Camel as the foundation — it's one of the most battle-tested 
integration frameworks in the Java ecosystem, with dynamic routing capabilities 
that were exactly what I needed and an amazing, vibrant community behind it. I 
paired it with Undertow as the WebSocket and SSE gateway for its performance 
and low overhead, and HashiCorp Consul for service discovery.
+
+The core idea was simple: **services register themselves in Consul with 
metadata that tells the gateway how to route, secure, and throttle them.** No 
database. No YAML configuration files. No admin portal. Just register your 
service and the gateway picks it up automatically.
+
+That PoC became CAPI — the Camel API Gateway.
+
+The institution I was working with started using it cautiously at first. A few 
non-critical services. Then more. Then production workloads.
+
+## What CAPI looks like today
+
+Today, CAPI routes over 100 services in full production inside a hybrid 
government environment, handling more than 10 million API calls per day. The 
runtime footprint is around 120 MB — compared to the 1 GB+ we were dealing with 
before.
+
+Here's what it does:
+
+**Zero-config routing.** Services register in Consul with metadata tags — 
their context path, security requirements, protocol type, throttling limits. 
CAPI polls the catalog, creates Apache Camel routes dynamically, and removes 
them when services deregister. No restarts. No deployments.
+
+**Security built in.** OAuth2/OIDC token validation from any provider via JWKS 
endpoints. Fine-grained authorization with Open Policy Agent. Per-service 
opt-in through a single metadata flag. And because CAPI is built on Apache 
Camel's processor pipeline, adding custom validation or integration logic is 
straightforward — you're not locked into what the gateway ships with.
+
+**Full observability.** Distributed tracing via OpenTelemetry OTLP export. 
Prometheus metrics. OpenAPI spec aggregation from upstream services. All 
without touching application code.
+
+**Everything else you'd expect.** REST, WebSocket, and SSE gateway. 
Round-robin load balancing with failover. Distributed throttling via Hazelcast. 
TLS termination with dynamic truststore management — certificates can be 
rotated without restarts, which is critical in environments with strict 
certificate lifecycle policies. Helm charts for Kubernetes. Admin API for 
health, metrics, and route inspection.
+
+And recently, something new.
+
+## Turning REST APIs into MCP tools for LLM agents
+
+If you're working with LLMs, you've probably heard of MCP — the Model Context 
Protocol. It's the emerging standard for how AI agents like Claude, Cursor, and 
others discover and call external tools.
+
+The problem is: most organizations have hundreds of REST APIs, and none of 
them speak MCP. The typical advice is to build MCP Server wrappers for each 
one. That's a lot of work.
+
+CAPI now solves this differently. Its MCP Gateway turns any existing REST API 
into an MCP tool — with zero code changes on your backends.
+
+Here's how it works. You register your REST service in Consul with some 
additional metadata: the tool name, a description, and an input schema. CAPI 
reads that metadata and exposes it through a standard MCP endpoint. When an LLM 
agent calls `tools/list`, it gets back a catalog of every tool available. When 
it calls `tools/call`, CAPI translates the JSON-RPC request into a plain HTTP 
POST to your backend, wraps the response in MCP format, and sends it back.
+
+Your REST API never sees JSON-RPC. It just handles normal HTTP requests, the 
same as always.
+
+For services that already speak MCP natively, CAPI proxies them transparently 
— with load balancing, failover, and the same security policies. Both REST and 
native MCP backends are aggregated under a single `/mcp` endpoint.
+
+This is different from dedicated MCP gateways that require all backends to be 
MCP Servers. CAPI bridges existing REST infrastructure and LLM-native 
protocols. It meets your services where they already are.
+
+## Why I'm sharing this now
+
+For most of its life, CAPI has been an internal tool — built for a specific 
environment, solving specific problems. I recently rewrote it from scratch, 
dropping Spring Boot entirely. The trigger was Spring Boot 4 deprecating the 
Undertow starter. Undertow is core to CAPI — it handles all our WebSocket, SSE, 
gRPC, and MCP traffic directly. We couldn't drop it, so instead we dropped the 
framework dependency and took full control of the runtime. The transition was 
smoother than you might ex [...]
+
+The new version is open-source under Apache 2.0. It's on GitHub, it has 
documentation, Docker Compose for a full-stack quickstart, and Helm charts for 
Kubernetes.
+
+If any of this resonates — whether you're dealing with gateway complexity, 
looking at MCP integration, or just curious about building something like this 
on Apache Camel — I'd like to hear from you.
+
+- **Project:** 
[github.com/surisoft-io/capi-core](https://github.com/surisoft-io/capi-core)
+- **Website:** [capi.surisoft.io](https://capi.surisoft.io)
+- **Contact:** [[email protected]](mailto:[email protected])
+
+CAPI is open-source under the Apache 2.0 license. If you find it useful, a 
GitHub star helps more than you'd think.
\ No newline at end of file

Reply via email to