MCP Apps open standard migration: still needing OpenAI extensions for CSP and widget state — expected?

Hello everyone,

I recently migrated from an Apps SDK implementation to the MCP Apps open standard (Docs > MCP Apps compatibility in ChatGPT).

My goal is to avoid any extra OpenAI extensions and stick purely to the MCP Apps spec, but I ran into two cases where that wasn’t possible:


Issue 1 – Resources not shown after publishing

I had to add the OpenAI-specific openai/widgetCSP declaration on top of the standard ui.csp block:

"openai/widgetCSP": {
  // For ChatGPT's built-in widget hosting
  resource_domains: ["https://*.domain.com"]
}

…in addition to:

ui: {
  csp: {
    resourceDomains: ["https://*.domain.com"]
  }
}

Without the openai/widgetCSP declaration, my resources were not displayed after publishing.


Issue 2 – Widget loses state on page reload

My widget did not render previously fetched results after a page reload. To fix this, I had to use the OpenAI setState extension:

if (hasOpenAIExtensions()) {
  getOpenAIExtensions()?.setWidgetState({ toolOutput: data });
}

Questions:

(A) Is there a better way to solve these two issues without relying on OpenAI-specific extensions?

(B) Has anyone else noticed misalignments between the Apps SDK and the MCP Apps open standard?

5 Likes

Hey @Katerina_Kanellopoul, appreciate you for bringing this to our attention. We’re going to dig into this and see what’s driving it. We’ll share an update once we learn more. 

4 Likes