Gmail MCP Local Server
Allows sending emails, managing drafts, searching messages, and reading messages through the Gmail API.
Click on "Deploy 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., "@Gmail MCP Local Serversend an email to jane@example.com about lunch tomorrow"
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.
Gmail MCP Local Server
A local MCP (Model Context Protocol) server that gives Claude the ability to send emails, manage drafts, and search Gmail — capabilities missing from Anthropic's built-in Gmail connector.
What is MCP and how does this work?
MCP is a protocol that lets Claude call real-world tools. When you register an MCP server, Claude Desktop launches it as a background subprocess and routes tool calls to it over stdin/stdout.
You talk to Claude
│
▼
Claude decides which tool to use
│
▼
MCP server executes the action
(send email, search messages, etc.)
│
▼
Real world effect happensYou never run this script manually. Claude Desktop starts and stops it automatically.
Related MCP server: Gmail MCP Server
Tools
Tool | Description |
| Compose and immediately send an email |
| Send an existing draft by its draft ID |
| Save a composed email as a draft without sending |
| List saved drafts with subject and recipient info |
| Search messages using Gmail query syntax |
| Read the full decoded body of a message |
Setup
1. Install dependencies
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt2. Google Cloud setup
You need a credentials.json from Google Cloud Console. This is your app's identity card with Google.
Go to console.cloud.google.com
Create a project
Go to APIs & Services → Library → enable Gmail API
Go to APIs & Services → OAuth consent screen
Choose External → fill in app name and your email
Under Test users, add your Gmail address
Go to APIs & Services → Credentials → Create Credentials → OAuth 2.0 Client ID
Application type: Desktop app
Download the JSON and save it as
credentials.jsonin this folder
Copy .env.example to .env and fill in your values (these match what's inside credentials.json):
cp .env.example .env3. Register with Claude Desktop
Open ~/Library/Application Support/Claude/claude_desktop_config.json and add:
{
"mcpServers": {
"gmail": {
"command": "/FULL/PATH/TO/gmail_mcp/venv/bin/python3",
"args": ["/FULL/PATH/TO/gmail_mcp/gmail_mcp.py"]
}
}
}Restart Claude Desktop.
First-run OAuth (one time only)
The first time Claude uses a Gmail tool, a browser window will open asking you to sign in with Google and grant access. After you approve:
A
token.jsonfile is saved in this folderAll future runs reuse this token silently
The token auto-refreshes when it expires — no action needed
Why the test user step matters: Google blocks OAuth for apps in "Testing" mode unless your email is explicitly listed as a test user. That's the 403: access_denied error if skipped.
How Claude Desktop manages the server
Claude Desktop starts
│
│ spawns subprocess automatically
▼
gmail_mcp.py runs in background
│
│ reads token.json for auth
▼
Gmail API (Google's servers)No manual start needed — Claude Desktop handles it
The server only runs while Claude Desktop is open
If you use a scheduler, it only fires while Claude Desktop is running on your machine
Security
token.jsoncontains a live OAuth refresh token — full Gmail access. Keep it private.credentials.jsoncontains your app's client secret. Keep it private.Neither file is committed to git (covered by
.gitignore)If your token is compromised, revoke it at myaccount.google.com/permissions and delete
token.jsonto force re-auth
What else can you build with MCP?
MCP works with any API. Some ideas:
Google Calendar — create and read events
Notion — read/write pages and databases
Slack — send messages, read channels
GitHub — open issues, create PRs
Google Sheets — read/write spreadsheet data
SMS / WhatsApp — send messages via Twilio
Local filesystem — read/write files in specific folders
Databases — query SQLite or Postgres
The pattern is always the same: write a Python file with @mcp.tool() functions, register it in claude_desktop_config.json, and Claude can act in the real world through it.
This server cannot be deployed
Maintenance
Related MCP Connectors
Manage Gmail end-to-end: search, read, send, draft, label, and organize threads. Automate workflow…
Connect any mailbox to Claude, ChatGPT & AI: read, send, reply, schedule & search emails.
Manage Gmail messages, threads, labels, drafts, and settings from your workflows. Send and organiz…
Email infrastructure for AI agents — send, receive, search, and reply to email over MCP.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables reading, sending, searching, and managing Gmail through Claude using the official Google Gmail API.89 npm3MIT
- AlicenseNot gradedqualityCmaintenanceEnables Claude to read, search, send, label, and trash emails in any Gmail account via Google's Gmail API, using OAuth2 authentication with automatic token refresh.67 npmMIT
- FlicenseBqualityDmaintenanceEnables Claude to read unread emails and create draft responses using the Gmail API.2-
- AlicenseNot gradedqualityDmaintenanceEnables Claude to read, search, send, and manage Gmail messages and threads through natural language.89 npmMIT