Prepare the server locally
Run this once before adding it to Claude Code.
git clone https://github.com/user/mcp-gmail.git
cd mcp-gmail
bun install
bun run authRegister it in Claude Code
claude mcp add mcp-gmail -- bun /ABSOLUTE/PATH/TO/mcp-gmail/src/index.tsReplace any placeholder paths in the command with the real path on your machine.
Make your agent remember this setup
mcp-gmail's config, env vars, and the gotchas you hit — recalled in every future Claude Code, Cursor, and Codex session.
npx conare@latestFree · one command · indexes the sessions already on disk. Set up in the browser instead →
What it does
- Full Gmail search capabilities using standard Gmail query operators.
- Comprehensive email management including sending, replying, and forwarding.
- Draft management for creating, listing, and sending emails.
- Label organization tools to categorize and manage messages.
- Attachment handling to download files directly from emails.
Tools 18
search_emailsSearch using Gmail query syntaxget_emailGet full content by message IDsend_emailSend a new emailreply_to_emailReply to an email (preserves thread)forward_emailForward to new recipientscreate_draftCreate a new draftlist_draftsList all draftssend_draftSend an existing draftdelete_draftPermanently delete a drafttrash_emailMove to trasharchive_emailRemove from inboxmark_as_readMark as readmark_as_unreadMark as unreadlist_labelsList all labelscreate_labelCreate a new labelapply_labelApply a label to a messageremove_labelRemove a label from a messageget_attachmentDownload attachment (base64)Try it
Original README from ustikya/mcp-gmail
mcp-gmail
Give Claude full access to your Gmail. Search, read, send, reply, forward, manage drafts, labels, and attachments — all through the Model Context Protocol.
What you can do
"Search my inbox for emails from Sarah this week" "Draft a reply to that meeting invite" "Archive all read emails labeled 'notifications'" "Forward the latest invoice to [email protected]"
17 tools covering everything you'd do in Gmail — without leaving Claude.
Quick Start
Prerequisites
- Bun runtime
- A Google account with Gmail
1. Google Cloud setup
<details> <summary><b>Create project & enable Gmail API</b> (click to expand)</summary>- Go to Google Cloud Console
- Select a project → New Project → name it (e.g., "Gmail MCP") → Create
- Go to APIs & Services → Library → search Gmail API → Enable</details>
- Go to APIs & Services → OAuth consent screen
- Click Create on the Overview tab
- Fill in App name and User support email
- Select External → Create
- Data access tab → Add or Remove Scopes → find
https://www.googleapis.com/auth/gmail.modify→ check it → Update → Save - Users tab → Add Users → add your Gmail address → Save
</details> <details> <summary><b>Create OAuth credentials</b></summary>Tip: In "Testing" mode, refresh tokens expire every 7 days. To avoid this, go to Publishing status → Publish App. For personal use, Google won't require verification.
- Go to APIs & Services → Credentials
- Create Credentials → OAuth client ID → Desktop app
- Click Create → Download JSON
- Save as
credentials.jsonin the project root</details>
2. Install & authenticate
git clone https://github.com/user/mcp-gmail.git # replace with your repo URL
cd mcp-gmail
bun install
bun run auth # opens browser for Gmail authorization
Tokens are saved locally to .gmail-tokens.json (git-ignored).
3. Add to Claude Desktop
Edit your config file:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"gmail": {
"command": "bun",
"args": ["/ABSOLUTE/PATH/TO/mcp-gmail/src/index.ts"]
}
}
}
Note: Claude Desktop doesn't inherit your shell
PATH. Ifbunisn't found, use the full path — runwhich bunto find it.
Restart Claude Desktop. You should see gmail in the MCP servers list.
Tools
| Tool | Description |
|---|---|
search_emails |
Search using Gmail query syntax |
get_email |
Get full content by message ID |
send_email |
Send a new email |
reply_to_email |
Reply to an email (preserves thread) |
forward_email |
Forward to new recipients |
Drafts
| Tool | Description |
|---|---|
create_draft |
Create a new draft |
list_drafts |
List all drafts |
send_draft |
Send an existing draft |
delete_draft |
Permanently delete a draft |
Organization
| Tool | Description |
|---|---|
trash_email |
Move to trash |
archive_email |
Remove from inbox |
mark_as_read |
Mark as read |
mark_as_unread |
Mark as unread |
Labels
| Tool | Description |
|---|---|
list_labels |
List all labels |
create_label |
Create a new label |
apply_label |
Apply a label to a message |
remove_label |
Remove a label from a message |
Attachments
| Tool | Description |
|---|---|
get_attachment |
Download attachment (base64) |
Gmail Search Syntax
The search_emails tool supports all Gmail search operators:
from:[email protected] # From specific sender
to:[email protected] # To specific recipient
subject:meeting # Subject contains "meeting"
has:attachment # Has attachments
is:unread # Unread emails
is:starred # Starred emails
label:important # Has label
after:2024/01/01 # After date
before:2024/12/31 # Before date
newer_than:7d # Last 7 days
"exact phrase" # Exact match
from:alice subject:report # Combine operators
Troubleshooting
| Problem | Solution |
|---|---|
credentials.json not found |
Download OAuth credentials from Google Cloud Console |
.gmail-tokens.json not found |
Run bun run auth |
Token has been revoked |
Re-run bun run auth |
Refresh token expired |
App is in "Testing" mode — re-run bun run auth or publish the app |
Insufficient permissions |
Ensure gmail.modify scope was granted du |