Skip to content

[Cloudflare One] Add known limitations to MCP server portals#30615

Open
kennyj42 wants to merge 2 commits intocloudflare:productionfrom
kennyj42:kjohnson/mcp-portals-known-limitations
Open

[Cloudflare One] Add known limitations to MCP server portals#30615
kennyj42 wants to merge 2 commits intocloudflare:productionfrom
kennyj42:kjohnson/mcp-portals-known-limitations

Conversation

@kennyj42
Copy link
Copy Markdown
Contributor

@kennyj42 kennyj42 commented May 5, 2026

Summary

  • Adds a Known limitations section to the MCP server portals documentation page, covering compatibility gaps with upstream MCP servers.
  • Limitations documented: stdio-only servers (no remote HTTP endpoint), servers that block proxy-based clients, servers without OAuth dynamic client registration, and silent admin OAuth token expiration.
  • Sourced from internal wiki: Driving MCP Portal Escalations down


MCP server portals have the following known limitations:

- **Only remote HTTP MCP servers are supported.** MCP servers that use stdio transport only (for example, `github/github-mcp-server`) do not expose a remote HTTP endpoint and cannot be added to an MCP server portal. To use a stdio-only server, you must self-host it behind an HTTP endpoint and authenticate with [custom headers](#add-an-mcp-server).
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
- **Only remote HTTP MCP servers are supported.** MCP servers that use stdio transport only (for example, `github/github-mcp-server`) do not expose a remote HTTP endpoint and cannot be added to an MCP server portal. To use a stdio-only server, you must self-host it behind an HTTP endpoint and authenticate with [custom headers](#add-an-mcp-server).
- **Only remote HTTP MCP servers are supported.** MCP servers that use [stdio transport only](https://modelcontextprotocol.io/specification/2025-11-25/basic/transports) (for example, `github/github-mcp-server`) do not expose a remote HTTP endpoint and cannot be added to an MCP server portal. To use a stdio-only server, you must self-host it behind an HTTP endpoint and authenticate with [custom headers](#add-an-mcp-server).


- **Some MCP servers block proxy-based clients.** Certain MCP servers reject requests from proxy-based clients like MCP server portals, returning a `403` error on the registration endpoint. These servers are not compatible with MCP server portals until those providers add Cloudflare as a supported MCP client.

- **Not all MCP servers support OAuth dynamic client registration.** MCP servers that do not support OAuth dynamic client registration cannot use the portal's OAuth authentication flow. For these servers, select **Custom Headers** as the authentication method and provide static credentials (for example, API keys or personal access tokens) instead.
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
- **Not all MCP servers support OAuth dynamic client registration.** MCP servers that do not support OAuth dynamic client registration cannot use the portal's OAuth authentication flow. For these servers, select **Custom Headers** as the authentication method and provide static credentials (for example, API keys or personal access tokens) instead.
- **Not all MCP servers support OAuth dynamic client registration.** MCP servers that do not support [OAuth dynamic client registration](https://modelcontextprotocol.io/specification/2025-11-25/basic/authorization#dynamic-client-registration) cannot use the portal's OAuth authentication flow. For these servers, select **Custom Headers** as the authentication method and provide static credentials (for example, API keys or personal access tokens) instead.

Clarified the limitations of MCP servers regarding OAuth dynamic client registration and provided details on using shared bearer tokens.

MCP server portals have the following known limitations:

- **Only remote HTTP MCP servers are supported.** MCP servers that use stdio transport only (for example, `github/github-mcp-server`) do not expose a remote HTTP endpoint and cannot be added to an MCP server portal. To use a stdio-only server, you must self-host it behind an HTTP endpoint and authenticate with [custom headers](#add-an-mcp-server).
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

#add-an-mcp-server does not currently have any info on how to authenticate with custom headers...


- **Some MCP servers block proxy-based clients.** Certain MCP servers reject requests from proxy-based clients like MCP server portals, returning a `403` error on the registration endpoint. These servers are not compatible with MCP server portals until those providers add Cloudflare as a supported MCP client.

- **Not all MCP servers support OAuth dynamic client registration.** MCP servers that do not support OAuth dynamic client registration cannot use the portal's OAuth authentication flow. For these servers, you may upload a shared bearer token via the [api](https://developers.cloudflare.com/api/resources/zero_trust/subresources/access/subresources/ai_controls/subresources/mcp/subresources/servers/methods/create#(resource)%20zero_trust.access.ai_controls.mcp.servers%20%3E%20(method)%20create%20%3E%20(params)%200%20%3E%20(param)%20auth_type%20%3E%20(schema)). Static OAuth or per user bearer tokens are not yet supported.
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can we include an API example showing how to "upload a shared bearer token"?

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

also what does this auth flow look like from the end user perspective?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

bearer token auth will be transparent to the user. Since they all leverage the same admin auth token. It's not a very preferrable option for that reason.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants