Skip to content

[claude.ai / MCP] Image content blocks from tool results not rendered inline in assistant response #1329

@dzhurinskiy

Description

@dzhurinskiy

Summary

When an MCP tool returns an image content block (base64-encoded PNG),
Claude can see and reason about the image — but it is never rendered inline
in the final assistant response visible to the user.

Environment

  • Platform: claude.ai (web)
  • MCP server: remote (SSE), connected via Claude.ai Settings → Connections
  • Tool type: chart rendering tool returning base64 PNG + URL

What our tool returns

[
  {
    "type": "image",
    "data": "<base64-encoded PNG>",
    "mimeType": "image/png"
  },
  {
    "type": "text",
    "text": "Chart rendered: https://example.com/chart.png"
  }
]

Observed behavior

  1. Claude can see the image — it appears in the thinking/reasoning
    block and Claude correctly describes its contents
  2. The image appears inside the collapsed "tool use" accordion
    (which most users never expand)
  3. The image is never rendered inline in the final assistant response

Expected behavior

When Claude references a tool result that contains an image block,
that image should render inline in the assistant response — similar to
how user-uploaded images are displayed.

Why this matters

MCP is designed as the standard for extending Claude with external tools.
Visual tools (charts, diagrams, screenshots) are a major category.
If image results can't surface to the user without manual accordion
expansion, it breaks the core value proposition of visual MCP tools.

Workarounds attempted (all suboptimal)

  • Returning a URL in text → external images not rendered inline by claude.ai
  • Building an HTML artifact wrapper → requires extra roundtrip, bad UX
  • Instructing users to open the accordion → not discoverable

Request

Please support inline rendering of image content blocks from MCP tool
results in the assistant response — either automatically when Claude
references the image, or via an explicit opt-in mechanism for tool developers.

Happy to provide a minimal reproduction MCP server if helpful.

Labels (suggested): bug, mcp, claude.ai, ux

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions