Gmail MCP Server
Enables interaction with Gmail through MCP-compatible clients to list, read, search, and send emails. It supports advanced features such as managing labels, handling threaded replies, and utilizing Gmail's native search syntax.
README
Gmail MCP Server
A Model Context Protocol (MCP) server that provides Gmail access for Claude Code and other MCP-compatible clients.
Features
- List emails from any folder (inbox, sent, unread, starred, etc.)
- Read full email content
- Send emails with automatic signature
- Reply to threads with proper threading headers
- Search using Gmail's query syntax
- Manage labels (star, archive, mark read/unread)
Prerequisites
- Node.js 20 or higher
- A Google Cloud project with Gmail API enabled
- OAuth 2.0 credentials (Desktop app type)
Setup
1. Create a Google Cloud Project
If you don't have one already:
gcloud projects create your-project-name --name="Your MCP Tools"
gcloud config set project your-project-name
gcloud services enable gmail.googleapis.com
2. Configure OAuth Consent Screen
- Go to Google Cloud Console - OAuth Consent
- Select Internal (for Google Workspace) or External (for personal Gmail)
- Add these scopes:
https://www.googleapis.com/auth/gmail.readonlyhttps://www.googleapis.com/auth/gmail.sendhttps://www.googleapis.com/auth/gmail.modify
3. Create OAuth Credentials
- Go to Google Cloud Console - Credentials
- Click Create Credentials > OAuth client ID
- Select Desktop app as the application type
- Download the JSON file
- Save it as
~/.mcp-gmail/credentials.json
4. Install and Build
git clone https://github.com/brentwpeterson/mcp-gmail.git
cd mcp-gmail
npm install
npm run build
5. Authenticate
npm run auth
This opens a browser for Google OAuth. Approve the permissions, and tokens will be saved to ~/.mcp-gmail/token.json.
6. Configure Your MCP Client
Add to your MCP configuration file (e.g., .mcp.json for Claude Code):
{
"mcpServers": {
"gmail": {
"command": "node",
"args": ["/absolute/path/to/mcp-gmail/dist/index.js"]
}
}
}
Restart your MCP client to load the server.
Available Tools
| Tool | Description |
|---|---|
gmail_list_emails |
List recent emails with optional folder and search query |
gmail_get_email |
Get full content of a specific email |
gmail_send_email |
Send a new email or reply to a thread |
gmail_search |
Search emails using Gmail query syntax |
gmail_get_thread |
Get all messages in a conversation |
gmail_modify_labels |
Add/remove labels (read, star, archive) |
gmail_list_labels |
List all available labels |
Folder Options
The gmail_list_emails tool supports these folders:
| Folder | Description |
|---|---|
inbox (default) |
Inbox emails |
sent |
Sent emails |
unread |
Unread inbox emails |
starred |
Starred emails |
important |
Important emails |
trash |
Deleted emails |
spam |
Spam folder |
all |
All emails (no filter) |
Gmail Search Syntax
The gmail_search tool and query parameter support Gmail's search syntax:
from:user@example.com- From specific senderto:user@example.com- To specific recipientsubject:meeting- Subject contains wordis:unread- Unread messagesis:starred- Starred messageshas:attachment- Has attachmentsnewer_than:2d- Newer than 2 daysolder_than:1w- Older than 1 weeklabel:work- Has specific label
Combine with spaces (AND) or OR: from:boss@work.com is:unread
Configuration
Environment variables (optional):
| Variable | Description | Default |
|---|---|---|
GMAIL_CONFIG_DIR |
Config directory | ~/.mcp-gmail |
GMAIL_CREDENTIALS_PATH |
Path to credentials.json | ~/.mcp-gmail/credentials.json |
How It Works
- Signatures: Automatically fetched from your Gmail "Send mail as" settings
- Thread Replies: Proper
In-Reply-ToandReferencesheaders for correct threading - Sender Name: Uses your display name from Gmail settings
Security
- OAuth tokens are stored locally in
~/.mcp-gmail/token.json - Credentials and tokens are never committed (see
.gitignore) - Only you can access your email through this server
- Tokens can be revoked at any time from Google Account Permissions
License
MIT
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.