Regression: MCP tool image content no longer renders in Agent chat (model receives it; UI does not)

Where does the bug appear (feature/product)?

Cursor IDE

Describe the Bug

This is a regression. MCP tools that return a standard content item of type: "image" (base64 + mimeType) used to render the picture inline in Agent chat. They no longer do.
Observed now:

  • tools/call succeeds and the result includes a well-formed image content block.
  • The model still receives the image (it can describe the captured frame accurately).
  • The chat UI does not show the image: not in the assistant message, and not in the expanded tool-result card.
  • Switching models does not change the outcome (not the GPT-only failure from forum topic 103623).
  • The same MCP server / same tool result does render in GitHub Copilot.
  • Control: a local JPEG embedded with Markdown in the same chat does render. Only MCP image content fails.
    This is a client rendering regression, not a bad MCP payload. Duplicating the same bytes as type: "text" base64 is not an acceptable workaround: it inflates context (text tokens vs vision tokens) and breaks clients that already handle image correctly.
    Related but different: Image not displaying in chat when returned from MCP server (model-specific / FastMCP Image object). This report is: image content reaches the model, UI never paints it, on every model tried.

Steps to Reproduce

  1. Add any MCP server whose tool returns MCP image content, e.g. CallToolResult with content: [{ "type": "image", "data": "<jpeg-or-png-base64>", "mimeType": "image/jpeg" }] (Streamable HTTP or stdio; both should apply).
  2. In Agent chat, ask the agent to call that tool once.
  3. Expand the tool-result card and look at the assistant message.

Expected Behavior

  • The tool-result card shows the image.
  • The conversation shows the image (as it used to, and as Copilot still does).
  • Changing the chat model should not be required for images to appear.

Operating System

Linux

Version Information

Version: 3.16.17
Version: 3.16.29

Additional Information

Markdown image with a file:// / workspace path in the same thread rendered correctly, so chat markdown images still work.

Does this stop you from using Cursor

Sometimes - I can sometimes use Cursor

Hey, thanks for the detailed report with repro tests. That really helps.

You’re right. What you’re describing isn’t intended behavior, and it’s not related to your setup or your MCP server payload. An MCP tool result with type: "image" should render inline, and it used to. The model receives the image, but the UI doesn’t render it, exactly like you broke down.

I’ve shared this with the team as a separate issue and we’re tracking it. I can’t share a timeline yet, but I’ll reply here when there’s an update.

About the workaround of duplicating the bytes as type: "text", agreed, that’s not a real fix. It inflates the context and breaks clients that correctly handle image. So for now we’re waiting for a proper rendering-side fix, I wouldn’t recommend duplicating.