gmail-mcp
Search, read, and create draft emails in Gmail with whitelisted query filters and optional recipient restrictions.
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-mcpsearch my inbox for unread emails"
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
MCP server for reading Gmail and creating drafts via AI assistants (Claude, OpenClaw, etc.).
Security model:
🔒 Read-only by default — no send capability, ever
📋 Drafts only — human must open Gmail and send manually
🔍 Query whitelist — only configured filter queries are allowed
👤 Optional recipient whitelist for drafts
🔑 API key authentication for HTTP/SSE mode
Tools
Tool | Description |
| Show configured allowed search queries |
| Search Gmail (query must match a whitelisted filter) |
| Fetch full content of an email by ID |
| Create a draft — NOT sent, human reviews in Gmail |
Related MCP server: Gmail MCP Server
Setup
1. Google Cloud credentials
Go to Google Cloud Console
Create a project → Enable Gmail API
Create OAuth2 credentials (Desktop app type)
Download as
credentials.jsonand place in the project folder
2. Install
git clone https://github.com/mortenv/gmail-mcp
cd gmail-mcp
pip install -e .
# or with uv:
uv sync3. Configure
cp config.example.yaml config.yamlEdit config.yaml:
Add your filter queries (Gmail search syntax)
Optionally restrict draft recipients
4. Authenticate
First run opens a browser for OAuth2 login:
gmail-mcp config.yamlToken is cached in token.json — subsequent runs don't need the browser.
5. Connect to Claude / OpenClaw
stdio mode (local):
{
"mcpServers": {
"gmail": {
"command": "gmail-mcp",
"args": ["/path/to/config.yaml"]
}
}
}HTTP/SSE mode (remote server):
export GMAIL_MCP_API_KEY=$(python -c "import secrets; print(secrets.token_hex(32))")
gmail-mcp --http config.yaml{
"mcpServers": {
"gmail": {
"url": "https://your-server:8001/sse",
"headers": { "X-API-Key": "your-key" }
}
}
}Filter syntax
Uses standard Gmail search syntax:
filters:
- query: "label:inbox"
label: "Inbox"
- query: "from:boss@company.com"
label: "From boss"
- query: "label:invoices newer_than:30d"
label: "Recent invoices"The AI can narrow results by appending terms to a base query:
"label:inbox subject:urgent" — allowed if label:inbox is whitelisted.
Security notes
credentials.jsonandtoken.jsonare gitignored — never commit themOAuth scopes:
gmail.readonly+gmail.compose(nogmail.send)Drafts require human review — the server has no way to send email
License
MIT
Related MCP Connectors
Multiple Gmail accounts, editable Google Sheets & Docs for AI agents. Deny-by-default access rules.
- PO6 MailboxOAuthcom.po6
Give AI agents secure access to your email via private aliases with dedicated mailbox storage.
Connect any mailbox to Claude, ChatGPT & AI: read, send, reply, schedule & search emails.
Permissioned access to Gmail, Drive and Calendar via the user's own Google account
Related MCP Servers
- AlicenseNot gradedqualityNot gradedmaintenanceEnables AI assistants to interact with Gmail through natural language, supporting email sending/reading, searching, draft management, label organization, and batch operations with secure OAuth authentication.-
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants to interact with Gmail through OAuth2 authentication, allowing users to list, search, read emails, and create drafts with a safety-first design that prevents accidental sends by default.62 npmMIT
- AlicenseNot gradedqualityFmaintenanceEnables AI assistants to search, read, and download attachments from Gmail using natural language, with read-only access.MIT
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants to read unread Gmail messages and create threaded draft replies, without ever sending email automatically.MIT