#32330 MCP resources/read: binary (blob) resources returned as TextResourceContents — base64 string forwarded as text
**Version:** v1.92.0-dev.2 (same code path on `main`).
## Summary
Reading a **binary** MCP resource through the proxy returns `TextResourceContents` (base64 in `text`, mimeType e.g. `application/gzip`) instead of `BlobResourceContents` (base64 in `blob`). The bytes are intact but mislabeled: a client that reads `blob` for binary resources sees it empty, and one that treats `text` as UTF-8 mangles it.
## Root cause
`_normalize_resource_contents` forwards a blob's base64 **string** as `content`:
```python elif isinstance(content, BlobResourceContents): normalized.append(ReadResourceContents(content=content.blob, ...)) # content.blob is a str ```
The MCP SDK then re-serializes `ReadResourceContents` via `create_content` (`mcp/server/lowlevel/server.py`), where `ReadResourceContents.content: str | bytes` is the discriminator: **`str` -> `TextResourceContents`**, `bytes` -> `BlobResourceContents`. Handed a `str`, it emits text. (The sibling `TextResourceContents` branch correctly passes `content.text`, a str.)
## Reproduce
1. Upstream MCP server exposing a binary resource (e.g. an `application/gzip` blob). 2. `resources/read` through the proxy. 3. Result is `TextResourceCon…