Gmail MCP: attachments over ~5MB fail due to base64 serialization in JSON parameter
Problem
The Gmail MCP send_message tool requires attachments to be passed as base64-encoded strings inside the JSON parameter body. For files larger than ~5MB, the base64 string (~8MB+) exceeds the practical parameter size limit, making it impossible to send attachments that Gmail itself supports (up to 25MB).
Real-world impact
I needed to send a 6MB screen recording (.mp4) as evidence attached to a formal complaint email. The email body was sent successfully via MCP, but the video attachment could not be included because the base64-encoded content (8.5MB) was too large to pass as a tool parameter.
Result: I had to open Gmail manually on my phone just to reply and attach the video — defeating the purpose of the Gmail MCP integration.
Expected behavior
The Gmail MCP should support sending attachments up to Gmail's native 25MB limit, not be artificially capped at ~5MB by the serialization method.
Suggested solutions
- Streaming/chunked upload: Allow attachments to be uploaded in chunks rather than a single base64 blob.
- File path reference: Accept a local file path and handle the encoding/upload server-side.
- Pre-upload to Drive: For large attachments, auto-upload to Google Drive and insert a Drive link.
- Multipart encoding: Use multipart form encoding instead of embedding base64 in JSON.
Environment
- Claude Cowork session (cloud container)
- Gmail MCP connector
- File: 6,358,906 bytes (MP4 video)
- Base64 size: 8,478,544 characters
- Gmail limit: 25MB — file is well within it
Steps to reproduce
- Connect Gmail MCP
- Try to send an email with
send_messageincluding an attachment >5MB via theattachmentsfield - The base64 content cannot be passed as a parameter — it is too large for the tool call
This is a significant UX gap: Gmail MCP works great for text emails, drafts, search, and small attachments, but falls short for the common case of attaching a photo, video, or document.