I am developing an MCP-based SSE server for ChatGPT, and I am facing an issue where the Output Template (Widget) is not being discovered or rendered, despite the server correctly implementing the MCP spec.
Technical Details:
-
MCP Server Type: SSE (deployed on Google Cloud Run)
-
Protocol Issues:
-
Upon connection, the OpenAI Bridge sends
initializeandlist_tools, but completely skipslist_resources, even thoughresourcescapability is explicitly declared in the server’s initialize response. -
The
CallToolResultincludes anEmbeddedResourcewithmimeType: "text/html+skybridge"(and also triedtext/html), but the ChatGPT UI does not trigger the Resource Fetch.
-
-
Server Implementation:
-
annotationsincludesopenai/outputTemplatewith aui://scheme. -
_metainCallToolResultalso contains the correct template mapping. -
MIME types tested:
text/html+skybridge,text/html.
-
What I’ve checked:
-
Verified that the server’s
initializeresponse includes"resources": {}incapabilities. -
Verified that
WIDGET_TEMPLATE_URImatches exactly acrosslist_resources,annotations, andEmbeddedResource. -
Server logs show
ListToolsRequestis processed successfully, but the client never attempts to calllist_resources.
- MIME Type Requirement: “Is
text/html+skybridgestill the required MIME type for Output Templates, or has it changed?” - Discovery Trigger: “What specific field in the
initializeorlist_toolsresponse triggers the OpenAI Bridge to calllist_resources?” - Canvas vs Widget: “Does enabling
openai/canvasmetadata suppress theopenai/outputTemplaterendering?” - SSE Specifics: “Are there any known issues with SSE-based MCP servers failing to load resources in the ChatGPT web client?”