Releases: Agent-Pattern-Labs/gmail-mcp
Release list
v1.8.0
File-path attachment support + auto MIME-encoded Subject
Why
Previously, sending a Gmail message with a PDF attachment required inlining a base64url RFC-2822 blob in the raw tool-call argument. A typical CV at 125KB → ~230KB base64url, which blows past tool-call argument limits. Empirically this blocked every mailto-apply email-with-CV workflow (observed 2026-04-19 on CoPlane, Rinse, Gambit, DHS sends that had to bypass the MCP entirely and POST directly to the Gmail API).
What changed
create_draftandsend_messageboth accept a newattachments: [{path, filename?, mimeType?}]parameter.- The server reads each file from disk and builds a multipart/mixed MIME message. Callers pass file paths — no base64 ever touches the tool-call argument boundary.
- MIME type auto-detected from the file extension (pdf, docx, png, etc.); override via
mimeType. - Filename defaults to the basename of the path; override via
filename. - Subject header auto-MIME-encodes per RFC 2047 (
=?UTF-8?B?...?=) when non-ASCII characters are present. Fixes em-dash / smart-quote mojibake observed in stored message headers.
Backwards compatibility
None broken. Existing callers using raw (pre-built base64url) or plain-text bodies without attachments behave identically.
Example
{
"to": ["founders@example.com"],
"subject": "Application — Charlie Greenman (Austin)",
"body": "Pitch text here.",
"attachments": [
{ "path": "/abs/path/to/Charlie-Greenman-CV.pdf" }
]
}Release v1.8.0
Direct push to main
Release v1.7.9
fix: survive EADDRINUSE on Streamable HTTP listener startup
Previously, if PORT (default 3000) was already bound — typically by a zombie gmail-mcp from a prior session, or a second instance running in another project — app.listen(PORT) threw EADDRINUSE and crashed the process, taking stdio MCP down with it even though stdio doesn't need the port.
Now the HTTP listener attaches an error handler: on EADDRINUSE we log a warning and continue. Stdio MCP clients (Claude Desktop, opencode, etc.) keep working.
Also added a DISABLE_HTTP=true env var to skip the HTTP listener entirely for stdio-only consumers.
Release v1.7.8
Release v1.7.7
v1.7.6
What's Changed
- Zero-setup auth: Embedded default OAuth credentials so users can run
npx @razroo/gmail-mcp authwithout setting up their own Google Cloud project - Better error messages: Clear, actionable instructions when credentials are missing
- Fixed: OAuth client was silently created with empty credentials, producing a broken auth URL
v1.7.5
What's Changed
- Zero-setup auth: Embedded default OAuth credentials so users can run
npx @razroo/gmail-mcp authwithout setting up their own Google Cloud project - Better error messages: Clear, actionable instructions when credentials are missing
- Fixed: OAuth client was silently created with empty credentials, producing a broken auth URL
Release v1.7.4
Full Changelog: https://github.com/razroo/gmail-mcp/commits/v1.7.4