{"id":632928,"date":"2026-09-24T08:35:27","date_gmt":"2026-09-24T15:35:27","guid":{"rendered":"https:\/\/clickup.com\/blog\/?p=632928"},"modified":"2026-09-24T08:36:56","modified_gmt":"2026-09-24T15:36:56","slug":"mcp-gateway","status":"publish","type":"post","link":"https:\/\/clickup.com\/blog\/mcp-gateway\/","title":{"rendered":"MCP Gateways: How to Manage Multiple MCP Servers at Scale"},"content":{"rendered":"\n<p>For many of us, it starts with one MCP server. A developer connects GitHub to Claude or Cursor, and it works. Then someone adds Slack, then Jira, then an internal database. <\/p>\n\n\n\n<p>Six months later, every developer has their own config file, API keys, and list of servers.<\/p>\n\n\n\n<p>Now you don&#8217;t know which agents can reach production data. An engineer leaves, and you have to track down every token they created. Adding a new server means updating 15 client configs by hand. <\/p>\n\n\n\n<p>The scary part: when an agent does something unexpected, there&#8217;s no single log that can explain why it happened in the first place.<\/p>\n\n\n\n<p>Tokens are the second cost. Every connected server loads its tool definitions into the context window. In one five-server setup, Anthropic measured <a href=\"https:\/\/www.anthropic.com\/engineering\/advanced-tool-use\" target=\"_blank\" rel=\"noreferrer noopener nofollow\">about 55,000 tokens of tool definitions<\/a> before the agent read a single request.<\/p>\n\n\n\n<p>So, managing multiple MCP servers comes down to two jobs: controlling access in one place and keeping each agent&#8217;s tool list small. An MCP gateway handles the first by default. It handles the second only when it filters or searches tools. We&#8217;re looking at five gateways worth evaluating, what each costs, and how to roll one out without breaking your agents.<\/p>\n\n\n<div style=\"border: 3px solid #000000; border-radius: 0%; background-color: inherit; \" class=\"ub-styled-box ub-bordered-box wp-block-ub-styled-box\" id=\"ub-styled-box-9ccfd188-ed20-4f5f-b546-338b88892bf3\">\n<p id=\"ub-styled-box-bordered-content-\"><strong>TL;DR:<\/strong> To manage multiple MCP servers at scale, put them behind one MCP gateway. The gateway controls who can call each tool, holds the credentials, and logs every tool call. Before you connect anything, cut unused tools and give each team only the tools it needs. A gateway shrinks the model&#8217;s context only when it filters or searches tools. Move read-only servers first, and test everything through the gateway before switching production traffic.<\/p>\n\n\n\n<p>Pick a gateway based on where your agents run:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Composio:<\/strong> managed auth for hundreds of SaaS apps, with no servers to run<\/li>\n\n\n\n<li><strong>Docker MCP Gateway:<\/strong> local development, with each server in its own container (free, MIT)<\/li>\n\n\n\n<li><strong>IBM ContextForge:<\/strong> self-hosted setups that need a tool set per team and REST APIs turned into MCP tools (free, Apache 2.0)<\/li>\n\n\n\n<li><strong>Kong AI Gateway:<\/strong> teams already on Kong that want the same policies for API and MCP traffic (from $25\/month)<\/li>\n\n\n\n<li><strong>Amazon Bedrock AgentCore Gateway:<\/strong> agents on AWS that need to search tools at call time (priced per call)<\/li>\n<\/ul>\n\n\n<\/div>\n\n\n<h2 class=\"wp-block-heading\">What Is an MCP Gateway?<\/h2>\n\n\n<div style=\"border: 3px solid #000000; border-radius: 0%; background-color: inherit; \" class=\"ub-styled-box ub-bordered-box wp-block-ub-styled-box\" id=\"ub-styled-box-51df69eb-47cb-457d-b9e0-017553d5b70d\">\n<p id=\"ub-styled-box-bordered-content-\">An MCP gateway is a single endpoint that sits between your AI clients and your MCP servers. Claude, Cursor, or your own agent connects to it once, with one credential. The gateway handles every server behind it.<\/p>\n\n\n<\/div>\n\n\n<p>When a request comes in, the gateway checks who is asking and which tools that user or agent can see. It pulls tool definitions from each upstream server and prefixes names so <code>github_create_issue<\/code> and <code>jira_create_issue<\/code> don&#8217;t collide. Anything you&#8217;ve filtered out gets dropped, so the model sees one clean list.<\/p>\n\n\n\n<p>When the model picks a tool, the gateway routes the call to the server that owns it and attaches that server&#8217;s credentials. In most products, the agent never holds them. Every call passes through one point, so the gateway can log what was called, by whom, and what came back.<\/p>\n\n\n\n<p>Tool selection and server safety still depend on how you configure filtering and permissions, which we&#8217;ll cover in the how-to section below. <\/p>\n\n\n<div style=\"background-color: #d9edf7; color: #31708f; border-left-color: #31708f; \" class=\"ub-styled-box ub-notification-box wp-block-ub-styled-box\" id=\"ub-styled-box-b7d72f99-2744-4dac-951b-d6a9fa95fba9\">\n<p id=\"ub-styled-box-notification-content-\"><strong>Note:<\/strong> To learn more about the client side of the connection, see <a href=\"https:\/\/clickup.com\/blog\/mcp-client\/\" target=\"_blank\" rel=\"noreferrer noopener\">how an MCP client works<\/a>. For protocol basics, start with our <a href=\"https:\/\/clickup.com\/blog\/model-context-protocol\/\" target=\"_blank\" rel=\"noreferrer noopener\">Model Context Protocol primer<\/a>.<\/p>\n\n\n<\/div>\n\n\n<h2 class=\"wp-block-heading\">How Is an MCP Gateway Different From a Registry, LLM Gateway, or API Gateway?<\/h2>\n\n\n\n<p>All four sit between a client and something it needs, which is why teams mix them up. <\/p>\n\n\n\n<p>The difference is the traffic each one handles. An MCP gateway decides whether an agent can call a tool, while a registry only tells clients which servers exist and never carries a request. LLM and API gateways handle different traffic: the first picks which model answers a prompt, and the second guards ordinary HTTP calls to your services.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td><strong>Layer<\/strong><\/td><td><strong>What it moves<\/strong><\/td><td><strong>Question it answers<\/strong><\/td><td><strong>Examples<\/strong><\/td><\/tr><tr><td>MCP gateway<\/td><td>Tool calls to MCP servers<\/td><td>Can this agent call this tool?<\/td><td>Docker MCP Gateway, IBM ContextForge, Amazon Bedrock AgentCore Gateway<\/td><\/tr><tr><td>MCP registry<\/td><td>Metadata about servers<\/td><td>Which servers exist, and where?<\/td><td>Official MCP Registry<\/td><\/tr><tr><td>LLM gateway<\/td><td>Model inference requests<\/td><td>Which model answers, and at what cost?<\/td><td>Kong AI Gateway, LiteLLM<\/td><\/tr><tr><td>API gateway<\/td><td>HTTP and gRPC traffic<\/td><td>Is this request authorized?<\/td><td>Kong Gateway, Amazon API Gateway<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p>In practice, the lines blur. For example, tools like Kong AI Gateway send LLM and MCP traffic through one control plane, and ContextForge runs a registry alongside its gateway. When you compare products, check which layers each one actually covers.<\/p>\n\n\n\n<p>The <a href=\"https:\/\/modelcontextprotocol.io\/registry\/about\" target=\"_blank\" rel=\"noreferrer noopener\">official MCP Registry<\/a> launched in September 2025, backed by Anthropic, GitHub, PulseMCP, and Microsoft. A year later, it&#8217;s still in preview. Use it to discover servers, but keep your own list of approved ones.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Does an MCP Gateway Reduce Token Usage?<\/h2>\n\n\n\n<p>Yes, but only when it filters or searches tools. Every MCP server comes with a set of tools, and each tool has a written description that the AI has to read before it can use it. And those descriptions use up tokens. A gateway puts all your servers in one place. Unless you set it up to filter, it still shows the AI every tool from every server, so the AI reads the same pile of descriptions as before. <\/p>\n\n\n\n<p>You only save tokens when the gateway hides the tools a task doesn&#8217;t need.<\/p>\n\n\n<div style=\"border: 3px solid #000000; border-radius: 0%; background-color: inherit; \" class=\"ub-styled-box ub-bordered-box wp-block-ub-styled-box\" id=\"ub-styled-box-f5688f5d-b561-4a44-b291-410d8dd5cec8\">\n<p id=\"ub-styled-box-bordered-content-\"><strong>Example:<\/strong> Anthropic&#8217;s own numbers show where the weight sits. In a <a href=\"https:\/\/www.anthropic.com\/engineering\/advanced-tool-use\" target=\"_blank\" rel=\"noreferrer noopener nofollow\">five-server setup<\/a>, GitHub contributes 35 tools worth about 26,000 tokens, and Slack adds 11 tools worth about 21,000. Sentry, Grafana, and Splunk add 12 more tools between them for roughly 8,000. That comes to 58 tools and about 55,000 tokens before the conversation starts, and GitHub alone accounts for nearly half of it. Adding Jira costs another 17,000. Anthropic says it has seen tool definitions reach 134,000 tokens before optimization.<\/p>\n\n\n<\/div>\n\n\n<p>Cost is only half the problem. A common point of failure is when the model picks the wrong tool or passes the wrong parameters. This happens especially when tool names are close, like <code>notification-send-user<\/code> and <code>notification-send-channel<\/code>. <a href=\"https:\/\/platform.claude.com\/docs\/en\/agents-and-tools\/tool-use\/tool-search-tool\" target=\"_blank\" rel=\"noreferrer noopener nofollow\">Anthropic&#8217;s docs<\/a> say tool selection starts to degrade past 30 to 50 available tools, and a few servers can push you past that on their own.<\/p>\n\n\n\n<p><strong>The recommended fix from Anthropic is to load a search tool up front and pull in only the three to five tools a task needs.<\/strong> In a test with more than 50 MCP tools, total context fell from about 77,000 tokens to about 8,700, which Anthropic reports as an 85% reduction. Accuracy on its internal MCP evaluations also rose: Opus 4 went from 49% to 74% with tool search enabled, and Opus 4.5 went from 79.5% to 88.1%. <\/p>\n\n\n\n<p>The company&#8217;s findings on <a href=\"https:\/\/www.anthropic.com\/engineering\/code-execution-with-mcp\" target=\"_blank\" rel=\"noreferrer noopener nofollow\">code execution with MCP<\/a> go even further. When an agent browsed a folder of tool files and read only the definitions it needed, one Google Drive to Salesforce workflow dropped from 150,000 tokens to 2,000. But this approach needs a sandboxed environment for the code the agent writes, which is its own operational cost.<\/p>\n\n\n\n<p>Gateways give you two ways to act on this.<\/p>\n\n\n\n<p><strong>The first is trimming tool lists by hand.<\/strong> Docker&#8217;s profiles let you allowlist individual tools per server, ContextForge&#8217;s virtual servers publish a handpicked set drawn from several upstream servers, and Composio&#8217;s Tool Router can pin a session to a fixed list. <\/p>\n\n\n\n<p><strong>The second is searching at call time. <\/strong>AgentCore Gateway includes a built-in semantic search tool that agents query in plain language, and Composio can also find tools at runtime. <\/p>\n\n\n\n<p>Anthropic&#8217;s guidance is to act once definitions pass 10,000 tokens or you have 10 or more tools. Most <a href=\"https:\/\/clickup.com\/blog\/ai-workflow-automation\/\" target=\"_blank\" rel=\"noreferrer noopener\">AI workflow automation<\/a> setups cross that line fast, and <a href=\"https:\/\/clickup.com\/blog\/ai-multi-agent-workflow\/\" target=\"_blank\" rel=\"noreferrer noopener\">multi-agent workflows<\/a> cross it sooner.<\/p>\n\n\n<div style=\"border: 3px solid #000000; border-radius: 0%; background-color: inherit; \" class=\"ub-styled-box ub-bordered-box wp-block-ub-styled-box\" id=\"ub-styled-box-6d068244-4669-41f1-81ce-53834f42c24a\">\n<p id=\"ub-styled-box-bordered-content-\"><strong>Note: <\/strong>Search has its own limits. In a <a href=\"https:\/\/stacklok.com\/blog\/stackloks-mcp-optimizer-vs-anthropics-tool-search-tool-a-head-to-head-comparison\/\" target=\"_blank\" rel=\"noreferrer noopener nofollow\">December 2025 benchmark<\/a> across 2,792 tools, Stacklok, which sells a competing optimizer, found Anthropic&#8217;s tool search picked the right tool 34% of the time. <a href=\"https:\/\/blog.arcade.dev\/anthropic-tool-search-4000-tools-test\" target=\"_blank\" rel=\"noreferrer noopener nofollow\">Arcade, another vendor<\/a>, reported 56% to 64% retrieval accuracy across 4,027 tools. Both tests ran while Anthropic&#8217;s tool search was in beta, so test any search layer against your own catalog before relying on it.<\/p>\n\n\n<\/div>\n\n\n<h2 class=\"wp-block-heading\">What Are the Best MCP Gateways?<\/h2>\n\n\n\n<p>Plenty of products call themselves MCP gateways, and some are closer to server directories. This list sticks to tools that sit in the middle of your setup. Your agents connect to one endpoint, the gateway reaches your servers behind it, and you get at least one real control over what passes through.<\/p>\n\n\n\n<p>That control could be a sign-in, a tool allowlist, or an audit log.<\/p>\n\n\n\n<p>Five made the cut. They all solve the same problem, but in different ways. The right pick comes down to where your agents already run: a developer&#8217;s laptop, your own infrastructure, an existing Kong setup, AWS, or SaaS apps.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td><strong>Gateway<\/strong><\/td><td><strong>Best for<\/strong><\/td><td><strong>Standout feature<\/strong><\/td><td><strong>Starting price<\/strong><\/td><td><strong>Where it taps out<\/strong><\/td><\/tr><tr><td>Docker MCP Gateway<\/td><td>Local development on Docker Desktop<\/td><td>Each server runs in its own container, with per-tool allowlists in profiles<\/td><td>Free, open source (MIT)<\/td><td>Governance version is invite-only through Docker Sales<\/td><\/tr><tr><td>IBM ContextForge<\/td><td>Platform teams that self-host<\/td><td>Virtual servers give each team its own tool set, and REST or gRPC APIs become MCP tools<\/td><td>Free, open source (Apache 2.0)<\/td><td>You run, patch, and scale it yourself<\/td><\/tr><tr><td>Kong AI Gateway<\/td><td>Teams already on Kong Konnect<\/td><td>One policy engine for API, LLM, and MCP traffic, with per-tool access control<\/td><td>$25\/month per serverless control plane<\/td><td>SSO and platform audit logs are Enterprise-only<\/td><\/tr><tr><td>Amazon Bedrock AgentCore Gateway<\/td><td>Agents running on AWS<\/td><td>Built-in semantic tool search, with AgentCore Identity included at no extra charge<\/td><td>Pay per call, no minimum<\/td><td>Usage-based pricing across several AgentCore services makes monthly costs harder to forecast<\/td><\/tr><tr><td>Composio<\/td><td>Teams connecting agents to many SaaS apps without running servers<\/td><td>Managed auth for 1,500+ apps, plus fixed tool lists or runtime tool search in one Tool Router session<\/td><td>Free for 100,000 tool calls\/month<\/td><td>Tool calls and stored credentials run through Composio&#8217;s cloud unless you set up a bring-your-own-cloud deployment<\/td><\/tr><\/tbody><\/table><figcaption class=\"wp-element-caption\"><em>Pricing and features reflect what was available at the time of writing and can change. Always verify current details on each tool&#8217;s official website.<\/em><\/figcaption><\/figure>\n\n\n<div style=\"border: 3px solid #000000; border-radius: 0%; background-color: inherit; \" class=\"ub-styled-box ub-bordered-box wp-block-ub-styled-box\" id=\"ub-styled-box-46008c63-41c4-43aa-8d7f-01a772731a13\">\n<h2 class=\"wp-block-heading\" id=\"ub-styled-box-bordered-content-\">How we review software at ClickUp<\/h2>\n\n\n\n<p>Our editorial team follows a transparent, research-backed, and vendor-neutral process, so you can trust that our recommendations are based on real product value.<\/p>\n\n\n\n<p>Here\u2019s a detailed rundown of <a href=\"https:\/\/clickup.com\/blog\/software-review-methodology\/\">how we review software at ClickUp<\/a>.<\/p>\n\n\n<\/div>\n\n\n<h3 class=\"wp-block-heading\">1. Docker MCP Gateway (Best for local development on Docker Desktop)<\/h3>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"881\" height=\"449\" src=\"https:\/\/clickup.com\/blog\/wp-content\/uploads\/2026\/09\/Docker-Mcp.png\" alt=\"Docker MCP Gateway\" class=\"wp-image-633160\" srcset=\"https:\/\/clickup.com\/blog\/wp-content\/uploads\/2026\/09\/Docker-Mcp.png 881w, https:\/\/clickup.com\/blog\/wp-content\/uploads\/2026\/09\/Docker-Mcp-300x153.png 300w, https:\/\/clickup.com\/blog\/wp-content\/uploads\/2026\/09\/Docker-Mcp-768x391.png 768w, https:\/\/clickup.com\/blog\/wp-content\/uploads\/2026\/09\/Docker-Mcp-700x357.png 700w\" sizes=\"auto, (max-width: 881px) 100vw, 881px\" \/><figcaption class=\"wp-element-caption\">via <a href=\"https:\/\/github.com\/docker\/mcp-gateway\" type=\"link\" id=\"https:\/\/github.com\/docker\/mcp-gateway\" target=\"_blank\" rel=\"noreferrer noopener nofollow\">Docker<\/a><\/figcaption><\/figure>\n<\/div>\n\n\n<p>Docker MCP Gateway is the open-source engine behind the MCP Toolkit in Docker Desktop. If you already use Desktop with the toolkit turned on, the gateway runs in the background with no extra setup. Its answer to server sprawl is containers. Each MCP server runs in its own container with restricted privileges, network access, and resources, and the gateway starts it only when an agent needs one of its tools.<\/p>\n\n\n\n<p>Profiles keep the setup in one place. A profile groups the servers a project needs, and every client you connect to, whether Cursor, VS Code, Claude Desktop, or Claude Code, uses that same setup. You can push a profile to an OCI registry for teammates to pull, which replaces 15 hand-edited config files with one shared definition. <\/p>\n\n\n\n<p>Inside a profile, you can switch on individual tools, such as <code>github.create_issue<\/code>, and leave the rest of that server off. That&#8217;s how Docker keeps the model&#8217;s tool list short.<\/p>\n\n\n\n<p>Credentials stay out of config files. The gateway pulls secrets from Docker Desktop&#8217;s secrets store and adds them when it starts a server, and it handles OAuth sign-in for servers that need it. Built-in logging and call tracing show which tools ran. The gateway only routes calls, and the thinking happens in the <a href=\"https:\/\/clickup.com\/blog\/ai-agents-for-automation\/\" type=\"link\" id=\"https:\/\/clickup.com\/blog\/ai-agents-for-automation\/\">AI agents you run for automation<\/a>. To get started, the Docker MCP Catalog lists more than 200 tools and services.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Standout features<\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Container per server:<\/strong> Each MCP server runs in isolation with restricted privileges, network access, and resources<\/li>\n\n\n\n<li><strong>Shareable profiles:<\/strong> Group servers once, then push and pull the profile through an OCI registry so the whole team runs the same setup<\/li>\n\n\n\n<li><strong>Per-tool allowlists:<\/strong> Switch individual tools on or off inside a profile to keep the model&#8217;s tool list small<\/li>\n\n\n\n<li><strong>Secrets and OAuth handling:<\/strong> Credentials come from Docker Desktop&#8217;s secrets store instead of environment files, and built-in OAuth flows cover servers that need sign-in<\/li>\n<\/ul>\n\n\n\n<h4 class=\"wp-block-heading\">Pricing<\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Docker MCP Gateway:<\/strong> Free (open source, MIT)<\/li>\n\n\n\n<li><strong>Docker Personal:<\/strong> $0<\/li>\n\n\n\n<li><strong>Docker Pro:<\/strong> $11\/user\/month<\/li>\n\n\n\n<li><strong>Docker Team:<\/strong> $16\/user\/month<\/li>\n\n\n\n<li><strong>Docker Business:<\/strong> $24\/user\/month (billed annually)<\/li>\n<\/ul>\n\n\n\n<h4 class=\"wp-block-heading\">Ratings<\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>G2:<\/strong> Not enough reviews<\/li>\n\n\n\n<li><strong>Capterra:<\/strong> Not enough reviews<\/li>\n<\/ul>\n\n\n\n<p><strong>Where it taps out:<\/strong> The gateway is built for developers running servers on their own machines. The governance version, sold as part of Docker AI Governance, is invite-only through Docker Sales, so you can&#8217;t sign up for team-wide policy controls yourself. You can run the gateway without Docker Desktop through a manual install, but secrets management still depends on Desktop.<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\"><div style=\"border: 3px solid #000000; border-radius: 0%; background-color: inherit; \" class=\"ub-styled-box ub-bordered-box wp-block-ub-styled-box\" id=\"ub-styled-box-bd31b20d-32d7-455b-a0a4-da555ae4648b\">\n<p id=\"ub-styled-box-bordered-content-\"><strong>Best for:<\/strong> Developers and small teams who want every MCP server in its own container and one shared setup across their AI clients.<br><strong>Skip it if:<\/strong> You need self-serve SSO, role-based access across teams, or compliance-grade audit logs for MCP calls.<\/p>\n\n\n<\/div>\n\n\n<h4 class=\"wp-block-heading\">What are real-life users saying about Docker MCP Gateway<\/h4>\n\n\n\n<p>A <a href=\"https:\/\/www.reddit.com\/r\/mcp\/s\/49J5kU72y1\" type=\"link\" id=\"https:\/\/www.reddit.com\/r\/mcp\/s\/49J5kU72y1\" target=\"_blank\" rel=\"noreferrer noopener nofollow\">user review<\/a> says:<\/p>\n\n\n\n<div class=\"cu-author-quote undefined\"><blockquote class=\"cu-author-quote__quote\"><p>Docker\u2019s mcp gateway is genuinely nice for local dev &#8211; container isolation per server, credential handling baked into docker desktop but it\u2019s not really built for cross-team, crossregion enterprise governance.<\/p><\/blockquote><\/div>\n<\/blockquote>\n\n\n\n<h3 class=\"wp-block-heading\">2. IBM ContextForge (Best for self-hosted, per-team tool sets)<\/h3>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1400\" height=\"878\" src=\"https:\/\/clickup.com\/blog\/wp-content\/uploads\/2026\/09\/IBM-contextforge-1400x878.png\" alt=\"IBM ContextForge_MCP Gateway\" class=\"wp-image-633175\" srcset=\"https:\/\/clickup.com\/blog\/wp-content\/uploads\/2026\/09\/IBM-contextforge-1400x878.png 1400w, https:\/\/clickup.com\/blog\/wp-content\/uploads\/2026\/09\/IBM-contextforge-300x188.png 300w, https:\/\/clickup.com\/blog\/wp-content\/uploads\/2026\/09\/IBM-contextforge-768x482.png 768w, https:\/\/clickup.com\/blog\/wp-content\/uploads\/2026\/09\/IBM-contextforge-700x439.png 700w, https:\/\/clickup.com\/blog\/wp-content\/uploads\/2026\/09\/IBM-contextforge.png 1429w\" sizes=\"auto, (max-width: 1400px) 100vw, 1400px\" \/><figcaption class=\"wp-element-caption\">via <a href=\"https:\/\/github.com\/IBM\/mcp-context-forge\" type=\"link\" id=\"https:\/\/github.com\/IBM\/mcp-context-forge\" target=\"_blank\" rel=\"noreferrer noopener nofollow\">IBM ContextForge<\/a><\/figcaption><\/figure>\n<\/div>\n\n\n<p>IBM ContextForge is an open-source gateway and registry that you run on your own infrastructure. It puts MCP servers, agent-to-agent (A2A) services, and ordinary REST or gRPC APIs behind one endpoint. You can install it from PyPI, run it as a container, or deploy it to Kubernetes with the project&#8217;s Helm chart.<\/p>\n\n\n\n<p>What sets it apart is the virtual server. You pick tools from everything registered in the gateway, bundle them under a single name, and point a client to that bundle&#8217;s endpoint. A finance agent gets the finance tools, a support agent gets a different set, and neither one loads the other&#8217;s definitions. Each virtual server can be private, shared with a team, or public.<\/p>\n\n\n\n<p>It also turns APIs you already have into MCP tools. Point it at a REST endpoint, and it pulls the JSON schema automatically. The tool also translates gRPC services through server reflection. That saves you from writing a wrapper server for every internal API.<\/p>\n\n\n\n<p>Each upstream server keeps its own OAuth settings, and ContextForge stores tokens per user, so two servers can use different identity providers. The admin UI includes a live log viewer, and traces are sent via OpenTelemetry to backends such as Jaeger, Zipkin, and Datadog. More than 40 plugins add extra transports and integrations.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Standout features<\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Virtual servers:<\/strong> Bundle a handpicked set of tools from several upstream servers and give each team or agent its own endpoint<\/li>\n\n\n\n<li><strong>REST and gRPC translation:<\/strong> Turn existing APIs into MCP tools, with JSON schemas pulled automatically<\/li>\n\n\n\n<li><strong>Per-server OAuth:<\/strong> Give each upstream server its own identity provider and scopes, with tokens stored per user<\/li>\n\n\n\n<li><strong>OpenTelemetry tracing:<\/strong> Send traces to Jaeger, Zipkin, Tempo, Datadog, or New Relic<\/li>\n<\/ul>\n\n\n\n<h4 class=\"wp-block-heading\">Pricing<\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>ContextForge:<\/strong> Free (open source, Apache 2.0)<\/li>\n\n\n\n<li><strong>Infrastructure:<\/strong> You pay for your own hosting, database, and optional Redis cache<\/li>\n<\/ul>\n\n\n\n<h4 class=\"wp-block-heading\">Ratings<\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>G2:<\/strong> Not enough reviews<\/li>\n\n\n\n<li><strong>Capterra:<\/strong> Not enough reviews<\/li>\n<\/ul>\n\n\n\n<p><strong>Where it taps out:<\/strong> You run, patch, and scale it yourself. The gateway won&#8217;t start until you generate strong secret keys. The project recommends PostgreSQL for production, and support runs through GitHub issues and discussions.<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\"><div style=\"border: 3px solid #000000; border-radius: 0%; background-color: inherit; \" class=\"ub-styled-box ub-bordered-box wp-block-ub-styled-box\" id=\"ub-styled-box-1f8bcad3-fc02-457b-81ac-e7caf8f88fd5\">\n<p id=\"ub-styled-box-bordered-content-\"><strong>Best for:<\/strong> Platform teams that want to self-host, give each team its own tool set, and turn internal APIs into MCP tools.<br><strong>Skip it if:<\/strong> You want a managed service instead of running the gateway yourself.<\/p>\n\n\n<\/div><\/blockquote>\n\n\n\n<h4 class=\"wp-block-heading\">What are real-life users saying about IBM ContextForge<\/h4>\n\n\n\n<p>A <a href=\"https:\/\/www.reddit.com\/r\/mcp\/comments\/1v5xegm\/most_best_mcp_gateway_lists_are_vendorwritten\/\" type=\"link\" id=\"https:\/\/www.reddit.com\/r\/mcp\/comments\/1v5xegm\/most_best_mcp_gateway_lists_are_vendorwritten\/\" target=\"_blank\" rel=\"noreferrer noopener nofollow\">user review<\/a> says:<\/p>\n\n\n\n<div class=\"cu-author-quote undefined\"><blockquote class=\"cu-author-quote__quote\"><p>Apache licensed, built for people already running serious Kubernetes infrastructure. It&#8217;s matured into something genuinely capable \u2014 real governance, monitoring, can manage MCP alongside your other company APIs. Heavier to stand up than the smaller options though, this isn&#8217;t a weekend project.<\/p><\/blockquote><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">3. Kong AI Gateway (Best for teams already running Kong)<\/h3>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"920\" height=\"518\" src=\"https:\/\/clickup.com\/blog\/wp-content\/uploads\/2026\/09\/Kong-AI-gateway.avif\" alt=\"Kong AI Gateway\" class=\"wp-image-633187\" srcset=\"https:\/\/clickup.com\/blog\/wp-content\/uploads\/2026\/09\/Kong-AI-gateway.avif 920w, https:\/\/clickup.com\/blog\/wp-content\/uploads\/2026\/09\/Kong-AI-gateway-300x169.avif 300w, https:\/\/clickup.com\/blog\/wp-content\/uploads\/2026\/09\/Kong-AI-gateway-768x432.avif 768w, https:\/\/clickup.com\/blog\/wp-content\/uploads\/2026\/09\/Kong-AI-gateway-700x394.avif 700w\" sizes=\"auto, (max-width: 920px) 100vw, 920px\" \/><figcaption class=\"wp-element-caption\"><em>via <\/em><a href=\"https:\/\/developer.konghq.com\/mcp\/\" target=\"_blank\" rel=\"noreferrer noopener nofollow\"><em>Kong<\/em><\/a><\/figcaption><\/figure>\n<\/div>\n\n\n<p>Kong treats MCP traffic as another kind of API traffic. If your team already runs Kong Gateway or Kong Konnect, MCP support comes as plugins on the gateway you already operate. It&#8217;ll use the same authentication, rate limiting, and logging you use for your APIs.<\/p>\n\n\n\n<p>The core piece is the AI MCP Proxy plugin. It can sit in front of an MCP server you already run, or turn any API with an OpenAPI schema into MCP tools without custom code. You can also combine tools from several APIs into one MCP endpoint, so agents connect once instead of once per service.<\/p>\n\n\n\n<p>Access control works tool by tool. You set allow and deny lists by consumer or consumer group, and when an agent asks for its tool list, Kong returns only the tools that specific caller can use. Every allowed or denied attempt goes to the plugin&#8217;s audit log. Because an agent never loads tools it can&#8217;t call, the filtered list also keeps its context smaller.<\/p>\n\n\n\n<p>Sign-in runs through Kong&#8217;s authentication plugins, including OpenID Connect and the AI MCP OAuth2 plugin. MCP traffic logs record session IDs, JSON-RPC methods, payloads, latencies, and errors, and you can send traces to OpenTelemetry. If you also route LLM traffic through Kong&#8217;s AI Gateway, model traffic and tool traffic share one control plane.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Standout features<\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>REST-to-MCP conversion:<\/strong> Turn any API with an OpenAPI schema into MCP tools without writing a server<\/li>\n\n\n\n<li><strong>Per-tool ACLs:<\/strong> Allow or deny individual tools by consumer or consumer group, so each caller&#8217;s tool list only shows what it&#8217;s allowed to use<\/li>\n\n\n\n<li><strong>MCP audit logs:<\/strong> Record every allowed and denied tool access attempt<\/li>\n\n\n\n<li><strong>Tool aggregation:<\/strong> Combine tools from several APIs into one MCP endpoint<\/li>\n<\/ul>\n\n\n\n<h4 class=\"wp-block-heading\">Pricing<\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Free trial:<\/strong> 30 days of Enterprise features<\/li>\n\n\n\n<li><strong>Konnect Plus:<\/strong> $25\/month per serverless control plane, including 1 million API requests<\/li>\n\n\n\n<li><strong>Additional requests:<\/strong> $200\/month per extra 1 million requests<\/li>\n\n\n\n<li><strong>Hybrid control plane:<\/strong> $200\/month<\/li>\n\n\n\n<li><strong>Dedicated cloud control plane:<\/strong> $500\/month, plus $0.15 per GB of bandwidth<\/li>\n\n\n\n<li><strong>Enterprise:<\/strong> Custom pricing, billed annually<\/li>\n<\/ul>\n\n\n\n<h4 class=\"wp-block-heading\">Ratings<\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>G2:<\/strong> 4.4\/5 (300+ reviews)<\/li>\n\n\n\n<li><strong>Capterra:<\/strong> Not enough reviews<\/li>\n<\/ul>\n\n\n\n<p><strong>Where it taps out:<\/strong> SSO and platform audit logs are Enterprise-only on Konnect. The AI MCP Proxy plugin doesn&#8217;t support WebSocket or gRPC upstreams, and AI guardrails don&#8217;t apply to MCP requests. REST conversion needs a valid OpenAPI schema for each API, and per-tool ACLs need Kong Gateway 3.13 or later. Pings from MCP clients also count toward your monthly request total.<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\"><div style=\"border: 3px solid #000000; border-radius: 0%; background-color: inherit; \" class=\"ub-styled-box ub-bordered-box wp-block-ub-styled-box\" id=\"ub-styled-box-fadb6048-0498-4707-b185-8f7fcf07c198\">\n<p id=\"ub-styled-box-bordered-content-\"><strong>Best for:<\/strong> Teams already running Kong that want MCP traffic under the same policies as their APIs.<br><strong>Skip it if:<\/strong> You don&#8217;t use Kong today, or you need SSO without an Enterprise contract.<\/p>\n\n\n<\/div><\/blockquote>\n\n\n\n<h4 class=\"wp-block-heading\">What are real-life users saying about Kong AI Gateway<\/h4>\n\n\n\n<p>A <a href=\"https:\/\/www.reddit.com\/r\/mcp\/comments\/1v5xegm\/most_best_mcp_gateway_lists_are_vendorwritten\/\" type=\"link\" id=\"https:\/\/www.reddit.com\/r\/mcp\/comments\/1v5xegm\/most_best_mcp_gateway_lists_are_vendorwritten\/\" target=\"_blank\" rel=\"noreferrer noopener nofollow\">user review<\/a> says:<\/p>\n\n\n\n<div class=\"cu-author-quote undefined\"><blockquote class=\"cu-author-quote__quote\"><p>makes sense if you&#8217;re already running Kong. This isn&#8217;t just MCP tacked on anymore, it&#8217;s real purpose-built support including agent-to-agent traffic, and they partnered with an AI-governance company in mid-July to wire policy checks straight into the gateway. Some of the deeper features probably need a paid tier though.<\/p><\/blockquote><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">4. Amazon Bedrock AgentCore Gateway (Best for agents running on AWS)<\/h3>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1400\" height=\"796\" src=\"https:\/\/clickup.com\/blog\/wp-content\/uploads\/2026\/09\/Agentcore-1400x796.png\" alt=\"Amazon Bedrock AgentCore Gateway\" class=\"wp-image-633199\" srcset=\"https:\/\/clickup.com\/blog\/wp-content\/uploads\/2026\/09\/Agentcore-1400x796.png 1400w, https:\/\/clickup.com\/blog\/wp-content\/uploads\/2026\/09\/Agentcore-300x171.png 300w, https:\/\/clickup.com\/blog\/wp-content\/uploads\/2026\/09\/Agentcore-768x437.png 768w, https:\/\/clickup.com\/blog\/wp-content\/uploads\/2026\/09\/Agentcore-1536x874.png 1536w, https:\/\/clickup.com\/blog\/wp-content\/uploads\/2026\/09\/Agentcore-700x398.png 700w, https:\/\/clickup.com\/blog\/wp-content\/uploads\/2026\/09\/Agentcore.png 1612w\" sizes=\"auto, (max-width: 1400px) 100vw, 1400px\" \/><figcaption class=\"wp-element-caption\"><em>via <\/em><a href=\"https:\/\/docs.aws.amazon.com\/bedrock-agentcore\/latest\/devguide\/gateway.html\" target=\"_blank\" rel=\"noreferrer noopener nofollow\"><em>AWS<\/em><\/a><\/figcaption><\/figure>\n<\/div>\n\n\n<p>Amazon Bedrock AgentCore Gateway is AWS&#8217;s fully managed option, so there&#8217;s nothing to host or scale. It gives agents one endpoint for their tools. AgentCore also turns OpenAPI and Smithy specs, Lambda functions, and existing MCP servers into MCP tools without custom code. It includes one-click integrations for Salesforce, Slack, Jira, Asana, and Zendesk.<\/p>\n\n\n\n<p>Tool search is built in. If you turn on semantic search when you create a gateway, agents get a search tool (<code>x_amz_bedrock_agentcore_search<\/code>) they can query in plain language. That way, they pull in only the tools a task needs instead of loading the full catalog. It&#8217;s the same on-demand pattern Anthropic describes, run at the gateway instead of in the client.<\/p>\n\n\n\n<p>Authentication works in both directions. On the way in, the gateway checks who&#8217;s calling through AWS IAM or a JWT from your identity provider. On the way out, it signs in to each tool with OAuth, an API key, or an IAM role and adds those credentials itself, so agents never hold them. AgentCore Identity costs nothing extra when you use it through the gateway, and AgentCore Policy can check each tool call against rules written in Cedar.<\/p>\n\n\n\n<p>The gateway works with open-source frameworks, including CrewAI, LangGraph, LlamaIndex, and Strands Agents, and with any model. A June 2026 update added MCP prompts and resources, streaming and session management, elicitation for mid-task approvals, and OAuth on-behalf-of token exchange.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Standout features<\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Semantic tool search:<\/strong> Let agents find the right tools with a plain-language query instead of loading every definition<\/li>\n\n\n\n<li><strong>Zero-code tool conversion:<\/strong> Turn OpenAPI specs, Smithy models, Lambda functions, and existing MCP servers into MCP tools<\/li>\n\n\n\n<li><strong>Two-way authentication:<\/strong> Verify callers on the way in and add each tool&#8217;s credentials on the way out<\/li>\n\n\n\n<li><strong>One-click integrations:<\/strong> Connect Salesforce, Slack, Jira, Asana, and Zendesk without building a server<\/li>\n<\/ul>\n\n\n\n<h4 class=\"wp-block-heading\">Pricing<\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Free Tier:<\/strong> Up to $200 in AWS Free Tier credits for new customers<\/li>\n\n\n\n<li><strong>Tool calls (ListTools, InvokeTool, Ping):<\/strong> $0.005 per 1,000<\/li>\n\n\n\n<li><strong>Search API:<\/strong> $0.025 per 1,000<\/li>\n\n\n\n<li><strong>Tool indexing:<\/strong> $0.02 per 100 tools per month<\/li>\n\n\n\n<li><strong>AgentCore Identity:<\/strong> No extra charge when used through the gateway<\/li>\n<\/ul>\n\n\n\n<h4 class=\"wp-block-heading\">Ratings<\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>G2:<\/strong> Not enough reviews<\/li>\n\n\n\n<li><strong>Capterra:<\/strong> Not enough reviews<\/li>\n<\/ul>\n\n\n\n<p><strong>Where it taps out:<\/strong> It runs only on AWS, so you can&#8217;t self-host it. Pricing is usage-based across several AgentCore services, which makes monthly costs harder to predict than a flat fee. In AWS&#8217;s own example, an agent handling 50 million interactions a month, with one search and four tool calls each, costs about $2,250 a month, and search accounts for more than half of that. Semantic search is available in 18 AWS Regions. Each gateway accepts only the MCP protocol versions you configure, and observability runs through CloudWatch at separate cost.<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\"><div style=\"border: 3px solid #000000; border-radius: 0%; background-color: inherit; \" class=\"ub-styled-box ub-bordered-box wp-block-ub-styled-box\" id=\"ub-styled-box-e54025e9-35c6-4c9e-a48d-485286613e64\">\n<p id=\"ub-styled-box-bordered-content-\"><strong>Best for:<\/strong> Teams running agents on AWS that want tool search and credential handling without operating a gateway.<br><strong>Skip it if:<\/strong> You need to self-host, run across clouds, or want a flat, predictable monthly bill.<\/p>\n\n\n<\/div><\/blockquote>\n\n\n\n<h4 class=\"wp-block-heading\">What are real-life users saying about Amazon Bedrock AgentCore Gateway<\/h4>\n\n\n\n<p>A <a href=\"https:\/\/www.reddit.com\/r\/AI_Agents\/comments\/1mdu9z9\/my_experience_using_aws_agentcore\/\" type=\"link\" id=\"https:\/\/www.reddit.com\/r\/AI_Agents\/comments\/1mdu9z9\/my_experience_using_aws_agentcore\/\" target=\"_blank\" rel=\"noreferrer noopener nofollow\">user review<\/a> says:<\/p>\n\n\n\n<div class=\"cu-author-quote undefined\"><blockquote class=\"cu-author-quote__quote\"><p>The complexity comes from several angles: 1) users need to set up AWS credentials and environments; 2) developers must fully write and annotate their agent code to use AgentCore; and 3) context management requires specific programming models that may not work with every framework.<\/p><\/blockquote><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">5. Composio (Best for connecting agents to SaaS apps without running servers)<\/h3>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"582\" height=\"527\" src=\"https:\/\/clickup.com\/blog\/wp-content\/uploads\/2026\/09\/Screenshot-2026-09-24-at-1.38.44-PM.png\" alt=\"Composio MCP gateway\" class=\"wp-image-633208\" style=\"aspect-ratio:1.1043674207608147;width:726px;height:auto\" srcset=\"https:\/\/clickup.com\/blog\/wp-content\/uploads\/2026\/09\/Screenshot-2026-09-24-at-1.38.44-PM.png 582w, https:\/\/clickup.com\/blog\/wp-content\/uploads\/2026\/09\/Screenshot-2026-09-24-at-1.38.44-PM-300x272.png 300w\" sizes=\"auto, (max-width: 582px) 100vw, 582px\" \/><figcaption class=\"wp-element-caption\"><em>via <\/em><a href=\"https:\/\/composio.dev\/\" target=\"_blank\" rel=\"noreferrer noopener nofollow\"><em>Composio<\/em><\/a><\/figcaption><\/figure>\n<\/div>\n\n\n<p>Composio is a managed platform that connects agents to more than 1,500 apps, including Gmail, Slack, GitHub, HubSpot, and Salesforce. There are no servers to run. Your agent or AI client connects to one MCP URL, and Composio handles sign-in for each app, from OAuth flows and API keys to token refresh.<\/p>\n\n\n\n<p>Most of the gateway work happens in the Tool Router. You create a session for each user with the toolkits they need, and Composio returns a scoped MCP endpoint. Inside a session, you can pin an exact list of tools, block specific ones, or filter by MCP hints such as read-only or destructive. The tool can also search its catalog at runtime and load only the tools a task needs, which keeps the agent&#8217;s context small.<\/p>\n\n\n\n<p>Permissions can require a person to approve tool calls on every call or once per session, with per-tool always-allow or always-deny overrides. Sessions are created per user, so each person&#8217;s connected accounts stay separate, and one person can connect more than one account for the same app. If an app isn&#8217;t in the catalog but has an MCP server, you can add it as a custom server for free.<\/p>\n\n\n\n<p>It works with Claude, ChatGPT, Cursor, Claude Code, and any other MCP client, along with frameworks such as LangChain, LlamaIndex, CrewAI, and the OpenAI Agents SDK. For multi-step tasks, Composio offers a remote runtime where each execution runs in its own isolated sandbox. The company reports SOC 2 Type II compliance and ISO 27001:2022 certification.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Standout features<\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Managed auth:<\/strong> Handle OAuth, API keys, and token refresh for 1,500+ apps without building sign-in flows<\/li>\n\n\n\n<li><strong>Tool Router sessions:<\/strong> Give each user a scoped MCP endpoint with only the toolkits and tools they need<\/li>\n\n\n\n<li><strong>Runtime tool search:<\/strong> Search the full catalog and load only the tools a task needs<\/li>\n\n\n\n<li><strong>Approval controls:<\/strong> Require human approval on every call, once per session, or never, with per-tool overrides<\/li>\n<\/ul>\n\n\n\n<h4 class=\"wp-block-heading\">Pricing<\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Free:<\/strong> 100,000 tool calls\/month<\/li>\n\n\n\n<li><strong>Scale:<\/strong> $29\/month<\/li>\n\n\n\n<li><strong>Enterprise:<\/strong> Custom pricing<\/li>\n<\/ul>\n\n\n\n<h4 class=\"wp-block-heading\">Ratings<\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>G2:<\/strong> Not enough reviews<\/li>\n\n\n\n<li><strong>Capterra:<\/strong> Not enough reviews<\/li>\n<\/ul>\n\n\n\n<p><strong>Where it taps out:<\/strong> It&#8217;s a managed service, so your tool calls and users&#8217; stored credentials run through Composio&#8217;s cloud unless you set up a bring-your-own-cloud deployment. When you connect over MCP, the SDK&#8217;s tool-call hooks and schema changes don&#8217;t run, and custom tools defined in your own code aren&#8217;t available at the MCP endpoint. In May 2026, Composio <a href=\"https:\/\/composio.dev\/blog\/composio-may-2026-security-incident\" target=\"_blank\" rel=\"noreferrer noopener nofollow\">disclosed a security incident<\/a> that exposed about 0.3% of active connections, most of them GitHub, and required customers to rotate their API keys. Include its report in your security review.<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\"><div style=\"border: 3px solid #000000; border-radius: 0%; background-color: inherit; \" class=\"ub-styled-box ub-bordered-box wp-block-ub-styled-box\" id=\"ub-styled-box-6a9a6706-66a7-4f6f-bdae-5bb4841a8b00\">\n<p id=\"ub-styled-box-bordered-content-\"><strong>Best for:<\/strong> Teams whose agents need many SaaS apps and per-user sign-in, without running any servers.<br><strong>Skip it if:<\/strong> Your tools are mostly internal APIs, or your security policy doesn&#8217;t allow a third party to hold users&#8217; OAuth tokens.<\/p>\n\n\n<\/div><\/blockquote>\n\n\n\n<h4 class=\"wp-block-heading\">What are real-life users saying about Composio<\/h4>\n\n\n\n<p>A <a href=\"https:\/\/www.reddit.com\/r\/mcp\/comments\/1v5xegm\/most_best_mcp_gateway_lists_are_vendorwritten\/\" target=\"_blank\" rel=\"noreferrer noopener nofollow\">user review<\/a> says:<\/p>\n\n\n\n<div class=\"cu-author-quote undefined\"><blockquote class=\"cu-author-quote__quote\"><p>a managed MCP platform with a huge library, almost 1,000+ apps like Gmail and Slack. The big advantage is that you don\u2019t have to build and maintain every integration yourself, and Composio also supports self-hosting in VPC and embedded SDK for flexible deployment options.<\/p><\/blockquote><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">How Much Does an MCP Gateway Cost?<\/h2>\n\n\n\n<p>The price depends on whether you pay for managed usage or run the infrastructure yourself. <\/p>\n\n\n\n<p>Open-source gateways have no license fee, but you still pay for hosting, maintenance, and security. Managed gateways charge for tool calls, searches, control planes, or other usage.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td><strong>Cost line<\/strong><\/td><td><strong>Composio<\/strong><\/td><td><strong>Docker MCP Gateway<\/strong><\/td><td><strong>IBM ContextForge<\/strong><\/td><td><strong>Kong AI Gateway<\/strong><\/td><td><strong>Amazon Bedrock AgentCore Gateway<\/strong><\/td><\/tr><tr><td>Gateway<\/td><td>100,000 tool calls\/month free<\/td><td>Free, open source (MIT)<\/td><td>Free, open source (Apache 2.0)<\/td><td>From $25\/month per serverless control plane<\/td><td>No upfront fee or minimum<\/td><\/tr><tr><td>Paid usage<\/td><td>Scale: $29\/month, custom quotes for enterprises<\/td><td>Docker plans are separate from the open-source gateway<\/td><td>Your hosting and operations costs<\/td><td>$200\/month per additional 1M API requests<\/td><td>$0.005 per 1,000 API invocations<\/td><\/tr><tr><td>Tool filtering or search<\/td><td>Runtime search or fixed tool lists<\/td><td>Per-tool allowlists in profiles<\/td><td>Virtual servers with selected tools<\/td><td>Per-tool ACLs<\/td><td>$0.025 per 1,000 search calls; $0.02 per 100 tools indexed\/month<\/td><\/tr><tr><td>Authentication<\/td><td>Managed OAuth, API keys, and token refresh<\/td><td>Docker secrets and OAuth flows<\/td><td>Gateway and upstream authentication options<\/td><td>Kong authentication plugins<\/td><td>IAM, JWT, OAuth, API keys, and AgentCore Identity<\/td><\/tr><tr><td>Logs and observability<\/td><td>Execution logs and controls vary by plan<\/td><td>Built-in logging and call tracing<\/td><td>Admin logs and OpenTelemetry<\/td><td>MCP audit logs and metrics; platform audit logs are Enterprise-only<\/td><td>CloudWatch observability at separate rates<\/td><\/tr><tr><td>Main operating cost<\/td><td>Managed-service and usage dependence<\/td><td>Docker environment and paid team controls<\/td><td>Hosting, database, maintenance, and scaling<\/td><td>Kong plan limits and Enterprise features<\/td><td>Usage across Gateway, search, CloudWatch, and connected AWS services<\/td><\/tr><\/tbody><\/table><figcaption class=\"wp-element-caption\"><em>Pricing and features reflect what was available at the time of writing and can change. Always verify current details on each tool\u2019s official website before making a decision.<\/em><\/figcaption><\/figure>\n\n\n\n<p><strong>Which gateway costs less depends on what you already run.<\/strong> Composio and Amazon Bedrock AgentCore Gateway shift more of the infrastructure work to the vendor and charge by usage. Docker MCP Gateway and IBM ContextForge have no license fee, but you take on the cost of hosting and maintaining them. Kong makes the most financial sense when your team already runs Kong, because adopting it only for MCP adds a new platform and licensing cost.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">How to Choose an MCP Gateway<\/h2>\n\n\n\n<p>Pricing narrows the list, but it rarely makes the decision for you. <\/p>\n\n\n\n<p>A better starting point is the problem that sent you looking. Most teams arrive with one of two: they can&#8217;t see or control who calls which tool, or their agents load so many tool definitions that they start picking the wrong ones. Some have both. <\/p>\n\n\n\n<p>Once you know which problem hurts most, you know what the gateway has to do well and which features you can live without.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Start with where your agents already run<\/h3>\n\n\n\n<p>The five gateways in this guide cover the same basics, so the deciding factor is usually the stack you already have.<\/p>\n\n\n\n<p>If your agents mostly act inside SaaS apps on behalf of individual users, <strong>Composio<\/strong> saves the most work, because it manages each user&#8217;s OAuth connections for you. The trade-off is that those credentials live in Composio&#8217;s cloud, which your security team will want to review.<\/p>\n\n\n\n<p>For teams struggling with disconnected workflows spread across developer laptops, <strong>Docker MCP Gateway<\/strong> is the natural first step. It suits teams already on Docker Desktop, runs every server in its own container, and lets the whole team share one profile. If you later need team-wide governance, you&#8217;ll need a separate conversation with Docker Sales.<\/p>\n\n\n\n<p>Platform teams that prefer to own their infrastructure will lean toward <strong>IBM ContextForge<\/strong>. Its virtual servers give each team its own tool set, and it can turn internal REST and gRPC services into MCP tools. You also take on the patching, scaling, and on-call work that comes with self-hosting.<\/p>\n\n\n\n<p><strong>Kong AI Gateway<\/strong> puts MCP traffic under the same policies your team already runs for its APIs. If you need SSO or platform audit logs, budget for Enterprise, since both are Enterprise-only.<\/p>\n\n\n\n<p>For teams building on AWS, <strong>Amazon Bedrock AgentCore Gateway<\/strong> keeps everything managed and adds semantic tool search at the gateway. Model the usage-based bill early, because search calls, tool calls, and CloudWatch are each billed separately.<\/p>\n\n\n\n<p>If you run a handful of stable servers for a small team, you may not need a gateway yet. A shared configuration in version control plus a secrets manager can cover the same ground until you need per-team permissions or central logs.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">What should you check before you commit?<\/h3>\n\n\n\n<p>Once you have a front-runner, test it against your own setup before signing anything. Feature pages often skip the details that matter later, so walk through a few specific questions with your security and platform leads:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Access:<\/strong> Can you set permissions per user, team, or agent, or only for the whole gateway?<\/li>\n\n\n\n<li><strong>Context:<\/strong> Does it filter tools with allowlists or virtual servers, search them at call time, or both?<\/li>\n\n\n\n<li><strong>Credentials:<\/strong> Does it support the OAuth flows, API keys, and IAM roles your servers need, and where does it store them?<\/li>\n\n\n\n<li><strong>Logs:<\/strong> Does it record individual tool calls, or only account and configuration changes?<\/li>\n\n\n\n<li><strong>Failures:<\/strong> What does an agent see when an upstream server times out, and can a retried request run a write twice?<\/li>\n<\/ul>\n\n\n\n<p>The answers usually settle it. If a gateway only records setting changes and can&#8217;t show you which tools your agents actually used, it won&#8217;t hold up in an audit. And if it connects your servers without trimming their tool lists, your agents still load every tool definition, so your token use stays the same.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">How Do You Migrate Existing MCP Servers to a Gateway?<\/h2>\n\n\n\n<p>The safest rollout moves one low-risk server first and keeps the old path working until the new one proves reliable. <\/p>\n\n\n\n<p><strong>Begin with an inventory<\/strong><\/p>\n\n\n\n<p>For each server, note who owns it, which tools it offers, what data it can reach, and roughly how many tokens its tool definitions cost. This is also the moment to prune. Most catalogs carry tools that no one has called in months, and removing them before migration shrinks what you&#8217;ll have to govern. <\/p>\n\n\n\n<p><strong>Group servers by trust boundary<\/strong><\/p>\n\n\n\n<p>Put servers that read private data, servers that handle untrusted content, and servers that can send data outward in separate tool sets, so one agent never holds all three. That combination is what made Invariant Labs&#8217; <a href=\"https:\/\/invariantlabs.ai\/blog\/mcp-github-vulnerability\" target=\"_blank\" rel=\"noreferrer noopener nofollow\">GitHub MCP prompt-injection demo<\/a> possible. Also, confirm that each server is still maintained. Several of the original MCP reference servers, including GitHub and Slack, now live in an <a href=\"https:\/\/github.com\/modelcontextprotocol\/servers-archived\" type=\"link\" id=\"https:\/\/github.com\/modelcontextprotocol\/servers-archived\" target=\"_blank\" rel=\"noreferrer noopener nofollow\">archive<\/a> and no longer receive updates.<\/p>\n\n\n\n<p><strong>With the groups in place, run a short pilot <\/strong><\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Route read-only servers through the gateway first, while write-capable servers stay on direct connections<\/li>\n\n\n\n<li>Connect one test client and confirm it can sign in, list the expected tools, and reach the right servers<\/li>\n\n\n\n<li>Run the same tasks through the direct path and the gateway path, then compare results, latency, and context size<\/li>\n\n\n\n<li>Shut down an upstream server on purpose and check that the agent gets a clear error and that no write runs twice<\/li>\n<\/ol>\n\n\n\n<p>Once the pilot passes, move write-capable servers over one at a time. Set rollback criteria before each move, so you don&#8217;t have to decide whether to revert in the middle of an incident. Keep the direct configuration in place until the gateway path has run cleanly for a few weeks, then revoke the old credentials and client connections.<\/p>\n\n\n\n<p><strong>One rule applies to whichever gateway you choose. The MCP specification <a href=\"https:\/\/modelcontextprotocol.io\/specification\/latest\/basic\/security_best_practices\" target=\"_blank\" rel=\"noreferrer noopener nofollow\">forbids token passthrough<\/a>. <\/strong>The gateway should accept only tokens issued for it, and it should call downstream servers with their own separately authorized credentials instead of forwarding the client&#8217;s token. Check that your gateway&#8217;s configuration follows this rule before you move production traffic.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">How Does ClickUp Work With an MCP Gateway?<\/h2>\n\n\n\n<p>ClickUp connects to MCP from both sides of the gateway. <\/p>\n\n\n\n<p>AI apps outside ClickUp, like Claude, Cursor, and ChatGPT, reach your workspace through the ClickUp MCP server, which sits behind your gateway like any other server. Inside ClickUp, <a href=\"https:\/\/clickup.com\/brain\/agents\" target=\"_blank\" rel=\"noreferrer noopener\">Super Agents<\/a> and <a href=\"https:\/\/clickup.com\/brain\" target=\"_blank\" rel=\"noreferrer noopener\">Brain\u00b2<\/a> can use tools from external MCP servers you connect to, and your gateway can be one of them.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Put the ClickUp MCP server behind your gateway<\/h3>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1400\" height=\"807\" src=\"https:\/\/clickup.com\/blog\/wp-content\/uploads\/2026\/09\/ClickUp-MCP-Connector-1400x807.png\" alt=\"ClickUp MCP Connector\" class=\"wp-image-630341\" srcset=\"https:\/\/clickup.com\/blog\/wp-content\/uploads\/2026\/09\/ClickUp-MCP-Connector-1400x807.png 1400w, https:\/\/clickup.com\/blog\/wp-content\/uploads\/2026\/09\/ClickUp-MCP-Connector-300x173.png 300w, https:\/\/clickup.com\/blog\/wp-content\/uploads\/2026\/09\/ClickUp-MCP-Connector-768x443.png 768w, https:\/\/clickup.com\/blog\/wp-content\/uploads\/2026\/09\/ClickUp-MCP-Connector-1536x886.png 1536w, https:\/\/clickup.com\/blog\/wp-content\/uploads\/2026\/09\/ClickUp-MCP-Connector-700x404.png 700w, https:\/\/clickup.com\/blog\/wp-content\/uploads\/2026\/09\/ClickUp-MCP-Connector.png 1738w\" sizes=\"auto, (max-width: 1400px) 100vw, 1400px\" \/><figcaption class=\"wp-element-caption\">Connect Claude, Cursor, or ChatGPT to your workspace through the ClickUp MCP server<\/figcaption><\/figure>\n<\/div>\n\n\n<p>The <a href=\"https:\/\/developer.clickup.com\/docs\/connect-an-ai-assistant-to-clickups-mcp-server\" target=\"_blank\" rel=\"noreferrer noopener\">ClickUp MCP server<\/a> runs at <code>https:\/\/mcp.clickup.com\/mcp<\/code> and is available on every plan, including Free Forever. It only accepts OAuth, so your gateway never has to store personal API keys or rotate them when someone leaves. If you&#8217;re building your own client, it has to support OAuth 2.1 with PKCE. ClickUp keeps an allowlist of approved clients, so any client not on the list needs to be submitted for review first.<\/p>\n\n\n\n<p>Once connected, your agents can create and route tasks, build status updates from tasks and Docs, log time, search tasks, Docs, and comments, and summarize Chat threads. That way an agent can look up the project context itself instead of needing it pasted into every prompt.<\/p>\n\n\n\n<p>Rate limits deserve a closer look behind a gateway. The limit covers your whole workspace, and every connected client uses up the same shared allowance. Without the Everything AI add-on, ClickUp caps MCP calls per rolling 24 hours, from 100 on Free Forever up to 5,000 on Enterprise.<\/p>\n\n\n\n<p>With the add-on, MCP requests follow the public API&#8217;s per-minute limits instead. Those range from 100 requests per minute on Free Forever, Unlimited, and Business up to 10,000 on Enterprise. ClickUp doesn&#8217;t show MCP usage yet. If several teams reach ClickUp through one gateway, set per-team limits at the gateway so one busy agent can&#8217;t use up the allowance for everyone else.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Connect Super Agents to your MCP servers<\/h3>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"829\" height=\"475\" src=\"https:\/\/clickup.com\/blog\/wp-content\/uploads\/2026\/09\/agent-skills-1.png\" alt=\"super agent\" class=\"wp-image-633244\" srcset=\"https:\/\/clickup.com\/blog\/wp-content\/uploads\/2026\/09\/agent-skills-1.png 829w, https:\/\/clickup.com\/blog\/wp-content\/uploads\/2026\/09\/agent-skills-1-300x172.png 300w, https:\/\/clickup.com\/blog\/wp-content\/uploads\/2026\/09\/agent-skills-1-768x440.png 768w, https:\/\/clickup.com\/blog\/wp-content\/uploads\/2026\/09\/agent-skills-1-700x401.png 700w\" sizes=\"auto, (max-width: 829px) 100vw, 829px\" \/><figcaption class=\"wp-element-caption\">Choose which MCP tools each Super Agent can use, from personal or workspace connections<\/figcaption><\/figure>\n<\/div>\n\n\n<p>Going the other way, you can connect external MCP servers from the <a href=\"https:\/\/help.clickup.com\/hc\/en-us\/articles\/38503227973655-Connect-an-MCP-server-to-your-Workspace\" type=\"link\" id=\"https:\/\/help.clickup.com\/hc\/en-us\/articles\/38503227973655-Connect-an-MCP-server-to-your-Workspace\" target=\"_blank\" rel=\"noreferrer noopener\">ClickUp App Center<\/a>, either for the whole workspace, or just for yourself. Admins decide who can add each connection type. After a server is connected, you choose which of its tools each Super Agent gets: all of them, or specific ones. That&#8217;s the same idea as trimming tool lists earlier in this guide, applied to the agents inside your workspace.<\/p>\n\n\n\n<p>If the server you connect to is your gateway, check two details first. ClickUp connects from changing cloud IP addresses, so an IP allowlist won&#8217;t let it through. Your gateway also needs a public URL secured with OAuth or an API key. ClickUp&#8217;s workspace audit logs record who connected, updated, or disconnected a server. For a record of which tools each agent actually called, you&#8217;ll need your gateway&#8217;s logs.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Track the rollout in ClickUp<\/h3>\n\n\n\n<p>The inventory and pilot steps above produce lots of small decisions that are easy to lose track of. Add each server as a task in a List, with Custom Fields for owner, data access, trust group, and token cost. Then write the rollback criteria in a Doc linked to each migration task. If a pilot fails or an upstream server gets archived, the owner and the full history are all in one place.<\/p>\n\n\n<div class=\"pricing-wrapper\">\n<!-- hide toggle for now -->\n<div class=\"pricing-toggle-container\" style=\"display: none;\">\n    <div class=\"pricing-toggle isMonthly\">\n        <button class=\"pricing-toggle-item \" id=\"yearly-toggle\">\n            Yearly\n        <\/button>\n        <button class=\"pricing-toggle-item pricing-toggle-active\" id=\"monthly-toggle\">\n            Monthly\n        <\/button>\n    <\/div>\n<\/div>\n\n<!-- Dynamic Pricing Cards -->\n    <div class=\"pricing-card-container\">\n                    <div>\n    <div class=\"pricing-card pricing-card-free-forever\" style=\"--primary-color: 0, 184, 132\">\n        <div class=\"pricing-tier\">\n            free forever\n                    <\/div>\n                <div class=\"pricing-price\">\n            <span class=\"pricing-price-wrapper\">\n                <span class=\"pricing-price-yearly\" data-price=\"Free\">\n                                            Free\n                                    <\/span>\n                <span class=\"pricing-price-monthly\" data-price=\"Free\">\n                                            Free\n                                    <\/span>\n            <\/span>\n            <div class=\"tier-foot-note\"><\/div>\n        <\/div>\n                        <div class=\"pricing-cta-button-wrapper\">\n                            <!-- Render <button> for other tiers -->\n                <button class=\"cta-button cu-button button\"\n                        data-beta\n                        data-ga-click-tracking\n                        ga-event=\"click web\"\n                        ga-label=\"blog pricing table\"\n                        data-ga-tracking=\"ftmlead\"\n                        ga-category=\"get started - free forever\"\n                                                    onclick=\"showSignUpOverlay(undefined);\"\n                                                >\n                        Get Started\n                <\/button>\n                    <\/div>\n        <div class=\"list-title\">Key Features:<\/div>\n        <div class=\"pricing-features-list\">\n                                            <div class=\"pricing-feature\">\n                    <svg class=\"pricing-card-check-icon\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\" aria-hidden=\"true\"><path d=\"M5.25 9.375L7.875 12L12.75 6\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><\/path><\/svg>\n                    <span>60MB Storage<\/span>\n                <\/div>\n                                <div class=\"pricing-feature\">\n                    <svg class=\"pricing-card-check-icon\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\" aria-hidden=\"true\"><path d=\"M5.25 9.375L7.875 12L12.75 6\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><\/path><\/svg>\n                    <span>Unlimited Tasks<\/span>\n                <\/div>\n                                <div class=\"pricing-feature\">\n                    <svg class=\"pricing-card-check-icon\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\" aria-hidden=\"true\"><path d=\"M5.25 9.375L7.875 12L12.75 6\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><\/path><\/svg>\n                    <span>Unlimited Free Plan Members<\/span>\n                <\/div>\n                                    <\/div>\n    <\/div>\n<\/div>\n                    <div>\n    <div class=\"pricing-card pricing-card-unlimited\" style=\"--primary-color: 250, 18, 227\">\n        <div class=\"pricing-tier\">\n            unlimited\n                    <\/div>\n                <div class=\"pricing-price\">\n            <span class=\"pricing-price-wrapper\">\n                <span class=\"pricing-price-yearly\" data-price=\"$7\">\n                                            $7\n                                    <\/span>\n                <span class=\"pricing-price-monthly\" data-price=\"$10\">\n                                            $10\n                                    <\/span>\n            <\/span>\n            <div class=\"tier-foot-note\">per user per month<\/div>\n        <\/div>\n                        <div class=\"pricing-cta-button-wrapper\">\n                            <!-- Render <button> for other tiers -->\n                <button class=\"cta-button cu-button button\"\n                        data-beta\n                        data-ga-click-tracking\n                        ga-event=\"click web\"\n                        ga-label=\"blog pricing table\"\n                        data-ga-tracking=\"ftmlead\"\n                        ga-category=\"get started - unlimited\n                        \"\n                                                    onclick=\"showSignUpOverlay({ free_trial_plan: 'unlimited' });\"\n                                                >\n                        Get started\n                <\/button>\n                    <\/div>\n        <div class=\"list-title\">Everything in Free Forever, plus:<\/div>\n        <div class=\"pricing-features-list\">\n                                            <div class=\"pricing-feature\">\n                    <svg class=\"pricing-card-check-icon\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\" aria-hidden=\"true\"><path d=\"M5.25 9.375L7.875 12L12.75 6\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><\/path><\/svg>\n                    <span>Unlimited Storage<\/span>\n                <\/div>\n                                <div class=\"pricing-feature\">\n                    <svg class=\"pricing-card-check-icon\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\" aria-hidden=\"true\"><path d=\"M5.25 9.375L7.875 12L12.75 6\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><\/path><\/svg>\n                    <span>ClickUp Chat<\/span>\n                <\/div>\n                                <div class=\"pricing-feature\">\n                    <svg class=\"pricing-card-check-icon\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\" aria-hidden=\"true\"><path d=\"M5.25 9.375L7.875 12L12.75 6\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><\/path><\/svg>\n                    <span>Native Time Tracking<\/span>\n                <\/div>\n                                    <\/div>\n    <\/div>\n<\/div>\n                    <div>\n    <div class=\"pricing-card pricing-card-business\" style=\"--primary-color: 31, 124, 255\">\n        <div class=\"pricing-tier\">\n            business\n                            <div class=\"popular popular-badge\">\n                    Popular\n                <\/div>\n                    <\/div>\n                <div class=\"pricing-price\">\n            <span class=\"pricing-price-wrapper\">\n                <span class=\"pricing-price-yearly\" data-price=\"$12\">\n                                            $12\n                                    <\/span>\n                <span class=\"pricing-price-monthly\" data-price=\"$19\">\n                                            $19\n                                    <\/span>\n            <\/span>\n            <div class=\"tier-foot-note\">per user per month<\/div>\n        <\/div>\n                        <div class=\"pricing-cta-button-wrapper\">\n                            <!-- Render <button> for other tiers -->\n                <button class=\"cta-button cu-button button\"\n                        data-beta\n                        data-ga-click-tracking\n                        ga-event=\"click web\"\n                        ga-label=\"blog pricing table\"\n                        data-ga-tracking=\"ftmlead\"\n                        ga-category=\"get started - business\n                        \"\n                                                    onclick=\"showSignUpOverlay({ free_trial_plan: 'business' });\"\n                                                >\n                        Get started\n                <\/button>\n                    <\/div>\n        <div class=\"list-title\">Everything in Unlimited, plus:<\/div>\n        <div class=\"pricing-features-list\">\n                                            <div class=\"pricing-feature\">\n                    <svg class=\"pricing-card-check-icon\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\" aria-hidden=\"true\"><circle cx=\"9\" cy=\"9\" r=\"7.5\" fill=\"currentColor\"><\/circle><path d=\"M6.75 9L8.25 10.5L11.25 7.5\" stroke=\"#202020\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><\/path><\/svg>\n                    <span>Google SSO<\/span>\n                <\/div>\n                                <div class=\"pricing-feature\">\n                    <svg class=\"pricing-card-check-icon\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\" aria-hidden=\"true\"><circle cx=\"9\" cy=\"9\" r=\"7.5\" fill=\"currentColor\"><\/circle><path d=\"M6.75 9L8.25 10.5L11.25 7.5\" stroke=\"#202020\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><\/path><\/svg>\n                    <span>Custom Exporting<\/span>\n                <\/div>\n                                <div class=\"pricing-feature\">\n                    <svg class=\"pricing-card-check-icon\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\" aria-hidden=\"true\"><circle cx=\"9\" cy=\"9\" r=\"7.5\" fill=\"currentColor\"><\/circle><path d=\"M6.75 9L8.25 10.5L11.25 7.5\" stroke=\"#202020\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><\/path><\/svg>\n                    <span>5K Monthly Automations<\/span>\n                <\/div>\n                                    <\/div>\n    <\/div>\n<\/div>\n                    <div>\n    <div class=\"pricing-card pricing-card-enterprise\" style=\"--primary-color: 44, 42, 65\">\n        <div class=\"pricing-tier\">\n            enterprise\n                    <\/div>\n                            <div class=\"pricing-explanation-enterprise\">Get a Custom Demo<\/div>\n                <div class=\"pricing-cta-button-wrapper\">\n                            <!-- Render <a> for Enterprise -->\n                <a class=\"cta-button button\"\n                href=\"https:\/\/clickup.com\/contact\/contact-sales\"\n                target=\"_blank\"\n                rel=\"noopener noreferrer\"\n                data-ga-click-tracking\n                ga-event=\"click web\"\n                ga-label=\"blog pricing table\"\n                data-ga-tracking=\"ftmlead\"\n                ga-category=\"contact sales - enterprise\">\n                    Contact sales\n                <\/a>\n                    <\/div>\n        <div class=\"list-title\">Everything in Business, plus:<\/div>\n        <div class=\"pricing-features-list\">\n                                            <div class=\"pricing-feature\">\n                    <svg class=\"pricing-card-check-icon\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\" aria-hidden=\"true\"><path d=\"M5.25 9.375L7.875 12L12.75 6\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><\/path><\/svg>\n                    <span>White Labeling<\/span>\n                <\/div>\n                                <div class=\"pricing-feature\">\n                    <svg class=\"pricing-card-check-icon\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\" aria-hidden=\"true\"><path d=\"M5.25 9.375L7.875 12L12.75 6\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><\/path><\/svg>\n                    <span>Live Onboarding Training<\/span>\n                <\/div>\n                                <div class=\"pricing-feature\">\n                    <svg class=\"pricing-card-check-icon\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\" aria-hidden=\"true\"><path d=\"M5.25 9.375L7.875 12L12.75 6\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><\/path><\/svg>\n                    <span>250K Monthly Automations<\/span>\n                <\/div>\n                                    <\/div>\n    <\/div>\n<\/div>\n            <\/div>\n\n<div class=\"cta-see-more-button-wrapper\">\n    <a class=\"cta-see-more-button\"\n    href=\"https:\/\/clickup.com\/pricing\"\n    target=\"_blank\"\n    rel=\"noopener noreferrer\"\n    data-ga-click-tracking\n    ga-event=\"click web\"\n    ga-label=\"blog pricing table\"\n    ga-category=\"see more features\"\n    data-ga-tracking=\"ftmlead\">\n        See more features\n    <\/a>\n    <\/div>\n<div class=\"pricing-disclaimer\">* Prices when billed annually<\/div>\n<\/div>\n\n<div class=\"ai-pricing-callout\">\n    <div class=\"ai-pricing-callout__content\">\n        <div class=\"ai-pricing-callout__text\">\n            <div class=\"ai-pricing-callout__title\">The world's most complete work AI, starting at $9 per month<\/div>\n            <div class=\"ai-pricing-callout__subtitle\">ClickUp Brain is a no Brainer. One AI to manage your work, at a fraction of the cost.<\/div>\n        <\/div>\n        <a href=\"https:\/\/app.clickup.com\/signup?product=ai&ai=true\"\n           class=\"ai-pricing-callout__cta\"\n           data-ga-click-tracking\n           ga-event=\"click web\"\n           ga-category=\"Try for free\"\n           ga-label=\"blog pricing table\">\n            Try for free\n        <\/a>\n    <\/div>\n<\/div>\n\n\n\n<script>\ndocument.addEventListener('DOMContentLoaded', function () {\n    const monthlyToggle = document.getElementById('monthly-toggle');\n    const yearlyToggle = document.getElementById('yearly-toggle');\n    const pricingCards = document.querySelectorAll('.pricing-card');\n    const pricingToggle = document.querySelector('.pricing-toggle');\n\n    function togglePricing(isYearly) {\n        pricingCards.forEach(card => {\n            const monthlyPrice = card.querySelector('.pricing-price-monthly');\n            const yearlyPrice = card.querySelector('.pricing-price-yearly');\n\n            if (monthlyPrice && yearlyPrice) {\n                yearlyPrice.style.display = isYearly ? 'inline' : 'none';\n                monthlyPrice.style.display = isYearly ? 'none' : 'inline';\n            }\n        });\n\n        pricingToggle.classList.toggle('isMonthly', !isYearly);\n        yearlyToggle.classList.toggle('pricing-toggle-active', isYearly);\n        monthlyToggle.classList.toggle('pricing-toggle-active', !isYearly);\n    }\n\n    monthlyToggle.addEventListener('click', function () {\n        togglePricing(false);\n    });\n\n    yearlyToggle.addEventListener('click', function () {\n        togglePricing(true);\n    });\n\n\n    \/\/togglePricing(true);\n    \/\/ default to yearly pricing\n    togglePricing(true);\n});\n\n<\/script>\n\n<script>\nfunction sessionStorageAvaiable() {\n\ttry {\n\t\tsessionStorage.setItem('pricing plans test', 'pricing plans test');\n\t\tsessionStorage.removeItem('pricing plans test');\n\t\treturn true;\n\t} catch (e) {\n\t\treturn false;\n\t}\n}\n\nfunction showSignUpOverlay(params) {\n\tdocument.querySelector('body').classList.add('is-mail-catcher');\n\n\tif(sessionStorageAvaiable() && params) {\n\t\tconst redirectParamsCheck = sessionStorage.getItem('redirectParams', JSON.stringify(params));\n\t\t\/\/ doesnt exist\n\t\tif(!redirectParamsCheck) {\n\t\t\tsessionStorage.setItem('redirectParams', JSON.stringify(params));\n\t\t\/\/ does exist\n\t\t} else {\n\t\t\tconst redirectParams = sessionStorage.getItem('redirectParams');\n\t\t\tconst redirectParamsObject = JSON.parse(redirectParams);\n\t\t\t\/\/ does exist and already has free_trial_plan\n\t\t\tif(redirectParamsObject.free_trial_plan) {\n\t\t\t\tredirectParamsObject.free_trial_plan = params.free_trial_plan;\n\t\t\t\treturn sessionStorage.setItem('redirectParams', JSON.stringify(redirectParamsObject));\n\t\t\t}\n\t\t\t\/\/ does exist and does not have free_trial_plan maintin existing params and add new params\n\t\t\tsessionStorage.setItem('redirectParams', JSON.stringify({...redirectParamsObject, ...params}));\n\t\t}\n\t}\n}\n<\/script>\n\n\n\n\n<h2 class=\"wp-block-heading\">Choose the Gateway That Fits the Problem You Have<\/h2>\n\n\n\n<p>Every section of this guide comes back to the same two jobs.<\/p>\n\n\n\n<p>The first is control: one endpoint, one place for credentials, and one record of which agent called which tool. All five gateways in this guide cover that in some form, and the bigger difference is how much of the infrastructure you run yourself. The second job is keeping each agent&#8217;s tool list small, and a gateway only helps there when you set up filtering or search.<\/p>\n\n\n\n<p>Before you sign anything, count your tools and measure how many tokens their definitions use. <\/p>\n\n\n\n<p>Cut the ones no one calls, group the rest by trust boundary, and move one read-only server through the gateway first. If ClickUp is one of those servers, connect it through the ClickUp MCP server and see how an agent handles your tasks, Docs, and Chat with the full project context.<\/p>\n\n\n\n<div class=\"wp-block-cu-buttons-purple-button-improved wp-block-cu-buttons\"><a href=\"https:\/\/app.clickup.com\/signup\" class=\"cu-button cu-button--purple cu-button--improved\">Get started with ClickUp<\/a><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Frequently Asked Questions About MCP Gateways<\/h2>\n\n\n\n<div class=\"schema-faq wp-block-yoast-faq-block\"><div class=\"schema-faq-section\" id=\"faq-question-1790249408581\"><h3 class=\"schema-faq-question\">What is the best MCP gateway?<\/h3> <p class=\"schema-faq-answer\">The best MCP gateway depends on where your agents already run. Docker MCP Gateway fits local development. IBM ContextForge fits teams that want to self-host. Kong AI Gateway fits teams already on Kong, and Amazon Bedrock AgentCore Gateway fits agents on AWS. Composio fits agents working across many SaaS apps. For regulated industries, look for self-hosting or a private deployment option, per-tool access controls, and logs of individual tool calls.<\/p> <\/div> <div class=\"schema-faq-section\" id=\"faq-question-1790249420108\"><h3 class=\"schema-faq-question\">Is MCP an API gateway?<\/h3> <p class=\"schema-faq-answer\">No. Model Context Protocol is a specification that defines how AI apps connect to tools and data. An MCP gateway is software built on that specification. It sits between agents and MCP servers and handles access, credentials, and logging. It works like HTTP and an API gateway: HTTP sets the rules for requests, and the gateway decides which requests get through.<\/p> <\/div> <div class=\"schema-faq-section\" id=\"faq-question-1790249429608\"><h3 class=\"schema-faq-question\">Do you need an MCP gateway?<\/h3> <p class=\"schema-faq-answer\">You need an MCP gateway if you want to control who can call which tools across several servers, or keep a central record of what agents did. If a small team runs a handful of stable servers, a shared configuration in version control plus a secrets manager covers most of the same ground. A gateway starts to pay off when you need per-team tool access or one place to manage credentials.<\/p> <\/div> <div class=\"schema-faq-section\" id=\"faq-question-1790249440574\"><h3 class=\"schema-faq-question\">Are MCP servers secure behind a gateway?<\/h3> <p class=\"schema-faq-answer\">A gateway makes MCP servers easier to secure. It doesn&#8217;t make them safe on its own. It keeps credentials in one place, limits which tools each caller can use, and logs calls centrally. Prompt injection can still arrive through a trusted server, as Invariant Labs showed with GitHub&#8217;s MCP server. Tools that read private data, handle untrusted content, or send data out should be kept in separate tool sets. Make sure the gateway never forwards a client&#8217;s token. And stop using servers that no longer receive updates.<\/p> <\/div> <div class=\"schema-faq-section\" id=\"faq-question-1790249453301\"><h3 class=\"schema-faq-question\">Does tool search replace access control?<\/h3> <p class=\"schema-faq-answer\">No. Tool search decides which tools an agent sees for a task. Access control decides whether that agent is allowed to call them. Amazon Bedrock AgentCore Gateway, for example, handles semantic search and authentication as separate features. Run search only across the tools a caller is allowed to use, and check permissions again when the tool actually runs. If hiding a tool from search is its only protection, it isn&#8217;t protected.<\/p> <\/div> <div class=\"schema-faq-section\" id=\"faq-question-1790249467324\"><h3 class=\"schema-faq-question\">What should MCP gateway audit logs record?<\/h3> <p class=\"schema-faq-answer\">MCP gateway audit logs should record who made each call, which agent and tool were involved, which server handled it, whether the call was allowed or denied, when it happened, and what came back. Kong&#8217;s AI MCP Proxy plugin, for example, logs every allowed and denied tool access attempt. Before you buy, confirm that the logs cover individual tool calls and not just account and configuration changes, then check how long they&#8217;re kept and whether you can export them.<\/p> <\/div> <\/div>\n","protected":false},"excerpt":{"rendered":"<p>Compare five MCP gateways (Docker, IBM ContextForge, Kong, Amazon Bedrock AgentCore, and Composio) by pricing and controls, and learn how to move your servers behind one safely.<\/p>\n","protected":false},"author":132,"featured_media":630341,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"cu_sticky_sidebar_cta_is_visible":true,"cu_sticky_sidebar_cta_title":"Start using ClickUp today","cu_sticky_sidebar_cta_bullet_1":"Manage all your work in one place","cu_sticky_sidebar_cta_bullet_2":"Collaborate with your team","cu_sticky_sidebar_cta_bullet_3":"Use ClickUp for FREE\u2014forever","cu_sticky_sidebar_cta_button_text":"Get Started","cu_sticky_sidebar_cta_button_link":"","footnotes":""},"categories":[1133],"tags":[],"class_list":["post-632928","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-ai"],"featured_image_src":"https:\/\/clickup.com\/blog\/wp-content\/uploads\/2026\/09\/ClickUp-MCP-Connector.png","author_info":{"display_name":"Manasi Nair","author_link":"https:\/\/clickup.com\/blog\/author\/manasi-nair\/"},"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>MCP Gateways: How to Manage Multiple MCP Servers at Scale<\/title>\n<meta name=\"description\" content=\"An MCP gateway solves governance, not context bloat. Compare Docker, ContextForge, Kong, and AWS AgentCore against their core features.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/clickup.com\/blog\/mcp-gateway\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"MCP Gateways: How to Manage Multiple MCP Servers at Scale\" \/>\n<meta property=\"og:description\" content=\"An MCP gateway solves governance, not context bloat. Compare Docker, ContextForge, Kong, and AWS AgentCore against their core features.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/clickup.com\/blog\/mcp-gateway\/\" \/>\n<meta property=\"og:site_name\" content=\"The ClickUp Blog\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/clickupprojectmanagement\" \/>\n<meta property=\"article:published_time\" content=\"2026-09-24T15:35:27+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-09-24T15:36:56+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/clickup.com\/blog\/wp-content\/uploads\/2026\/09\/ClickUp-MCP-Connector.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1738\" \/>\n\t<meta property=\"og:image:height\" content=\"1002\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Manasi Nair\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@clickup\" \/>\n<meta name=\"twitter:site\" content=\"@clickup\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Manasi Nair\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"33 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/clickup.com\\\/blog\\\/mcp-gateway\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/clickup.com\\\/blog\\\/mcp-gateway\\\/\"},\"author\":{\"name\":\"Manasi Nair\",\"@id\":\"https:\\\/\\\/clickup.com\\\/blog\\\/#\\\/schema\\\/person\\\/5087dc06a24a14aa29ae7a8c259f3c56\"},\"headline\":\"MCP Gateways: How to Manage Multiple MCP Servers at Scale\",\"datePublished\":\"2026-09-24T15:35:27+00:00\",\"dateModified\":\"2026-09-24T15:36:56+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/clickup.com\\\/blog\\\/mcp-gateway\\\/\"},\"wordCount\":6739,\"publisher\":{\"@id\":\"https:\\\/\\\/clickup.com\\\/blog\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/clickup.com\\\/blog\\\/mcp-gateway\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/clickup.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/ClickUp-MCP-Connector.png\",\"articleSection\":[\"AI\"],\"inLanguage\":\"en-US\"},{\"@type\":[\"WebPage\",\"FAQPage\"],\"@id\":\"https:\\\/\\\/clickup.com\\\/blog\\\/mcp-gateway\\\/\",\"url\":\"https:\\\/\\\/clickup.com\\\/blog\\\/mcp-gateway\\\/\",\"name\":\"MCP Gateways: How to Manage Multiple MCP Servers at Scale\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/clickup.com\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/clickup.com\\\/blog\\\/mcp-gateway\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/clickup.com\\\/blog\\\/mcp-gateway\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/clickup.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/ClickUp-MCP-Connector.png\",\"datePublished\":\"2026-09-24T15:35:27+00:00\",\"dateModified\":\"2026-09-24T15:36:56+00:00\",\"description\":\"An MCP gateway solves governance, not context bloat. Compare Docker, ContextForge, Kong, and AWS AgentCore against their core features.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/clickup.com\\\/blog\\\/mcp-gateway\\\/#breadcrumb\"},\"mainEntity\":[{\"@id\":\"https:\\\/\\\/clickup.com\\\/blog\\\/mcp-gateway\\\/#faq-question-1790249408581\"},{\"@id\":\"https:\\\/\\\/clickup.com\\\/blog\\\/mcp-gateway\\\/#faq-question-1790249420108\"},{\"@id\":\"https:\\\/\\\/clickup.com\\\/blog\\\/mcp-gateway\\\/#faq-question-1790249429608\"},{\"@id\":\"https:\\\/\\\/clickup.com\\\/blog\\\/mcp-gateway\\\/#faq-question-1790249440574\"},{\"@id\":\"https:\\\/\\\/clickup.com\\\/blog\\\/mcp-gateway\\\/#faq-question-1790249453301\"},{\"@id\":\"https:\\\/\\\/clickup.com\\\/blog\\\/mcp-gateway\\\/#faq-question-1790249467324\"}],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/clickup.com\\\/blog\\\/mcp-gateway\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/clickup.com\\\/blog\\\/mcp-gateway\\\/#primaryimage\",\"url\":\"https:\\\/\\\/clickup.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/ClickUp-MCP-Connector.png\",\"contentUrl\":\"https:\\\/\\\/clickup.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/ClickUp-MCP-Connector.png\",\"width\":1738,\"height\":1002,\"caption\":\"ClickUp MCP Connector\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/clickup.com\\\/blog\\\/mcp-gateway\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/clickup.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Hub\",\"item\":\"https:\\\/\\\/clickup.com\\\/blog\\\/hub\\\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"AI\",\"item\":\"https:\\\/\\\/clickup.com\\\/blog\\\/hub\\\/ai\\\/\"},{\"@type\":\"ListItem\",\"position\":4,\"name\":\"MCP Gateways: How to Manage Multiple MCP Servers at Scale\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/clickup.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/clickup.com\\\/blog\\\/\",\"name\":\"The ClickUp Blog\",\"description\":\"The ClickUp Blog\",\"publisher\":{\"@id\":\"https:\\\/\\\/clickup.com\\\/blog\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/clickup.com\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/clickup.com\\\/blog\\\/#organization\",\"name\":\"ClickUp\",\"url\":\"https:\\\/\\\/clickup.com\\\/blog\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/clickup.com\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/clickup.com\\\/blog\\\/wp-content\\\/uploads\\\/2025\\\/07\\\/logo-v3-clickup-light.jpg\",\"contentUrl\":\"https:\\\/\\\/clickup.com\\\/blog\\\/wp-content\\\/uploads\\\/2025\\\/07\\\/logo-v3-clickup-light.jpg\",\"width\":503,\"height\":125,\"caption\":\"ClickUp\"},\"image\":{\"@id\":\"https:\\\/\\\/clickup.com\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/clickupprojectmanagement\",\"https:\\\/\\\/x.com\\\/clickup\",\"https:\\\/\\\/www.linkedin.com\\\/company\\\/clickup-app\",\"https:\\\/\\\/en.wikipedia.org\\\/wiki\\\/ClickUp\",\"https:\\\/\\\/tiktok.com\\\/@clickup\",\"https:\\\/\\\/instagram.com\\\/clickup\",\"https:\\\/\\\/www.youtube.com\\\/@ClickUpProductivity\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/clickup.com\\\/blog\\\/#\\\/schema\\\/person\\\/5087dc06a24a14aa29ae7a8c259f3c56\",\"name\":\"Manasi Nair\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/a6f24700510d27ec593f1ec7aed35ac2fbeb103054122456305cb5b37b97b970?s=96&d=retro&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/a6f24700510d27ec593f1ec7aed35ac2fbeb103054122456305cb5b37b97b970?s=96&d=retro&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/a6f24700510d27ec593f1ec7aed35ac2fbeb103054122456305cb5b37b97b970?s=96&d=retro&r=g\",\"caption\":\"Manasi Nair\"},\"description\":\"Manasi is Managing Editor at ClickUp and a recent productivity tool convert. Prickly people person and avowed monotasker, Manasi enjoys long walks, fantasy novels, and easy mornings.\",\"sameAs\":[\"https:\\\/\\\/www.linkedin.com\\\/in\\\/manasi-n-10004636\"],\"url\":\"https:\\\/\\\/clickup.com\\\/blog\\\/author\\\/manasi-nair\\\/\"},{\"@type\":\"Question\",\"@id\":\"https:\\\/\\\/clickup.com\\\/blog\\\/mcp-gateway\\\/#faq-question-1790249408581\",\"position\":1,\"url\":\"https:\\\/\\\/clickup.com\\\/blog\\\/mcp-gateway\\\/#faq-question-1790249408581\",\"name\":\"What is the best MCP gateway?\",\"answerCount\":1,\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"The best MCP gateway depends on where your agents already run. Docker MCP Gateway fits local development. IBM ContextForge fits teams that want to self-host. Kong AI Gateway fits teams already on Kong, and Amazon Bedrock AgentCore Gateway fits agents on AWS. Composio fits agents working across many SaaS apps. For regulated industries, look for self-hosting or a private deployment option, per-tool access controls, and logs of individual tool calls.\",\"inLanguage\":\"en-US\"},\"inLanguage\":\"en-US\"},{\"@type\":\"Question\",\"@id\":\"https:\\\/\\\/clickup.com\\\/blog\\\/mcp-gateway\\\/#faq-question-1790249420108\",\"position\":2,\"url\":\"https:\\\/\\\/clickup.com\\\/blog\\\/mcp-gateway\\\/#faq-question-1790249420108\",\"name\":\"Is MCP an API gateway?\",\"answerCount\":1,\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"No. Model Context Protocol is a specification that defines how AI apps connect to tools and data. An MCP gateway is software built on that specification. It sits between agents and MCP servers and handles access, credentials, and logging. It works like HTTP and an API gateway: HTTP sets the rules for requests, and the gateway decides which requests get through.\",\"inLanguage\":\"en-US\"},\"inLanguage\":\"en-US\"},{\"@type\":\"Question\",\"@id\":\"https:\\\/\\\/clickup.com\\\/blog\\\/mcp-gateway\\\/#faq-question-1790249429608\",\"position\":3,\"url\":\"https:\\\/\\\/clickup.com\\\/blog\\\/mcp-gateway\\\/#faq-question-1790249429608\",\"name\":\"Do you need an MCP gateway?\",\"answerCount\":1,\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"You need an MCP gateway if you want to control who can call which tools across several servers, or keep a central record of what agents did. If a small team runs a handful of stable servers, a shared configuration in version control plus a secrets manager covers most of the same ground. A gateway starts to pay off when you need per-team tool access or one place to manage credentials.\",\"inLanguage\":\"en-US\"},\"inLanguage\":\"en-US\"},{\"@type\":\"Question\",\"@id\":\"https:\\\/\\\/clickup.com\\\/blog\\\/mcp-gateway\\\/#faq-question-1790249440574\",\"position\":4,\"url\":\"https:\\\/\\\/clickup.com\\\/blog\\\/mcp-gateway\\\/#faq-question-1790249440574\",\"name\":\"Are MCP servers secure behind a gateway?\",\"answerCount\":1,\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"A gateway makes MCP servers easier to secure. It doesn't make them safe on its own. It keeps credentials in one place, limits which tools each caller can use, and logs calls centrally. Prompt injection can still arrive through a trusted server, as Invariant Labs showed with GitHub's MCP server. Tools that read private data, handle untrusted content, or send data out should be kept in separate tool sets. Make sure the gateway never forwards a client's token. And stop using servers that no longer receive updates.\",\"inLanguage\":\"en-US\"},\"inLanguage\":\"en-US\"},{\"@type\":\"Question\",\"@id\":\"https:\\\/\\\/clickup.com\\\/blog\\\/mcp-gateway\\\/#faq-question-1790249453301\",\"position\":5,\"url\":\"https:\\\/\\\/clickup.com\\\/blog\\\/mcp-gateway\\\/#faq-question-1790249453301\",\"name\":\"Does tool search replace access control?\",\"answerCount\":1,\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"No. Tool search decides which tools an agent sees for a task. Access control decides whether that agent is allowed to call them. Amazon Bedrock AgentCore Gateway, for example, handles semantic search and authentication as separate features. Run search only across the tools a caller is allowed to use, and check permissions again when the tool actually runs. If hiding a tool from search is its only protection, it isn't protected.\",\"inLanguage\":\"en-US\"},\"inLanguage\":\"en-US\"},{\"@type\":\"Question\",\"@id\":\"https:\\\/\\\/clickup.com\\\/blog\\\/mcp-gateway\\\/#faq-question-1790249467324\",\"position\":6,\"url\":\"https:\\\/\\\/clickup.com\\\/blog\\\/mcp-gateway\\\/#faq-question-1790249467324\",\"name\":\"What should MCP gateway audit logs record?\",\"answerCount\":1,\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"MCP gateway audit logs should record who made each call, which agent and tool were involved, which server handled it, whether the call was allowed or denied, when it happened, and what came back. Kong's AI MCP Proxy plugin, for example, logs every allowed and denied tool access attempt. Before you buy, confirm that the logs cover individual tool calls and not just account and configuration changes, then check how long they're kept and whether you can export them.\",\"inLanguage\":\"en-US\"},\"inLanguage\":\"en-US\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"MCP Gateways: How to Manage Multiple MCP Servers at Scale","description":"An MCP gateway solves governance, not context bloat. Compare Docker, ContextForge, Kong, and AWS AgentCore against their core features.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/clickup.com\/blog\/mcp-gateway\/","og_locale":"en_US","og_type":"article","og_title":"MCP Gateways: How to Manage Multiple MCP Servers at Scale","og_description":"An MCP gateway solves governance, not context bloat. Compare Docker, ContextForge, Kong, and AWS AgentCore against their core features.","og_url":"https:\/\/clickup.com\/blog\/mcp-gateway\/","og_site_name":"The ClickUp Blog","article_publisher":"https:\/\/www.facebook.com\/clickupprojectmanagement","article_published_time":"2026-09-24T15:35:27+00:00","article_modified_time":"2026-09-24T15:36:56+00:00","og_image":[{"width":1738,"height":1002,"url":"https:\/\/clickup.com\/blog\/wp-content\/uploads\/2026\/09\/ClickUp-MCP-Connector.png","type":"image\/png"}],"author":"Manasi Nair","twitter_card":"summary_large_image","twitter_creator":"@clickup","twitter_site":"@clickup","twitter_misc":{"Written by":"Manasi Nair","Est. reading time":"33 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/clickup.com\/blog\/mcp-gateway\/#article","isPartOf":{"@id":"https:\/\/clickup.com\/blog\/mcp-gateway\/"},"author":{"name":"Manasi Nair","@id":"https:\/\/clickup.com\/blog\/#\/schema\/person\/5087dc06a24a14aa29ae7a8c259f3c56"},"headline":"MCP Gateways: How to Manage Multiple MCP Servers at Scale","datePublished":"2026-09-24T15:35:27+00:00","dateModified":"2026-09-24T15:36:56+00:00","mainEntityOfPage":{"@id":"https:\/\/clickup.com\/blog\/mcp-gateway\/"},"wordCount":6739,"publisher":{"@id":"https:\/\/clickup.com\/blog\/#organization"},"image":{"@id":"https:\/\/clickup.com\/blog\/mcp-gateway\/#primaryimage"},"thumbnailUrl":"https:\/\/clickup.com\/blog\/wp-content\/uploads\/2026\/09\/ClickUp-MCP-Connector.png","articleSection":["AI"],"inLanguage":"en-US"},{"@type":["WebPage","FAQPage"],"@id":"https:\/\/clickup.com\/blog\/mcp-gateway\/","url":"https:\/\/clickup.com\/blog\/mcp-gateway\/","name":"MCP Gateways: How to Manage Multiple MCP Servers at Scale","isPartOf":{"@id":"https:\/\/clickup.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/clickup.com\/blog\/mcp-gateway\/#primaryimage"},"image":{"@id":"https:\/\/clickup.com\/blog\/mcp-gateway\/#primaryimage"},"thumbnailUrl":"https:\/\/clickup.com\/blog\/wp-content\/uploads\/2026\/09\/ClickUp-MCP-Connector.png","datePublished":"2026-09-24T15:35:27+00:00","dateModified":"2026-09-24T15:36:56+00:00","description":"An MCP gateway solves governance, not context bloat. Compare Docker, ContextForge, Kong, and AWS AgentCore against their core features.","breadcrumb":{"@id":"https:\/\/clickup.com\/blog\/mcp-gateway\/#breadcrumb"},"mainEntity":[{"@id":"https:\/\/clickup.com\/blog\/mcp-gateway\/#faq-question-1790249408581"},{"@id":"https:\/\/clickup.com\/blog\/mcp-gateway\/#faq-question-1790249420108"},{"@id":"https:\/\/clickup.com\/blog\/mcp-gateway\/#faq-question-1790249429608"},{"@id":"https:\/\/clickup.com\/blog\/mcp-gateway\/#faq-question-1790249440574"},{"@id":"https:\/\/clickup.com\/blog\/mcp-gateway\/#faq-question-1790249453301"},{"@id":"https:\/\/clickup.com\/blog\/mcp-gateway\/#faq-question-1790249467324"}],"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/clickup.com\/blog\/mcp-gateway\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/clickup.com\/blog\/mcp-gateway\/#primaryimage","url":"https:\/\/clickup.com\/blog\/wp-content\/uploads\/2026\/09\/ClickUp-MCP-Connector.png","contentUrl":"https:\/\/clickup.com\/blog\/wp-content\/uploads\/2026\/09\/ClickUp-MCP-Connector.png","width":1738,"height":1002,"caption":"ClickUp MCP Connector"},{"@type":"BreadcrumbList","@id":"https:\/\/clickup.com\/blog\/mcp-gateway\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/clickup.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Hub","item":"https:\/\/clickup.com\/blog\/hub\/"},{"@type":"ListItem","position":3,"name":"AI","item":"https:\/\/clickup.com\/blog\/hub\/ai\/"},{"@type":"ListItem","position":4,"name":"MCP Gateways: How to Manage Multiple MCP Servers at Scale"}]},{"@type":"WebSite","@id":"https:\/\/clickup.com\/blog\/#website","url":"https:\/\/clickup.com\/blog\/","name":"The ClickUp Blog","description":"The ClickUp Blog","publisher":{"@id":"https:\/\/clickup.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/clickup.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/clickup.com\/blog\/#organization","name":"ClickUp","url":"https:\/\/clickup.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/clickup.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/clickup.com\/blog\/wp-content\/uploads\/2025\/07\/logo-v3-clickup-light.jpg","contentUrl":"https:\/\/clickup.com\/blog\/wp-content\/uploads\/2025\/07\/logo-v3-clickup-light.jpg","width":503,"height":125,"caption":"ClickUp"},"image":{"@id":"https:\/\/clickup.com\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/clickupprojectmanagement","https:\/\/x.com\/clickup","https:\/\/www.linkedin.com\/company\/clickup-app","https:\/\/en.wikipedia.org\/wiki\/ClickUp","https:\/\/tiktok.com\/@clickup","https:\/\/instagram.com\/clickup","https:\/\/www.youtube.com\/@ClickUpProductivity"]},{"@type":"Person","@id":"https:\/\/clickup.com\/blog\/#\/schema\/person\/5087dc06a24a14aa29ae7a8c259f3c56","name":"Manasi Nair","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/a6f24700510d27ec593f1ec7aed35ac2fbeb103054122456305cb5b37b97b970?s=96&d=retro&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/a6f24700510d27ec593f1ec7aed35ac2fbeb103054122456305cb5b37b97b970?s=96&d=retro&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/a6f24700510d27ec593f1ec7aed35ac2fbeb103054122456305cb5b37b97b970?s=96&d=retro&r=g","caption":"Manasi Nair"},"description":"Manasi is Managing Editor at ClickUp and a recent productivity tool convert. Prickly people person and avowed monotasker, Manasi enjoys long walks, fantasy novels, and easy mornings.","sameAs":["https:\/\/www.linkedin.com\/in\/manasi-n-10004636"],"url":"https:\/\/clickup.com\/blog\/author\/manasi-nair\/"},{"@type":"Question","@id":"https:\/\/clickup.com\/blog\/mcp-gateway\/#faq-question-1790249408581","position":1,"url":"https:\/\/clickup.com\/blog\/mcp-gateway\/#faq-question-1790249408581","name":"What is the best MCP gateway?","answerCount":1,"acceptedAnswer":{"@type":"Answer","text":"The best MCP gateway depends on where your agents already run. Docker MCP Gateway fits local development. IBM ContextForge fits teams that want to self-host. Kong AI Gateway fits teams already on Kong, and Amazon Bedrock AgentCore Gateway fits agents on AWS. Composio fits agents working across many SaaS apps. For regulated industries, look for self-hosting or a private deployment option, per-tool access controls, and logs of individual tool calls.","inLanguage":"en-US"},"inLanguage":"en-US"},{"@type":"Question","@id":"https:\/\/clickup.com\/blog\/mcp-gateway\/#faq-question-1790249420108","position":2,"url":"https:\/\/clickup.com\/blog\/mcp-gateway\/#faq-question-1790249420108","name":"Is MCP an API gateway?","answerCount":1,"acceptedAnswer":{"@type":"Answer","text":"No. Model Context Protocol is a specification that defines how AI apps connect to tools and data. An MCP gateway is software built on that specification. It sits between agents and MCP servers and handles access, credentials, and logging. It works like HTTP and an API gateway: HTTP sets the rules for requests, and the gateway decides which requests get through.","inLanguage":"en-US"},"inLanguage":"en-US"},{"@type":"Question","@id":"https:\/\/clickup.com\/blog\/mcp-gateway\/#faq-question-1790249429608","position":3,"url":"https:\/\/clickup.com\/blog\/mcp-gateway\/#faq-question-1790249429608","name":"Do you need an MCP gateway?","answerCount":1,"acceptedAnswer":{"@type":"Answer","text":"You need an MCP gateway if you want to control who can call which tools across several servers, or keep a central record of what agents did. If a small team runs a handful of stable servers, a shared configuration in version control plus a secrets manager covers most of the same ground. A gateway starts to pay off when you need per-team tool access or one place to manage credentials.","inLanguage":"en-US"},"inLanguage":"en-US"},{"@type":"Question","@id":"https:\/\/clickup.com\/blog\/mcp-gateway\/#faq-question-1790249440574","position":4,"url":"https:\/\/clickup.com\/blog\/mcp-gateway\/#faq-question-1790249440574","name":"Are MCP servers secure behind a gateway?","answerCount":1,"acceptedAnswer":{"@type":"Answer","text":"A gateway makes MCP servers easier to secure. It doesn't make them safe on its own. It keeps credentials in one place, limits which tools each caller can use, and logs calls centrally. Prompt injection can still arrive through a trusted server, as Invariant Labs showed with GitHub's MCP server. Tools that read private data, handle untrusted content, or send data out should be kept in separate tool sets. Make sure the gateway never forwards a client's token. And stop using servers that no longer receive updates.","inLanguage":"en-US"},"inLanguage":"en-US"},{"@type":"Question","@id":"https:\/\/clickup.com\/blog\/mcp-gateway\/#faq-question-1790249453301","position":5,"url":"https:\/\/clickup.com\/blog\/mcp-gateway\/#faq-question-1790249453301","name":"Does tool search replace access control?","answerCount":1,"acceptedAnswer":{"@type":"Answer","text":"No. Tool search decides which tools an agent sees for a task. Access control decides whether that agent is allowed to call them. Amazon Bedrock AgentCore Gateway, for example, handles semantic search and authentication as separate features. Run search only across the tools a caller is allowed to use, and check permissions again when the tool actually runs. If hiding a tool from search is its only protection, it isn't protected.","inLanguage":"en-US"},"inLanguage":"en-US"},{"@type":"Question","@id":"https:\/\/clickup.com\/blog\/mcp-gateway\/#faq-question-1790249467324","position":6,"url":"https:\/\/clickup.com\/blog\/mcp-gateway\/#faq-question-1790249467324","name":"What should MCP gateway audit logs record?","answerCount":1,"acceptedAnswer":{"@type":"Answer","text":"MCP gateway audit logs should record who made each call, which agent and tool were involved, which server handled it, whether the call was allowed or denied, when it happened, and what came back. Kong's AI MCP Proxy plugin, for example, logs every allowed and denied tool access attempt. Before you buy, confirm that the logs cover individual tool calls and not just account and configuration changes, then check how long they're kept and whether you can export them.","inLanguage":"en-US"},"inLanguage":"en-US"}]}},"reading":["27"],"keywords":[["AI","ai",1133]],"redirect_params":{"product":"","department":""},"author_data":{"name":"Manasi Nair","link":"https:\/\/clickup.com\/blog\/author\/manasi-nair\/","image":"https:\/\/clickup.com\/blog\/wp-content\/uploads\/2024\/07\/MN_profile-pic_Blog-cropped.jpg","position":"Managing Editor"},"category_data":{"name":"AI","slug":"ai","term_id":1133,"url":"https:\/\/clickup.com\/blog\/hub\/ai\/"},"hero_data":{"media_url":"https:\/\/clickup.com\/blog\/wp-content\/uploads\/2026\/09\/ClickUp-MCP-Connector.png","media_alt_text":"ClickUp MCP Connector","button":"custom","template_id":"","youtube_thumbnail_url":"","custom_button_text":"Try ClickUp MCP","custom_button_url":"https:\/\/app.clickup.com\/signup"},"featured_media_data":{"id":630341,"url":"https:\/\/clickup.com\/blog\/wp-content\/uploads\/2026\/09\/ClickUp-MCP-Connector.png","alt":"ClickUp MCP Connector","mime_type":"image\/png","is_webm":false},"_links":{"self":[{"href":"https:\/\/clickup.com\/blog\/wp-json\/wp\/v2\/posts\/632928","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/clickup.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/clickup.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/clickup.com\/blog\/wp-json\/wp\/v2\/users\/132"}],"replies":[{"embeddable":true,"href":"https:\/\/clickup.com\/blog\/wp-json\/wp\/v2\/comments?post=632928"}],"version-history":[{"count":122,"href":"https:\/\/clickup.com\/blog\/wp-json\/wp\/v2\/posts\/632928\/revisions"}],"predecessor-version":[{"id":633320,"href":"https:\/\/clickup.com\/blog\/wp-json\/wp\/v2\/posts\/632928\/revisions\/633320"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/clickup.com\/blog\/wp-json\/wp\/v2\/media\/630341"}],"wp:attachment":[{"href":"https:\/\/clickup.com\/blog\/wp-json\/wp\/v2\/media?parent=632928"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/clickup.com\/blog\/wp-json\/wp\/v2\/categories?post=632928"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/clickup.com\/blog\/wp-json\/wp\/v2\/tags?post=632928"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}