Gmail MCP Server
Enables reading, sending, archiving, and managing Gmail emails and labels through Google OAuth authentication, acting as an OAuth proxy to the Gmail API.
README
gmail-mcp
MCP server for Gmail - read, send, archive, and manage emails.
Setup
1. Create Google OAuth credentials
- Go to Google Cloud Console
- Create a new project (or use existing)
- Enable the Gmail API
- Go to APIs & Services → OAuth consent screen, set up consent screen
- Go to APIs & Services → Credentials → Create Credentials → OAuth client ID
- Choose Web application
- Add
http://localhost:3000/callbackto Authorized redirect URIs - Note your Client ID and Client Secret
2. Run the server
GOOGLE_CLIENT_ID='your-client-id' \
GOOGLE_CLIENT_SECRET='your-client-secret' \
MCP_TRANSPORT=http \
npm start
The server runs on http://localhost:3000 by default. Change with PORT=3001.
3. Add to your MCP client
claude mcp add gmail-mcp http://localhost:3000/mcp
Architecture
This server acts as an OAuth proxy to Google:
graph LR
A[MCP client] <--> B[gmail-mcp] <--> C[Google OAuth/API]
- Server advertises itself as an OAuth authorization server via
/.well-known/oauth-authorization-server /registerreturns the Google OAuth client credentials/authorizeredirects to Google, encoding the client's callback URL in state/callbackreceives the code from Google and forwards to the client's callback/tokenproxies token requests to Google, injecting client credentials/mcphandles MCP requests, using the bearer token to call Gmail API
The server holds no tokens or state - it just proxies OAuth to Google.
Tools
| Tool | Description |
|---|---|
gmail_get_profile |
Get user's email address and profile info |
| Messages | |
gmail_messages_list |
Search/list messages (consider gmail_threads_list instead) |
gmail_message_get |
Get a single message |
gmail_message_send |
Send an email |
gmail_message_modify |
Add/remove labels |
gmail_message_archive |
Archive (remove from inbox) |
gmail_message_trash |
Move to trash |
gmail_message_untrash |
Restore from trash |
gmail_message_delete |
Permanently delete |
gmail_messages_batch_modify |
Bulk label changes |
gmail_messages_batch_delete |
Bulk permanent delete |
| Threads | |
gmail_threads_list |
Search/list threads (recommended) |
gmail_thread_get |
Get all messages in a thread (recommended) |
gmail_thread_modify |
Add/remove labels |
gmail_thread_trash |
Move to trash |
gmail_thread_untrash |
Restore from trash |
gmail_thread_delete |
Permanently delete |
| Drafts | |
gmail_drafts_list |
List drafts |
gmail_draft_get |
Get a draft |
gmail_draft_create |
Create a draft |
gmail_draft_update |
Update a draft |
gmail_draft_send |
Send a draft |
gmail_draft_delete |
Delete a draft |
| Labels | |
gmail_labels_list |
List all labels |
gmail_label_get |
Get a label |
gmail_label_create |
Create a label |
gmail_label_update |
Update a label |
gmail_label_delete |
Delete a label |
| Attachments | |
gmail_attachment_get |
Download attachment |
| Filters | |
gmail_filters_list |
List email filters |
gmail_filter_get |
Get a filter |
gmail_filter_create |
Create a filter |
gmail_filter_delete |
Delete a filter |
| Settings | |
gmail_vacation_get |
Get vacation auto-reply settings |
gmail_vacation_set |
Set vacation auto-reply settings |
Gmail API Scopes
gmail.readonly- Read messages and labelsgmail.send- Send messagesgmail.modify- Modify messages (archive, labels, trash)
Development
npm install
npm run build
npm run lint
npm test
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.