branch:
LocalhostWarningModal.tsx
2584 bytesRaw
import { XIcon } from "@phosphor-icons/react";
import ShellCommand from "./ShellCommand";

const LocalhostWarningModal = ({
  visible,
  handleHide
}: {
  visible: boolean;
  handleHide: (e: React.MouseEvent<HTMLElement>) => void;
}) => {
  if (!visible) return null;

  return (
    // oxlint-disable-next-line jsx-a11y/click-events-have-key-events, jsx-a11y/no-static-element-interactions -- modal backdrop dismiss
    <div
      onClick={handleHide}
      className="fixed inset-0 bg-kumo-base/50 backdrop-blur-sm z-20 flex md:items-center md:justify-center items-end md:p-16"
    >
      {/* oxlint-disable-next-line jsx-a11y/click-events-have-key-events, jsx-a11y/no-static-element-interactions -- stop propagation */}
      <div
        onClick={(e) => e.stopPropagation()}
        className="bg-kumo-base shadow-xl rounded-lg md:max-w-2xl w-full p-6 ring ring-kumo-line"
      >
        <h2 className="font-semibold text-xl flex items-center text-kumo-default">
          Localhost is not allowed
          {/* oxlint-disable-next-line jsx-a11y/click-events-have-key-events, jsx-a11y/no-static-element-interactions -- close button */}
          <button
            type="button"
            onClick={handleHide}
            className="ml-auto text-kumo-secondary cursor-pointer hover:text-kumo-default"
          >
            <XIcon size={24} />
          </button>
        </h2>
        <p className="mt-2 text-kumo-secondary">
          MCP servers are connected server-side. Localhost URLs cannot be
          accessed.
        </p>

        <div className="mt-4">
          <h3 className="font-semibold text-sm mb-3 text-kumo-default">
            Use Cloudflare Tunnel for Local Development
          </h3>

          <div className="space-y-3">
            <ShellCommand
              command="brew install cloudflared"
              description="1. Install cloudflared (one-time setup)"
            />
            <ShellCommand
              command="npx wrangler dev"
              description="2. Start your dev server"
            />
            <ShellCommand
              command="cloudflared tunnel --url http://localhost:8787"
              description="3. In a new terminal, start the tunnel"
            />
          </div>

          <p className="text-sm text-kumo-secondary mt-4">
            Copy the tunnel URL (e.g., https://xyz.trycloudflare.com) and use it
            as your MCP server endpoint. Note you will need to add the /mcp
            path.
          </p>
        </div>
      </div>
    </div>
  );
};

export default LocalhostWarningModal;