Chris Nager built a playable DOOM game that runs directly inside ChatGPT and Claude using the Model Context Protocol (MCP). The app launches inline when the AI client supports it, or falls back to a regular browser URL. It runs on Cloudflare's platform with Freedoom Phase 1 (the open-source version) so everything stays redistributable. The whole thing lives on Netlify under a clean /doom/* namespace.
Getting DOOM into a browser is solved. The real problem was making a single session work across different AI clients with their own rules around iframes, Content Security Policies, and rendering constraints. Nager originally tried nesting iframes inside the MCP app view, which immediately hit browser security walls. The fix was counterintuitive: instead of embedding a browser page inside the MCP app, he made the MCP app act as the browser page itself. The DOOM canvas renders directly inside the host iframe, cutting out a whole layer of fragility.
MCP was designed for structured tool calls and JSON responses, not real-time graphics. But by treating the protocol as a real interactive surface with the same constraints as the web, Nager showed what MCP apps can actually become. He cut save/load, persistence adapters, screenshots, and server-verified bootstrap flows to keep the project small and stable. The final shape is two MCP tools, one browser route, and a signed-token flow that works everywhere without server-side state. If the play path depends on a pile of server infrastructure before a user sees anything, it stops being fun. Nager wanted fun.
The community is already using games to stress-test new platforms. Other developers have noted similar experiments on Open WebUI. DOOM partially runs on the ChatGPT and Claude iOS apps too. If you're building AI agent interfaces, this is your new canary in the coal mine.