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?