[BUG] Gmail MCP: gmail_read_message fails on all draft messages (returns error, no body)
Bug Description
gmail_read_message returns an error for ALL draft messages. It works correctly on sent/inbox messages but fails on every draft — including drafts just created by gmail_create_draft in the same session.
Reproduction Steps
- Create a draft:
gmail_create_draft→ returnsmessageId - Immediately read it:
gmail_read_message(messageId)→ error - Read any sent message with
gmail_read_message→ works fine
What Works vs What's Broken
| Tool | Status |
|------|--------|
| gmail_search_messages (finds drafts) | ✅ Works (snippet only) |
| gmail_list_drafts | ✅ Works (snippet only) |
| gmail_create_draft | ✅ Works |
| gmail_read_message on sent/inbox | ✅ Works |
| gmail_read_message on ANY draft | ❌ Broken — returns opaque error |
| gmail_get_profile | ✅ Works |
Impact
This breaks any workflow that uses Gmail drafts as a communication channel. We use drafts as a dead-drop protocol between Claude Code instances — the primary comms system for our multi-agent setup. With this broken, agents can find drafts exist (via search/list) but cannot read the body content.
Environment
- Claude Code version: 2.1.107 (updated 2026-04-14)
- Platform: Windows 11, bash shell
- Gmail MCP: Anthropic-hosted remote server (claude_ai_Gmail)
- This worked in previous sessions (pre-2.1.107 and/or pre-April 14 MCP server state)
Root Cause Hypothesis
Gmail API requires drafts.get(draftId) to read draft bodies — messages.get(messageId) does not return bodies for draft-only messages. The MCP server likely uses messages.get() internally, which works for sent/inbox but not drafts.
Related
- #32266 —
gmail_send_drafttool also missing from hosted server
Requested Fix
Either:
- Fix
gmail_read_messageto handle draft messageIds (usedrafts.getinternally when the message has DRAFT label), or - Add a dedicated
gmail_read_draft(draftId)tool
🤖 Generated with Claude Code
This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗