Skip to content

Canva MCP app succeeds but returns no HTML preview in Codex Desktop #29210

Open

Description

@wkx862566546-ship-it

Summary

In Codex Desktop, the OpenAI-curated Canva plugin successfully executes Canva MCP tools, but the embedded MCP App preview is not rendered. The client shows the Chinese error:

MCP 应用未返回 HTML 内容

("The MCP app did not return HTML content.")

The Canva tools return only text/JSON structured content, even when prepare_design_generation is expected to open an interactive recommendation/generation widget.

Environment

  • Platform: macOS
  • Codex bundled CLI: codex-cli 0.142.0-alpha.6
  • Canva plugin: canva@openai-curated-remote 1.0.2
  • Auth: ChatGPT / Canva connector authorized
  • Canva MCP tool actions themselves succeed

Reproduction

  1. Install and connect the OpenAI-curated Canva plugin.
  2. Start a new Codex Desktop thread.
  3. Invoke Canva and ask: 生成一张里斯本 DAY 1 旅行攻略封面.
  4. Codex calls canva_prepare_design_generation with intent: recommendation.
  5. The tool returns success with JSON/structured content such as:
    • prepare_design_generation: true
    • recommendation: { type: "empty", items: [] }
  6. Codex calls the same tool with intent: generation.
  7. The tool returns a successful job object with status: in_progress, but no HTML/resource content for the MCP App UI.
  8. Codex Desktop shows no Canva card/preview and reports that the MCP app did not return HTML content.

Observed behavior

  • Canva generation jobs succeed.
  • Direct Canva candidate URLs can be generated through the non-widget design generation tool.
  • Canva designs can be fetched and edited through MCP.
  • The interactive HTML widget and embedded previews never render.
  • Canva thumbnail URLs returned as text also do not render inline in the Codex client.

Example successful generation job IDs:

  • 8f97d3ed-4634-48ad-a3fa-707037d606f6
  • a3b90bef-a638-4d45-afa4-edcb6b9d4cf5

Expected behavior

canva_prepare_design_generation should return the MCP App HTML/resource payload required by Codex Desktop so the visual-reference picker, outline review, generation status, and candidate previews render in the thread.

If the Canva server returns only JSON, Codex Desktop should gracefully fall back to rendering candidate links or thumbnails rather than displaying an HTML-content error.

Troubleshooting already attempted

  • Disconnected/reconnected Canva
  • Restarted Codex Desktop
  • Retried with a minimal single-page poster prompt
  • Retried using an explicit Canva design as visual_reference
  • Confirmed Canva MCP read/write operations work

The issue persists and appears isolated to the MCP App HTML/rendering contract between the Canva plugin and Codex Desktop.

Activity

  1. added
    bugSomething isn't working
    appIssues related to the Codex desktop app
    mcpIssues related to the use of model context protocol (MCP) servers
    on Jun 20, 2026
  2. github-actions commented on Jun 20, 2026

    @github-actions
    Contributor
  3. Necmttn commented on Jun 21, 2026

    @Necmttn

    MCP App handling should distinguish tool success from preview-resource availability. A Canva tool call can return structured JSON successfully while still failing to provide an HTML/resource payload for the embedded app.

    The client should surface both states: tool result received, preview resource missing, expected content types, resource ids, and next poll/retry state. If generation is async, carry job id plus preview readiness separately so "no HTML content" is debuggable instead of looking like the whole MCP action failed.


    Generated with ax.

  4. jiongwen commented on Jun 22, 2026

    @jiongwen

    Reproduced on Windows with Canva connector 1.0.2 and Codex runtime bundle 26.619.11828.
    prepare-design-generation still shows “MCP app did not return HTML content”.
    Direct generate-design works, but the interactive Canva widget does not render.

  5. burstdahel commented on Oct 6, 2026

    @burstdahel

    I am experiencing the exact same failure on CachyOS (Linux Wayland, Codex 26.930.41038), but I extracted the internal Sentry telemetry (scope_v3.json) which reveals the actual JSON-RPC protocol failures behind the missing HTML.

    The issue isn't just missing HTML; it is a strict trust scope and resource read mismatch during the sandbox bootstrap:

    1. The client requests the widget resource URI but it throws an Unknown Resource error:
      method=mcpServer/resource/read uri="ui://widget/prepare-design-generation.html" -> {"code":-32002,"message":"Unknown resource"}

    2. The MCP sandbox guestWebContents throws immediately:
      Uncaught (in promise) [object Object]

    3. The host actively rejects the widget's internal tool calls:
      App request handling failed errorCode=-32603 errorMessage="MCP app cannot call tool outside its trusted tool scope: list-brand-kits" (also fails for search-designs).

    The sandbox partition successfully reaches Canva's API endpoints, proving this is a strict client-to-connector protocol mismatch in the desktop build, not a network block. Providing this stack trace to help isolate the mcp_app_resource_uri resolution failure.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    appIssues related to the Codex desktop appbugSomething isn't workingmcpIssues related to the use of model context protocol (MCP) servers

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions