Gmail MCP Server
Provides controlled, read-only access to a Gmail inbox with advanced filtering capabilities by sender, label, date, and subject. It allows for fetching and searching emails while maintaining privacy through configurable firewall-like rules that restrict access to specific messages.
Click on "Install 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 Serversummarize my latest 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 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 itOption 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-mcpA 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.jsonStep 2 — Start the server
docker compose up -d
# Server runs at http://localhost:8000/mcpStep 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.appStep 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/mcpSave — 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 |
| Show active filter rules without fetching any email |
| Reload and display the current filter configuration |
| Fetch emails matching your filter config |
| Search emails — your query is ANDed with the active filters |
| Get details for a specific email (filter-verified) |
Privacy & Security
Read-only access: Only
gmail.readonlyscope is requested — Claude cannot send, delete, or modify emailsFilter enforcement: Every tool call enforces your
filters.yamlrules before returning dataNo body by default: Only metadata and 200-character snippets are returned unless you enable
allow_full_bodyinfilters.yamlAccess 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
This server cannot be installed
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/dhagash2310/gmail-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server