Turns any REST API into an MCP tool without touching your backend code. Register your service in HashiCorp Consul with metadata tags, and CAPI translates between LLM agents calling tools/list and tools/call and your existing HTTP endpoints. It's built on Apache Camel and handles the JSON-RPC wrapping, so your services just see normal REST requests. Also proxies native MCP Server backends if you have them. The experimental MCP Gateway runs on port 8383 alongside the main API gateway features like OAuth2 validation, rate limiting via Hazelcast, and OpenTelemetry tracing. Reach for this when you want LLM agents calling your internal services without rewriting them as MCP servers.
CAPI is a lightweight API Gateway and load balancer built on Undertow's async proxy architecture. Services register themselves in HashiCorp Consul, and CAPI automatically discovers them, creates proxy handlers, and applies security, throttling, and observability policies — no database required.
X-Forwarded-*)CAPI's MCP Gateway turns any existing REST API into an MCP tool — no code changes on your backends.
Register a service in Consul with MCP metadata, and LLM agents (Claude Desktop, Cursor, custom agents) can discover and invoke it immediately. Your REST services don't need to know anything about MCP, JSON-RPC, or tool schemas. CAPI handles the translation:
LLM Agent CAPI Your REST API
(unchanged)
tools/list ──────────────► reads Consul metadata
◄────────────── returns tool catalog
tools/call ──────────────► extracts arguments
{"name":"..."} POST /endpoint ──────────────► handles request
wraps response ◄────────────── returns JSON
◄────────────── MCP-formatted result
CAPI also supports real MCP Server backends — services that already speak JSON-RPC 2.0. Register them with mcp-type: server and CAPI discovers their tools automatically via tools/list, then proxies tools/call requests transparently. Both REST and MCP Server backends are aggregated under one unified MCP endpoint.
Unlike dedicated MCP gateways that require all backends to be MCP Servers, CAPI bridges the gap between existing REST infrastructure and LLM-native protocols. See the MCP Gateway docs and the demo for a working example with both backend types.
CAPI requires the CAPI_CONFIG_FILE environment variable pointing to a valid configuration file.
CAPI_CONFIG_FILE=config/config.yaml java -jar capi-core.jar
docker run -p 8380:8380 -p 8381:8381 \
-v $(pwd)/config/config.yaml:/capi/config/config.yaml \
-e CAPI_CONFIG_FILE=/capi/config/config.yaml \
surisoft/capi-core
A Helm chart is available in helm/capi-core/.
helm install capi-core helm/capi-core
# With custom values
helm install capi-core helm/capi-core -f my-values.yaml
# Enable SSL and truststore
helm install capi-core helm/capi-core \
--set capi.ssl.enabled=true \
--set capi.ssl.keystoreBase64=<base64-encoded-keystore> \
--set capi.ssl.password=changeit
See helm/capi-core/values.yaml for all available configuration options.
| Port | Description | Config key |
|---|---|---|
| 8380 | REST API gateway | capi.rest.port |
| 8381 | Admin / metrics | capi.adminPort |
| 8382 | WebSocket gateway | capi.websocket.port |
| 8383 | MCP Gateway (experimental) | capi.mcp.port |
| 8384 | gRPC Gateway (experimental) | capi.grpc.port |
The runningMode field controls which types of services CAPI will proxy:
| Mode | Description |
|---|---|
full | Proxies REST, WebSocket, and SSE services (default) |
websocket | Only proxies WebSocket services |
sse | Only proxies SSE services |
| Document | Description |
|---|---|
| Service Registration | How to register services in Consul and configure routing, security, and throttling via metadata |
| Security | OAuth2/OIDC and OPA authorization configuration |
| Admin API | Admin endpoints reference (health, metrics, routes, OpenAPI) |
| Configuration Reference | Complete YAML configuration reference with all fields |
| MCP Gateway (Experimental) | MCP Gateway for LLM tool integration via JSON-RPC 2.0 |
| gRPC Gateway (Experimental) | Transparent gRPC reverse proxy with header-based routing |
io.github.ericm1018/skillfm-llm-cost-optimizer-openai-anthropic-usage
io.github.mikerawsonnz/llm-orchestration-agent
io.github.mikerawsonnz/authenticated-llm-agent
labforgedev/copilot-memory-mcp
csoai-org/agent-prompt-injection-firewall-mcp
io.github.mikerawsonnz/authenticated-multi-llm-agent