If you have started building tools for AI chat hosts, you have probably hit the same fork in the road. There are two ways to add a user interface to a tool right now. The first is MCP Apps, the open standard from the Model Context Protocol. The second is the OpenAI Apps SDK, the framework OpenAI shipped for the ChatGPT app store. They both let your tool render a UI inside the chat. They both run inside a sandboxed iframe. They both talk to your server over JSON-RPC. So the question almost every developer is asking is the obvious one: are these competing standards?
No. The OpenAI Apps SDK is built on top of MCP. It uses MCP for the wire format, the tool definitions, the UI rendering, and the security model. It then adds a thin layer with ChatGPT-specific extensions: a payment hook (window.openai.requestCheckout
), a store directory, and a few helpers that only run inside ChatGPT.
So the choice is not "pick one or the other." The honest framing is:
Strip away the marketing and there are only four things the OpenAI Apps SDK gives you that MCP Apps do not:
window.openai.requestCheckout()
runs a payment flow without leaving the chat. MCP Apps has no checkout primitive today.Everything else β the sandboxing, the iframe rendering, the JSON-RPC audit trail, the tool declarations β is the same on both sides because the Apps SDK uses MCP for them.
If your audience is ChatGPT users specifically and you need in-chat payments, build with the OpenAI Apps SDK. For everyone else, build to MCP Apps and your tool runs across every host that supports the open standard. I wrote the full comparison β code examples for both sides, the smart progressive-enhancement pattern, a decision tree, and the two pitfalls most teams hit β on my blog.