> ## Documentation Index
> Fetch the complete documentation index at: https://docs.consensus.app/llms.txt
> Use this file to discover all available pages before exploring further.

# Other gateways

> Kong, Solo.io agentgateway, Zuplo, Docker MCP Gateway, and Boomi AI Gateway can front the Consensus MCP server with a static bearer header; each has a caveat worth knowing.

These products work with Consensus but with a limitation on one of the auth modes, or with docs that are still settling. In every case the shared-API-key path is the reliable one.

<AccordionGroup>
  <Accordion title="Kong AI Gateway (AI MCP Proxy)">
    Use the plugin's `passthrough-listener` mode with a Gateway Service pointing at `https://mcp.consensus.app` and a route on `/mcp`:

    ```yaml theme={null}
    plugins:
      - name: ai-mcp-proxy
        config:
          mode: passthrough-listener
          max_request_body_size: 1048576
    ```

    The MCP plugin doesn't inject an upstream credential itself. Add the bearer with Kong's Request Transformer plugin: `config.add.headers` → `Authorization:Bearer ak_live_...`. Kong has no upstream OAuth broker; its OAuth plugins are inbound only. Requires Kong Gateway 3.12+ and an upstream on MCP `2025-06-18` or later.
  </Accordion>

  <Accordion title="Solo.io agentgateway">
    Add Consensus as an MCP target with a backend auth key:

    ```yaml theme={null}
    mcp:
      port: 3000
      targets:
      - name: consensus
        mcp:
          host: https://mcp.consensus.app/mcp
        policies:
          backendAuth:
            key: "$CONSENSUS_API_KEY"
          backendTLS:
            hostname: mcp.consensus.app
    ```

    Set `statefulMode: stateless` if you don't want the gateway to synthesize sessions. `backendAuth.passthrough` forwards a caller's own Consensus token; there is no built-in authorization-code broker.
  </Accordion>

  <Accordion title="Zuplo MCP Gateway">
    Zuplo's gateway is stateless, POST-only Streamable HTTP with no SSE, which mirrors Consensus exactly. Point the `McpProxyHandler` at the server:

    ```json theme={null}
    "options": { "rewritePattern": "https://mcp.consensus.app/mcp" }
    ```

    For a shared key, add the `set-headers-inbound` policy with `Authorization` = `Bearer ak_live_...`. For per-user OAuth, the `mcp-token-exchange-inbound` policy's `clientRegistration: auto` uses Client ID Metadata Documents rather than RFC 7591 Dynamic Client Registration; use `mode: manual` with a confidential client from Consensus, or test `auto` first.
  </Accordion>

  <Accordion title="Docker MCP Gateway and Docker Agent">
    Docker's MCP Toolkit catalog doesn't document adding a remote server by URL. Docker Agent (`cagent`) does:

    ```yaml theme={null}
    toolsets:
      - type: mcp
        remote:
          url: "https://mcp.consensus.app/mcp"
          transport_type: "streamable"
          headers:
            Authorization: "Bearer ${env.CONSENSUS_API_KEY}"
    ```

    Omit `headers` to use Dynamic Client Registration OAuth instead. Treat this as workstation tooling rather than an enterprise gateway.
  </Accordion>

  <Accordion title="Boomi AI Gateway (formerly Lunar.dev MCPX)">
    Add a remote server with `type: streamable-http` (inferred from the `/mcp` suffix) and a static header:

    ```json theme={null}
    {
      "consensus": {
        "url": "https://mcp.consensus.app/mcp",
        "headers": {
          "Authorization": "Bearer ak_live_..."
        }
      }
    }
    ```

    Boomi's docs are mid-migration from Lunar; the remote-server page isn't republished yet, and its documented static OAuth covers client-credentials and device flows only. Use the bearer path.
  </Accordion>
</AccordionGroup>

Running one of these and hitting a snag? [Contact sales](https://consensus.app/home/contact/sales/) and we'll help verify the setup.
