Skip to content

Add ngrok-skip-browser-warning header to iframe requests for dev tunnels #53

Description

@thleonard

Problem Statement

When developing a local MCP server for Claude.ai, the typical workflow is to expose it using a tunneling solution such as ngrok or cloudflared. If local-network-access is not allowed in the iframe (as discussed in #25), then all UI assets must be served through the tunnel.

With ngrok (free plan), HTTP requests hit an interstitial browser warning page unless they include the header: ngrok-skip-browser-warning: true

Since iframe-originated asset requests from Claude.ai do not include this header, they receive the interstitial HTML page instead of the expected JS/CSS assets. This breaks widget UI rendering and makes local development difficult.

Proposed Solution

If enabling local-network-access in the iframe is not an option, you could add the following header to outgoing iframe-originated HTTP requests: ngrok-skip-browser-warning: true

This would:

  • Preserve existing security boundaries
  • Avoid allowing direct localhost access
  • Make ngrok free tunnels usable for local MCP development
  • Prevent the interstitial page from breaking asset loading

Alternatives Considered

Cloudflared tunnels in free plan avoids this issue but generates a new random URL each run, which forces to create a new connector each time the tunnel is killed (which is painful).

Area

Developer Experience

Priority

Medium - Would be helpful

Additional Context

https://ngrok.com/docs/pricing-limits/free-plan-limits#removing-the-interstitial-page

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions