Claude Gmail Mcp — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited Claude Gmail Mcp (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
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:
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
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 (perms 600).
claude mcp add gmail --scope user -- uvx claude-gmail-mcpclaude mcp add gmail --scope user \
-e [email protected] \
-e GMAIL_APP_PASSWORD=your-app-password \
-- uvx claude-gmail-mcpReplace [email protected] and your-app-password with your actual credentials. Drop --scope user to install only for the current project directory.
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.
At startup the server picks exactly one backend:
GMAIL_TOKEN_PATH (default ~/.config/claude-gmail-mcp/token.json) exists → API backend.GMAIL_ADDRESS + GMAIL_APP_PASSWORD env vars set → IMAP backend.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).
Ask Claude to send an email:
Send an email to [email protected] with subject "Hello" and body "Hi from Claude!"
Tools exposed:
to, subject, body, optional cc/bcc, html, attachments (local file paths; unreadable files are skipped with a warning).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.uid (the hex ID from search_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 [email protected] with subject "Report" and attach ~/Documents/report.pdf
python -m build && twine upload dist/*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=....)
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.