MCP Server Portal
One authenticated endpoint that centralises upstream MCP servers and proxies tool calls behind Cloudflare Access.
- Provider
- cloudflare
- Kind
- API gateway
- Category
- Edge
| property | type | values | required | kind default | this component |
|---|---|---|---|---|---|
| auth | enum | none | api-key | jwt | oauth2 | mtls | no | none | ▸ oauth2 |
| codeMode | enum | unavailable | opt-in | on-by-default | required | no | opt-in | inherited |
| concurrencyLimit | boolean | — | no | false | inherited |
| idempotencyKeys | boolean | — | no | false | inherited |
| instances | integer | — | no | — | inherited |
| keyTtlHours | integer | — | no | — | inherited |
| managed | boolean | — | no | false | ▸ true |
| maxUpstreamServers | integer | — | no | 80 | inherited |
| protocol | enum | http | grpc | websocket | fix | ouch | no | http | ▸ http |
| rateLimiting | boolean | — | no | false | ▸ false |
| requestLogging | boolean | — | no | true | inherited |
| tls | boolean | — | no | true | ▸ true |
Every rule whose selector covers this component's kind or its category. Whether a rule fires depends on the design: its properties, its edges and its groups.
sync-chain-too-deep
Every consecutive synchronous hop from this entry point spends part of the stated p95 latency budget, and the chain's failures multiply. More than three hops is a budget nobody is tracking.
- — all of these hold:
- — the design requirement `latency.p95Ms` has a value
- — the longest chain of synchronous calls starting at the node is more than 3 hops long
nodes:
- { id: "mcp-portal", component: "cloudflare-mcp-portal" }API Gatewayalibaba-api-gatewayAmazon API Gatewayaws-api-gatewayAWS AppSync GraphQL APIaws-appsyncAzure API Managementazure-api-managementAI Gatewaycloudflare-ai-gatewayCloudflare API Shieldcloudflare-api-shieldCloudflare Privacy Gatewaycloudflare-privacy-gatewayGeneric API gatewayapi-gatewayApache APISIXapisixApollo GraphOSapollo-graphosEasegresseasegressEmissary-ingressemissaryEnvoy Gatewayenvoy-gatewayGloo GatewayglooHasurahasuraHelicone AI Gatewayhelicone-gatewayHigresshigressKong GatewaykongKong AI Gatewaykong-ai-gatewayKong Konnectkong-konnectKrakenDkrakendLiteLLM ProxylitellmMartian GatewaymartianNot Diamondnot-diamondPortkey AI GatewayportkeyRequestyrequestySpring Cloud Gatewayspring-cloud-gatewayTyk GatewaytykUnifyunify-aiVercel AI Gatewayvercel-ai-gatewayWSO2 API Managerwso2-api-managerZuulzuulApigeeapigeeAgent Gatewaygoogle-agent-gatewayAPI Gatewaygoogle-api-gatewayApigee hybridgoogle-apigee-hybridCloud Endpointsgoogle-cloud-endpointsFirebase Data Connectgoogle-firebase-data-connectIBM API Connectibm-api-connectOCI API Gatewayoci-api-gateway
# yaml-language-server: $schema=../../schema/component.schema.json # MCP server portal (Cloudflare One AI controls): one HTTP endpoint that centralises up to 80 # upstream MCP servers, authenticates clients with OAuth 2.0 through Access or a service token # and proxies tool calls ("MCP server portals"). Access logs every tool request; Code Mode is # opt-in, off unless the client asks for it. schemaVersion: "1" type: "component" id: "cloudflare-mcp-portal" kind: "api-gateway" provider: "cloudflare" docs: "https://developers.cloudflare.com/cloudflare-one/access-controls/ai-controls/mcp-portals/" defaults: managed: true protocol: "http" tls: true auth: "oauth2" rateLimiting: false properties: maxUpstreamServers: type: "integer" default: 80 codeMode: type: "enum" values: ["unavailable", "opt-in", "on-by-default", "required"] default: "opt-in" requestLogging: type: "boolean" default: true