claude-gmail-mcp
Allows sending, searching, and reading Gmail messages through the Gmail API or SMTP/IMAP.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@claude-gmail-mcpSend an email to mom@example.com saying I'll be late"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
claude-gmail-mcp
A super tiny Gmail MCP server for Claude Code. Lets Claude send, search, and read Gmail on your behalf.
Two backends are supported and auto-selected at startup:
Gmail API (OAuth) — recommended. No app password. Batch search. Direct Gmail web URLs on every result.
SMTP/IMAP (app password) — simpler setup. Fallback when the OAuth token isn't present.
I needed something for my projects — there were a bunch around which seemed super complicated. So why not have Claude CLI build one for me :-p
Prerequisites
uv installed
One of:
A Google Cloud OAuth client (Desktop app) — for the API backend, OR
A Gmail App Password — for the SMTP/IMAP backend
Related MCP server: gmail-mcp
Install (Gmail API backend — recommended)
In Google Cloud Console, create a project, enable the Gmail API, and configure the OAuth consent screen (External, add your Gmail as a test user). Create an OAuth client of type Desktop app and download the credentials JSON.
Run the auth helper, pointing at the downloaded file:
uvx --from claude-gmail-mcp claude-gmail-mcp-auth /path/to/credentials.jsonBrowser opens → sign in → approve (scope:
gmail.modify). Refresh token is saved to~/.config/claude-gmail-mcp/token.json(perms600).Register the MCP server with Claude Code (no env vars needed):
claude mcp add gmail --scope user -- uvx claude-gmail-mcp
Install (SMTP/IMAP backend — fallback)
claude mcp add gmail --scope user \
-e GMAIL_ADDRESS=you@gmail.com \
-e GMAIL_APP_PASSWORD=your-app-password \
-- uvx claude-gmail-mcpReplace you@gmail.com and your-app-password with your actual credentials. Drop --scope user to install only for the current project directory.
Verify
claude mcp listYou should see gmail listed as a configured server. To see which backend is active, run:
uvx claude-gmail-mcp 2>&1 | head -1Expected: [gmail-mcp] backend=api or [gmail-mcp] backend=imap. Ctrl-C to exit.
Backend selection
At startup the server picks exactly one backend:
Token file at
GMAIL_TOKEN_PATH(default~/.config/claude-gmail-mcp/token.json) exists → API backend.Else
GMAIL_ADDRESS+GMAIL_APP_PASSWORDenv vars set → IMAP backend.Else tools return a "no backend configured" error.
To force a switch to the IMAP backend when a token file exists, set GMAIL_TOKEN_PATH to a non-existent path (or delete the token file).
Usage
Ask Claude to send an email:
Send an email to alice@example.com with subject "Hello" and body "Hi from Claude!"
Tools exposed:
send_email—to,subject,body, optionalcc/bcc,html,attachments(local file paths; unreadable files are skipped with a warning).search_emails—queries(single string or list of strings),max_results(per query when a list is passed). Results include the Gmail message ID in hex and a direct Gmail web URL per hit.read_email—uid(the hex ID fromsearch_emails). Output includes the Gmail web URL at the top.
Batch search example:
Search Gmail for "is:unread from:alice" and "is:unread from:bob" — show me both side by side.
Claude passes both queries in a single tool call. The response is sectioned per query. API backend executes the list step in one HTTP roundtrip; IMAP backend iterates.
Attachment example:
Send an email to alice@example.com with subject "Report" and attach ~/Documents/report.pdf
Publishing to PyPI
python -m build && twine upload dist/*For Development
git clone https://github.com/pliablepixels/claude-gmail-mcp.git
cd claude-gmail-mcp
uv sync
uv run pytestRun the server locally:
uv run claude-gmail-mcpTest with Claude Code using your local copy instead of the published package:
claude mcp add gmail --scope user \
-- uv run --directory /path/to/claude-gmail-mcp claude-gmail-mcp(For the IMAP backend add -e GMAIL_ADDRESS=... -e GMAIL_APP_PASSWORD=....)
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/pliablepixels/claude-gmail-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server