Help us improve
Share bugs, ideas, or general feedback.
Share bugs, ideas, or general feedback.
Share bugs, ideas, or general feedback.
By bengold
Gmail plugin for Claude — read, search, compose, reply, forward, manage labels, handle attachments, and unsubscribe from mailing lists. Backed by a Cloudflare Worker with Google OAuth.
npx claudepluginhub bengold/gmail-mcpCompose an email, save it as a draft, and show it for review before sending
Show the most recent unread messages in the Gmail inbox
Search Gmail using the standard query syntax
Triage unread inbox — categorize, suggest actions, and apply them with your approval
Unsubscribe from a mailing list, given a message id or a search query
Share bugs, ideas, or general feedback.
Own this plugin?
Verify ownership to unlock analytics, metadata editing, and a verified badge.
Sign in to claimOwn this plugin?
Verify ownership to unlock analytics, metadata editing, and a verified badge.
Sign in to claimBased on adoption, maintenance, documentation, and repository signals. Not a security audit or endorsement.
Efficient skill management system with progressive discovery — 410+ production-ready skills across 33+ domains
Harness-native ECC plugin for engineering teams - 63 agents, 251 skills, 79 legacy command shims, reusable hooks, rules, MCP conventions, and operator workflows for Claude Code plus adjacent agent harnesses
Comprehensive .NET development skills for modern C#, ASP.NET, MAUI, Blazor, Aspire, EF Core, Native AOT, testing, security, performance optimization, CI/CD, and cloud-native applications
Complete collection of battle-tested Claude Code configs from an Anthropic hackathon winner - agents, skills, hooks, and rules evolved over 10+ months of intensive daily use
Local Claude Design host — edit designs/<name>/Design.jsx, read human comments/overrides, ask refinement questions, poll review events.
A fully-featured Gmail plugin for Claude Code, implemented as a remote MCP server on Cloudflare Workers with Google OAuth.
No local Node process. No tokens on your laptop. Just deploy the Worker once, install the plugin, and Claude handles the OAuth consent on first use.
Read & search
gmail_search — Gmail query syntax, metadata-only summaries (fast)gmail_get_message — full body + attachments metadatagmail_list_threads, gmail_get_threadSend, reply, forward, drafts
gmail_send — plain text / HTML / multipart with attachmentsgmail_reply — preserves threading headers & threadIdgmail_forward — proper "Forwarded message" quotegmail_create_draft, gmail_update_draft, gmail_send_draft, gmail_delete_draft, gmail_list_drafts, gmail_get_draftLabels & organization
gmail_list_labels, gmail_create_label, gmail_update_label, gmail_delete_labelgmail_modify_labels (single), gmail_batch_modify_labels (up to 1000), gmail_modify_thread_labelsgmail_trash, gmail_untrash, gmail_delete, gmail_trash_thread, gmail_untrash_threadAttachments
gmail_get_attachment — inline base64 ≤ 1 MB, metadata-only aboveUnsubscribe
gmail_inspect_unsubscribe — show available methods for a messagegmail_unsubscribe — prefers RFC 8058 one-click (HTTPS POST), falls back to mailto, otherwise returns the URLPlugin extras
/gmail-inbox, /gmail-search, /gmail-compose, /gmail-triage, /gmail-unsubscribeemail-triage subagent for bulk inbox cleanupskills/gmail/SKILL.md — usage guidance Claude auto-loadsClaude Code ──HTTP MCP──▶ Cloudflare Worker ──HTTPS──▶ Gmail API
│
▼
Workers KV (grants, refresh tokens)
Durable Object (per-session McpAgent)
@cloudflare/workers-oauth-provider issues MCP-facing OAuth 2.1 tokens and transparently stores grants in KV.agents/mcp's McpAgent gives each session a Durable Object with streamable HTTP transport.https://<your-worker-subdomain>.workers.dev/callback.../auth/userinfo.email.../auth/userinfo.profileopenid.../auth/gmail.modify.../auth/gmail.send.../auth/gmail.labels.../auth/gmail.composecd worker
npm install
# One-time: create the KV namespace and paste the id into wrangler.toml
npx wrangler kv namespace create OAUTH_KV
# Set secrets
npx wrangler secret put GOOGLE_CLIENT_ID
npx wrangler secret put GOOGLE_CLIENT_SECRET
npx wrangler secret put COOKIE_ENCRYPTION_KEY # openssl rand -base64 32
npx wrangler deploy
# From the directory above this repo:
claude plugin install ./gmail-mcp
Edit .mcp.json to point at your deployed Worker URL (or set GMAIL_MCP_URL):
{
"mcpServers": {
"gmail": {
"type": "http",
"url": "https://gmail-mcp.<your-subdomain>.workers.dev/mcp"
}
}
}
First time you use a Gmail tool, Claude will pop up the Google consent screen.
cd worker
cp .dev.vars.example .dev.vars # fill in real values
npm run dev # wrangler dev at http://localhost:8787
Point a local MCP client at http://localhost:8787/mcp. Use ngrok or a Cloudflare tunnel if you need an HTTPS redirect URI for Google OAuth locally.
/gmail-inbox — triggers OAuth, returns unread messages./gmail-search from:me — returns sent mail metadata./gmail-compose send a test email to myself saying hi — creates draft, prompts for confirmation, sends.gmail_reply; check threading in the Gmail UI.gmail_modify_labels removing INBOX) and un-archive (add INBOX)./gmail-unsubscribe <id of a newsletter> — inspect + unsubscribe./gmail-triage 20 — launches the subagent, categorizes, proposes and executes cleanup.