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
- Claude can see the image — it appears in the thinking/reasoning
block and Claude correctly describes its contents
- The image appears inside the collapsed "tool use" accordion
(which most users never expand)
- 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
Summary
When an MCP tool returns an
imagecontent 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
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
block and Claude correctly describes its contents
(which most users never expand)
Expected behavior
When Claude references a tool result that contains an
imageblock,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)
Request
Please support inline rendering of
imagecontent blocks from MCP toolresults 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