Gmail MCP Server
A privacy-focused MCP server that grants Claude read-only access to Gmail using strict, user-defined filters to control which emails are exposed. It enables searching and fetching email metadata while ensuring data security through OAuth and localized filter enforcement.
README
Gmail MCP Server
A privacy-first Model Context Protocol server that gives Claude controlled, read-only access to your Gmail inbox. You define exactly which emails Claude can see — nothing else is exposed.
Why this is different
Most Gmail MCP servers give Claude unrestricted access to your entire inbox. This one doesn't.
| Feature | gmail-mcp | Others |
|---|---|---|
| Filter by sender domain | Yes | No |
| Filter by label, date, subject, size | Yes | No |
| Block specific subject keywords | Yes | No |
| Per-request body privacy control | Yes | No |
| Access log (no email content) | Yes | No |
| Read-only OAuth scope | Yes | Some |
Your config/filters.yaml acts as a firewall — Claude's query is always ANDed with your rules, and it cannot be bypassed even if Claude tries to access a specific message ID directly.
Prerequisites
1. Google API credentials
- Go to Google Cloud Console
- Create a new project (or select an existing one)
- Enable the Gmail API: APIs & Services → Enable APIs → search "Gmail API" → Enable
- Create OAuth credentials: APIs & Services → Credentials → Create Credentials → OAuth Client ID
- Application type: Desktop app
- Download the JSON file
- Save it to
~/.gmail_mcp/credentials.json
2. Configure your filters
Edit config/filters.yaml to control which emails Claude can access.
The file is heavily commented — every option is explained inline.
filters:
from_addresses: ["trusted@example.com"] # Only emails from these senders
labels: ["INBOX"] # Only emails with these labels
unread_only: false # Set true for unread only
date_after: "2025-01-01" # Ignore older emails
subject_exclude: ["unsubscribe"] # Skip marketing emails
max_results: 50 # Cap per request
privacy:
allow_full_body: false # Keep false unless you need it
Option A — Claude Desktop (local, no tunnel needed)
Best for: everyday use with the Claude Desktop app on Mac or Windows.
The server runs as a local subprocess over stdio — no port, no URL, no Docker required.
Install:
git clone https://github.com/dhagash2310/gmail-mcp.git
cd gmail-mcp
python3 -m venv .venv
source .venv/bin/activate # Windows: .venv\Scripts\activate
pip install -e .
First run (OAuth login):
gmail-mcp
A browser window opens. Log in and grant access. Your token is saved to ~/.gmail_mcp/token.json.
Add to Claude Desktop:
Edit ~/Library/Application Support/Claude/claude_desktop_config.json (Mac) or
%APPDATA%\Claude\claude_desktop_config.json (Windows):
{
"mcpServers": {
"gmail": {
"command": "/path/to/gmail-mcp/.venv/bin/gmail-mcp",
"env": {
"GMAIL_CREDENTIALS_PATH": "/Users/you/.gmail_mcp/credentials.json",
"GMAIL_FILTER_CONFIG_PATH": "/path/to/gmail-mcp/config/filters.yaml"
}
}
}
}
Restart Claude Desktop. The Gmail tools will appear automatically.
Option B — Docker + ngrok (Claude.ai browser version)
Best for: using the server with Claude.ai in your browser, or any other MCP-compatible web client (ChatGPT, etc.).
Claude.ai is a cloud app and cannot reach localhost directly, so you run the server in HTTP mode and use ngrok to give it a public HTTPS URL.
Step 1 — Complete OAuth login (first time only)
The container handles headless auth — it prints a URL for you to open in your browser and paste the code back.
mkdir -p ~/.gmail_mcp
cp /path/to/your/credentials.json ~/.gmail_mcp/credentials.json
docker compose run --rm gmail-mcp
# Opens a URL — open it in your browser, approve access, paste the code back
# Token is saved to ~/.gmail_mcp/token.json
Step 2 — Start the server
docker compose up -d
# Server runs at http://localhost:8000/mcp
Step 3 — Expose with ngrok
# Install ngrok: https://ngrok.com/download or brew install ngrok
ngrok http 8000
# You'll see a public URL like: https://abc123.ngrok-free.app
Step 4 — Connect Claude.ai
- Go to claude.ai → Settings → Connectors
- Click Add custom connector
- Enter your ngrok URL with the
/mcppath:https://abc123.ngrok-free.app/mcp - Save — the Gmail tools will appear in your next conversation.
Note: The ngrok URL changes each time you restart ngrok (on the free plan). You'll need to update the connector URL in Claude.ai when that happens. A paid ngrok plan gives you a stable domain.
Updating filters without restarting
The config/filters.yaml file is mounted into the container. Edit it on your host machine and call the apply_filters tool in Claude to reload it — no restart needed.
Available Tools
| Tool | Description |
|---|---|
preview_filters |
Show active filter rules without fetching any email |
apply_filters |
Reload and display the current filter configuration |
fetch_emails |
Fetch emails matching your filter config |
search_emails |
Search emails — your query is ANDed with the active filters |
get_email_metadata |
Get details for a specific email (filter-verified) |
Privacy & Security
- Read-only access: Only
gmail.readonlyscope is requested — Claude cannot send, delete, or modify emails - Filter enforcement: Every tool call enforces your
filters.yamlrules before returning data - No body by default: Only metadata and 200-character snippets are returned unless you enable
allow_full_bodyinfilters.yaml - Access logging: Every tool call is logged to
~/.gmail_mcp/access.log(no email content in the log) - Local only: No data is sent to any third-party service — the server runs entirely on your machine
推荐服务器
Baidu Map
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。
VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。
e2b-mcp-server
使用 MCP 通过 e2b 运行代码。
Neon MCP Server
用于与 Neon 管理 API 和数据库交互的 MCP 服务器
Exa MCP Server
模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。