From b19cdad83b5ef3bfe0ffb32dd900e84ef1b2526a Mon Sep 17 00:00:00 2001 From: kennyj42 <73258453+kennyj42@users.noreply.github.com> Date: Tue, 26 Aug 2025 12:12:40 -0500 Subject: [PATCH 1/8] Create mcp-server-portals.mdx --- .../changelog/access/mcp-server-portals.mdx | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 src/content/changelog/access/mcp-server-portals.mdx diff --git a/src/content/changelog/access/mcp-server-portals.mdx b/src/content/changelog/access/mcp-server-portals.mdx new file mode 100644 index 000000000000000..817776fd8036562 --- /dev/null +++ b/src/content/changelog/access/mcp-server-portals.mdx @@ -0,0 +1,16 @@ +--- +title: MCP Server Portals +description: Cloudflare Zero Trust MCP Server Portals allow admins to centralize all of their MCP Servers and enforce user specific security policies. +date: 2025-08-26 +products: + - access +--- + +(An MCP server portal)[/cloudflare-one/applications/configure-apps/mcp-servers/mcp-portals/] centralizes multiple Model Context Protocol (MCP) servers ↗ onto a single HTTP endpoint. Key benefits include: + +- **Streamlined access to multiple MCP servers**: MCP server portals support both unauthenticated MCP servers (such as the Cloudflare Documentation MCP server ↗) as well as MCP servers secured using any third-party or custom OAuth provider. Users log in to the portal URL through Cloudflare Access and are prompted to authenticate separately to each server that requires OAuth. +- **Customized tools per portal**: Admins can tailor an MCP portal to a particular use case by choosing the specific tools and prompt templates that they want to make available to users through the portal. This allows users to access a curated set of tools and prompts — the less external context exposed to the AI model, the better the AI responses tend to be. +- **Observability**: Once the user's AI agent is connected to the portal, Cloudflare Access logs the individual prompts and responses made using the tools in the portal. + +This is available in an open beta for all customers across all plans! + From 5cbcbbdf619e31bc87d255aa6b9f11e47356466c Mon Sep 17 00:00:00 2001 From: kennyj42 <73258453+kennyj42@users.noreply.github.com> Date: Tue, 26 Aug 2025 12:14:45 -0500 Subject: [PATCH 2/8] Add files via upload --- .../changelog/access/mcp-server-portal.png | Bin 0 -> 47599 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 src/assets/images/changelog/access/mcp-server-portal.png diff --git a/src/assets/images/changelog/access/mcp-server-portal.png b/src/assets/images/changelog/access/mcp-server-portal.png new file mode 100644 index 0000000000000000000000000000000000000000..97ac9834e048bb870563d03571b067c9eda857d3 GIT binary patch literal 47599 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 O`&Ld(wp!XO Date: Tue, 26 Aug 2025 12:16:17 -0500 Subject: [PATCH 3/8] Update and rename mcp-server-portals.mdx to 2025-08-26-mcp-server-portals.mdx --- ...mcp-server-portals.mdx => 2025-08-26-mcp-server-portals.mdx} | 2 ++ 1 file changed, 2 insertions(+) rename src/content/changelog/access/{mcp-server-portals.mdx => 2025-08-26-mcp-server-portals.mdx} (94%) diff --git a/src/content/changelog/access/mcp-server-portals.mdx b/src/content/changelog/access/2025-08-26-mcp-server-portals.mdx similarity index 94% rename from src/content/changelog/access/mcp-server-portals.mdx rename to src/content/changelog/access/2025-08-26-mcp-server-portals.mdx index 817776fd8036562..1eca82ca65acbd0 100644 --- a/src/content/changelog/access/mcp-server-portals.mdx +++ b/src/content/changelog/access/2025-08-26-mcp-server-portals.mdx @@ -6,6 +6,8 @@ products: - access --- +![MCP server portal](~assets/images/changelog/access/mcp-server-portal.png) + (An MCP server portal)[/cloudflare-one/applications/configure-apps/mcp-servers/mcp-portals/] centralizes multiple Model Context Protocol (MCP) servers ↗ onto a single HTTP endpoint. Key benefits include: - **Streamlined access to multiple MCP servers**: MCP server portals support both unauthenticated MCP servers (such as the Cloudflare Documentation MCP server ↗) as well as MCP servers secured using any third-party or custom OAuth provider. Users log in to the portal URL through Cloudflare Access and are prompted to authenticate separately to each server that requires OAuth. From bb78e4dbea00a1b169c1fb15ecc37610fa89a6ee Mon Sep 17 00:00:00 2001 From: ranbel <101146722+ranbel@users.noreply.github.com> Date: Tue, 26 Aug 2025 13:44:39 -0400 Subject: [PATCH 4/8] Update 2025-08-26-mcp-server-portals.mdx --- .../changelog/access/2025-08-26-mcp-server-portals.mdx | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/content/changelog/access/2025-08-26-mcp-server-portals.mdx b/src/content/changelog/access/2025-08-26-mcp-server-portals.mdx index 1eca82ca65acbd0..0403b321f1cf292 100644 --- a/src/content/changelog/access/2025-08-26-mcp-server-portals.mdx +++ b/src/content/changelog/access/2025-08-26-mcp-server-portals.mdx @@ -1,6 +1,6 @@ --- title: MCP Server Portals -description: Cloudflare Zero Trust MCP Server Portals allow admins to centralize all of their MCP Servers and enforce user specific security policies. +description: Cloudflare Zero Trust MCP server portals allow admins to centralize all of their MCP servers and enforce user-specific security policies. date: 2025-08-26 products: - access @@ -8,11 +8,11 @@ products: ![MCP server portal](~assets/images/changelog/access/mcp-server-portal.png) -(An MCP server portal)[/cloudflare-one/applications/configure-apps/mcp-servers/mcp-portals/] centralizes multiple Model Context Protocol (MCP) servers ↗ onto a single HTTP endpoint. Key benefits include: +An [MCP server portal](/cloudflare-one/applications/configure-apps/mcp-servers/mcp-portals/) centralizes multiple Model Context Protocol (MCP) servers onto a single HTTP endpoint. Key benefits include: -- **Streamlined access to multiple MCP servers**: MCP server portals support both unauthenticated MCP servers (such as the Cloudflare Documentation MCP server ↗) as well as MCP servers secured using any third-party or custom OAuth provider. Users log in to the portal URL through Cloudflare Access and are prompted to authenticate separately to each server that requires OAuth. +- **Streamlined access to multiple MCP servers**: MCP server portals support both unauthenticated MCP servers as well as MCP servers secured using any third-party or custom OAuth provider. Users log in to the portal URL through Cloudflare Access and are prompted to authenticate separately to each server that requires OAuth. - **Customized tools per portal**: Admins can tailor an MCP portal to a particular use case by choosing the specific tools and prompt templates that they want to make available to users through the portal. This allows users to access a curated set of tools and prompts — the less external context exposed to the AI model, the better the AI responses tend to be. -- **Observability**: Once the user's AI agent is connected to the portal, Cloudflare Access logs the individual prompts and responses made using the tools in the portal. +- **Observability**: Once the user's AI agent is connected to the portal, Cloudflare Access logs the indiviudal requests made using the tools in the portal. This is available in an open beta for all customers across all plans! From 74b7496036613205075522b64cc268d0c2a09219 Mon Sep 17 00:00:00 2001 From: ranbel <101146722+ranbel@users.noreply.github.com> Date: Tue, 26 Aug 2025 13:45:03 -0400 Subject: [PATCH 5/8] Update 2025-08-26-mcp-server-portals.mdx --- src/content/changelog/access/2025-08-26-mcp-server-portals.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/content/changelog/access/2025-08-26-mcp-server-portals.mdx b/src/content/changelog/access/2025-08-26-mcp-server-portals.mdx index 0403b321f1cf292..1c5ce3a0bffeca9 100644 --- a/src/content/changelog/access/2025-08-26-mcp-server-portals.mdx +++ b/src/content/changelog/access/2025-08-26-mcp-server-portals.mdx @@ -1,5 +1,5 @@ --- -title: MCP Server Portals +title: MCP server portals description: Cloudflare Zero Trust MCP server portals allow admins to centralize all of their MCP servers and enforce user-specific security policies. date: 2025-08-26 products: From 529dd7b3b7b471f88538f58f3daff097b4bac712 Mon Sep 17 00:00:00 2001 From: ranbel <101146722+ranbel@users.noreply.github.com> Date: Tue, 26 Aug 2025 13:47:02 -0400 Subject: [PATCH 6/8] Update src/content/changelog/access/2025-08-26-mcp-server-portals.mdx Co-authored-by: Pedro Sousa <680496+pedrosousa@users.noreply.github.com> --- src/content/changelog/access/2025-08-26-mcp-server-portals.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/content/changelog/access/2025-08-26-mcp-server-portals.mdx b/src/content/changelog/access/2025-08-26-mcp-server-portals.mdx index 1c5ce3a0bffeca9..2d00c696ce3275a 100644 --- a/src/content/changelog/access/2025-08-26-mcp-server-portals.mdx +++ b/src/content/changelog/access/2025-08-26-mcp-server-portals.mdx @@ -6,7 +6,7 @@ products: - access --- -![MCP server portal](~assets/images/changelog/access/mcp-server-portal.png) +![MCP server portal](~/assets/images/changelog/access/mcp-server-portal.png) An [MCP server portal](/cloudflare-one/applications/configure-apps/mcp-servers/mcp-portals/) centralizes multiple Model Context Protocol (MCP) servers onto a single HTTP endpoint. Key benefits include: From f5b4aea6c097a331080c2e6b26e791a69a5131d9 Mon Sep 17 00:00:00 2001 From: kennyj42 <73258453+kennyj42@users.noreply.github.com> Date: Wed, 27 Aug 2025 12:59:40 -0500 Subject: [PATCH 7/8] Update 2025-08-26-mcp-server-portals.mdx adding blog link --- src/content/changelog/access/2025-08-26-mcp-server-portals.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/content/changelog/access/2025-08-26-mcp-server-portals.mdx b/src/content/changelog/access/2025-08-26-mcp-server-portals.mdx index 2d00c696ce3275a..fb3b081cdcce47d 100644 --- a/src/content/changelog/access/2025-08-26-mcp-server-portals.mdx +++ b/src/content/changelog/access/2025-08-26-mcp-server-portals.mdx @@ -14,5 +14,5 @@ An [MCP server portal](/cloudflare-one/applications/configure-apps/mcp-servers/m - **Customized tools per portal**: Admins can tailor an MCP portal to a particular use case by choosing the specific tools and prompt templates that they want to make available to users through the portal. This allows users to access a curated set of tools and prompts — the less external context exposed to the AI model, the better the AI responses tend to be. - **Observability**: Once the user's AI agent is connected to the portal, Cloudflare Access logs the indiviudal requests made using the tools in the portal. -This is available in an open beta for all customers across all plans! +This is available in an open beta for all customers across all plans! For more information check out our (blog)[https://blog.cloudflare.com/zero-trust-mcp-server-portals/] for this release. From 7ca924039148a3e2b3d00921837dcf85a3a9f4ec Mon Sep 17 00:00:00 2001 From: kennyj42 <73258453+kennyj42@users.noreply.github.com> Date: Wed, 27 Aug 2025 13:01:15 -0500 Subject: [PATCH 8/8] Update 2025-08-26-mcp-server-portals.mdx --- src/content/changelog/access/2025-08-26-mcp-server-portals.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/content/changelog/access/2025-08-26-mcp-server-portals.mdx b/src/content/changelog/access/2025-08-26-mcp-server-portals.mdx index fb3b081cdcce47d..0e284e5ac74f18e 100644 --- a/src/content/changelog/access/2025-08-26-mcp-server-portals.mdx +++ b/src/content/changelog/access/2025-08-26-mcp-server-portals.mdx @@ -14,5 +14,5 @@ An [MCP server portal](/cloudflare-one/applications/configure-apps/mcp-servers/m - **Customized tools per portal**: Admins can tailor an MCP portal to a particular use case by choosing the specific tools and prompt templates that they want to make available to users through the portal. This allows users to access a curated set of tools and prompts — the less external context exposed to the AI model, the better the AI responses tend to be. - **Observability**: Once the user's AI agent is connected to the portal, Cloudflare Access logs the indiviudal requests made using the tools in the portal. -This is available in an open beta for all customers across all plans! For more information check out our (blog)[https://blog.cloudflare.com/zero-trust-mcp-server-portals/] for this release. +This is available in an open beta for all customers across all plans! For more information check out our [blog](https://blog.cloudflare.com/zero-trust-mcp-server-portals/) for this release.