gmail-mcp — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited gmail-mcp (Plugin) 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.
Multi-account Gmail control for Claude. Search, read, draft, send, archive, label, and manage email across any number of Gmail accounts, with hardened defaults.
You bring your own Google credentials. This plugin never sees your tokens — each user creates their own Google Cloud project and OAuth client. Your emails and credentials stay on your machine only.
Attachments Claude can save are restricted to ~/Downloads/gmail-mcp/. Files Claude can attach to emails must be placed in ~/Downloads/gmail-mcp-uploads/.
Quick install: Once you have your credentials (Step 1), just run: ``bash git clone https://github.com/3vening/gmail-mcp.git cd gmail-mcp bash install.sh `` The installer sets up Claude Desktop and Claude Code automatically. Skip to Step 4 when done.You need your own credentials so Google knows it's your app accessing your email. This is free and takes about 5 minutes.
gmail.readonly, gmail.send, gmail.modify, gmail.labels, userinfo.email, openidClient ID and Client Secret — you'll need these in Step 3Note: Leave the app in Testing mode. You do not need to publish it. Each person who uses this plugin creates their own project, so there is no shared app to review.
curl -LsSf https://astral.sh/uv/install.sh | sh)Clone this repo:
git clone https://github.com/3vening/gmail-mcp.git
cd gmail-mcp/server
uv syncCopy the example config:
cp .mcp.json.example .mcp.jsonOpen .mcp.json and fill in your credentials and the absolute path to the server:
{
"mcpServers": {
"gmail-mcp": {
"command": "uv",
"args": [
"run",
"--directory",
"/absolute/path/to/gmail-mcp/server",
"python",
"server.py"
],
"env": {
"GOOGLE_CLIENT_ID": "your-client-id-here",
"GOOGLE_CLIENT_SECRET": "your-client-secret-here"
}
}
}
}For Claude Desktop, add the same block to:
~/Library/Application Support/Claude/claude_desktop_config.json%APPDATA%\Claude\claude_desktop_config.jsonFor Claude Code CLI, add it to ~/.claude/claude_code_config.json.
Restart Claude, then in chat say:
"Add my Gmail account [email protected]"
A browser window opens, you sign in, done. Repeat for each account — all accounts share the same OAuth client as long as they are listed as test users on your consent screen.
Just talk to Claude naturally:
Claude will always create a draft first before sending — you confirm before anything goes out.
| Category | Tools |
|---|---|
| Accounts | list_accounts, add_account, remove_account |
| Reading | search_emails, read_email, get_thread, save_attachment |
| Drafting & sending | draft_email, draft_reply, send_draft, discard_draft, list_drafts |
| Organization | get_labels, archive_email, trash_email, mark_as_read, mark_as_unread, apply_label, remove_label |
| Safety | view_audit_log |
| Data | Location |
|---|---|
| Tokens | OS keychain (service name gmail-mcp) |
| Account index | ~/.gmail-mcp/accounts.json (emails only, no secrets) |
| Audit log | ~/.gmail-mcp/audit.log |
| Downloaded attachments | ~/Downloads/gmail-mcp/ |
| Outgoing attachments | ~/Downloads/gmail-mcp-uploads/ |
Override the data directory with the GMAIL_MCP_DATA_DIR environment variable.
To fully disconnect an account:
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.