[Bug] MCP resource_link silently ignored, PDF blobs not processed, and no docs on supported content types
Bug Description
Claude Code and Claude.ai do not fetch or render resource_link items returned from MCP tool results. Additionally, embedded resource blobs (e.g. PDFs returned via resources/read) are not rendered or processed — Claude silently ignores them. There is also no documentation stating which MCP resource/content types are actually supported.
---
Issues
1. resource_link in tool results is silently ignored
When an MCP tool returns a resource_link content item, Claude Code does not attempt to fetch or display it. The tool call is treated as successful but the resource is completely dropped.
Example tool response:
{
"content": [
{
"type": "resource_link",
"uri": "https://example.com/report.pdf",
"name": "Q1 Report",
"mimeType": "application/pdf"
}
]
}
Expected: Claude fetches and processes the linked resource.
Actual: Claude acknowledges the tool ran but produces no output from the resource.
This works in other MCP clients (e.g. ChatGPT), confirming it is a Claude-specific gap.
---
2. Embedded PDF blobs from tool response are not processed
When tool returns a base64-encoded PDF blob, Claude does not read or summarise the content. Other binary/document mime types (e.g. application/vnd.openxmlformats-officedocument) appear to have the same issue(image worked)
Example resources/read response:
{
"contents": [
{
"uri": "eds://s3?bucket=my-bucket&key=path/to/file.pdf",
"mimeType": "application/pdf",
"blob": "<base64-encoded PDF bytes>"
}
]
}
Expected: Claude reads and processes the PDF content.
Actual: Content is ignored; Claude has no knowledge of the file.
---
3. No documentation on supported MCP content/resource types
The Claude Code docs and MCP integration guide do not specify which content types are currently supported. Developers are left to discover limitations through trial and error.
Request: Please add a support matrix to the docs (or inline in the MCP integration guide) covering:
| Content type | resource_link | Inline blob (resources/read) |
|---|---|---|
| text/plain | ? | ? |
| text/html | ? | ? |
| text/markdown | ? | ? |
| application/pdf | ? | ? |
| image/png, image/jpeg | ? | ? |
| application/octet-stream | ? | ? |
---
Workaround (current)
For Claude clients, we detect user-agent: Claude-User server-side and return a plain HTTP download URL instead of a resource_link. This is a fragile hack that shouldn't be necessary.
---
Environment
- Platform: macOS (darwin)
- Claude Code version: 2.1.117
- Transport: Streamable HTTP (MCP)
This issue has 2 comments on GitHub. Read the full discussion on GitHub ↗