Gmail AutoAuth MCP Server
About
Enables AI assistants to manage Gmail through natural language interactions.
Details
- Author
- raghavared
- Categories
- Communication, Other, Automation, Productivity
Jump to
Setup Instructions for Cloud Environment
- Set up your n8n container to expose a port for authentication
- Configure a reverse proxy to forward traffic from your domain (e.g.,domain.com) to this port
- Add an A record in your DNS settings to resolve your domain to your cloud server's IP address
- In your Google Cloud Console, add your custom domain callback URL (e.g.,https://domain.com/v2/auth/google/callback) to the authorized redirect URIs list
npx @raghavared/gmail-mcp auth https://domain.com/v2/auth/google/callback
{ "mcpServers": { "gmail": { "command": "npx", "args": [ "@raghavared/gmail-mcp" ] } } }
This approach allows authentication flows to work properly in environments where localhost isn't accessible, such as containerized applications or cloud servers.
The server provides the following tools that can be used through Claude Desktop:
{ "to": ["recipient@example.com"], "subject": "Meeting Tomorrow", "body": "Hi,\n\nJust a reminder about our meeting tomorrow at 10 AM.\n\nBest regards", "cc": ["cc@example.com"], "bcc": ["bcc@example.com"] }
Creates a draft email without sending it.
{ "to": ["recipient@example.com"], "subject": "Draft Report", "body": "Here's the draft report for your review.", "cc": ["manager@example.com"] }
Retrieves the content of a specific email by its ID.
{ "messageId": "182ab45cd67ef" }
Searches for emails using Gmail search syntax.
{ "query": "from:sender@example.com after:2024/01/01 has:attachment", "maxResults": 10 }
Adds or removes labels from emails (move to different folders, archive, etc.).
{ "messageId": "182ab45cd67ef", "addLabelIds": ["IMPORTANT"], "removeLabelIds": ["INBOX"] }
{ "messageId": "182ab45cd67ef" }
A Model Context Protocol (MCP) server for Gmail integration in Claude Desktop with auto authentication support. This server enables AI assistants to manage Gmail through natural language interactions.
- Send emails with subject, content, attachments, and recipients
- Full support for international characters in subject lines and email content
- Read email messages by ID with advanced MIME structure handling
- View email attachments information (filenames, types, sizes)
- Search emails with various criteria (subject, sender, date range)
- Comprehensive label management with ability to create, update, delete and list labels
- List all available Gmail labels (system and user-defined)
- List emails in inbox, sent, or custom labels
- Mark emails as read/unread
- Move emails to different labels/folders
- Delete emails
- Batch operations for efficiently processing multiple emails at once
- Full integration with Gmail API
- Simple OAuth2 authentication flow with auto browser launch
- Support for both Desktop and Web application credentials
- Global credential storage for convenience
To install Gmail AutoAuth for Claude Desktop automatically viaSmithery:
npx -y @smithery/cli install @raghavared/gmail-mcp --client claude
-
Create a Google Cloud Project and obtain credentials:
- Go to "APIs & Services" > "Credentials"
- Click "Create Credentials" > "OAuth client ID"
- Choose either "Desktop app" or "Web application" as application type
- Give it a name and click "Create"
- For Web application, addhttp://localhost:3000/v2/auth/google/callbackto the authorized redirect URIs
- Download the JSON file of your client's OAuth keys
- Rename the key file totoken.json
# First time: Place token.json in your home directory's .gmail-mcp folder mkdir -p ~/.gmail-mcp mv token.json ~/.gmail-mcp/ # Run authentication from anywhere npx @raghavared/gmail-mcp auth
# Place token.json in your current directory # The file will be automatically copied to global config npx @raghavared/gmail-mcp auth
- Look fortoken.jsonin the current directory or~/.gmail-mcp/
- If found in current directory, copy it to~/.gmail-mcp/
- Open your default browser for Google authentication
- Save credentials as~/.gmail-mcp/credentials.json
- After successful authentication, credentials are stored globally in~/.gmail-mcp/and can be used from any directory
- Both Desktop app and Web application credentials are supported
- For Web application credentials, make sure to addhttp://localhost:3000/v2/auth/google/callbackto your authorized redirect URIs
{ "mcpServers": { "gmail": { "command": "npx", "args": [ "@raghavared/gmail-mcp" ] } } }
docker run -i --rm \ --mount type=bind,source=/path/to/token.json,target=/token.json \ -v gmail-mcp:/gmail-server \ -e GMAIL_OAUTH_PATH=/token.json \ -e "GMAIL_CREDENTIALS_PATH=/gmail-server/credentials.json" \ -p 3000:3000 \ mcp/gmail auth
{ "mcpServers": { "gmail": { "command": "docker", "args": [ "run", "-i", "--rm", "-v", "mcp-gmail:/gmail-server", "-e", "GMAIL_CREDENTIALS_PATH=/gmail-server/credentials.json", "gmail-mcp" ] } } }
For cloud server environments (like n8n), you can specify a custom callback URL during authentication:
npx @raghavared/gmail-mcp auth {domain}/v2/auth/google/callback
Setup Instructions for Cloud Environment
- Set up your n8n container to expose a port for authentication
- Configure a reverse proxy to forward traffic from your domain (e.g.,domain.com) to this port
- Add an A record in your DNS settings to resolve your domain to your cloud server's IP address
- In your Google Cloud Console, add your custom domain callback URL (e.g.,https://domain.com/v2/auth/google/callback) to the authorized redirect URIs list
npx @raghavared/gmail-mcp auth https://domain.com/v2/auth/google/callback
{ "mcpServers": { "gmail": { "command": "npx", "args": [ "@raghavared/gmail-mcp" ] } } }
This approach allows authentication flows to work properly in environments where localhost isn't accessible, such as containerized applications or cloud servers.
The server provides the following tools that can be used through Claude Desktop:
{ "to": ["recipient@example.com"], "subject": "Meeting Tomorrow", "body": "Hi,\n\nJust a reminder about our meeting tomorrow at 10 AM.\n\nBest regards", "cc": ["cc@example.com"], "bcc": ["bcc@example.com"] }
Creates a draft email without sending it.
{ "to": ["recipient@example.com"], "subject": "Draft Report", "body": "Here's the draft report for your review.", "cc": ["manager@example.com"] }
Retrieves the content of a specific email by its ID.
{ "messageId": "182ab45cd67ef" }
Searches for emails using Gmail search syntax.
{ "query": "from:sender@example.com after:2024/01/01 has:attachment", "maxResults": 10 }
Adds or removes labels from emails (move to different folders, archive, etc.).
{ "messageId": "182ab45cd67ef", "addLabelIds": ["IMPORTANT"], "removeLabelIds": ["INBOX"] }
{ "messageId": "182ab45cd67ef" }
7. List Email Labels (list_email_labels)
{ "name": "Important Projects", "messageListVisibility": "show", "labelListVisibility": "labelShow" }
{ "id": "Label_1234567890", "name": "Urgent Projects", "messageListVisibility": "show", "labelListVisibility": "labelShow" }
{ "id": "Label_1234567890" }
11. Get or Create Label (get_or_create_label)
Gets an existing label by name or creates it if it doesn't exist.
{ "name": "Project XYZ", "messageListVisibility": "show", "labelListVisibility": "labelShow" }
12. Batch Modify Emails (batch_modify_emails)
Modifies labels for multiple emails in efficient batches.
{ "messageIds": ["182ab45cd67ef", "182ab45cd67eg", "182ab45cd67eh"], "addLabelIds": ["IMPORTANT"], "removeLabelIds": ["INBOX"], "batchSize": 50 }
13. Batch Delete Emails (batch_delete_emails)
Permanently deletes multiple emails in efficient batches.
{ "messageIds": ["182ab45cd67ef", "182ab45cd67eg", "182ab45cd67eh"], "batchSize": 50 }
Thesearch_emailstool supports Gmail's powerful search operators:
You can combine multiple operators:from:john@example.com after:2024/01/01 has:attachment
The server intelligently extracts email content from complex MIME structures:
- Prioritizes plain text content when available
- Falls back to HTML content if plain text is not available
- Handles multi-part MIME messages with nested parts
- Processes attachments information (filename, type, size)
- Preserves original email headers (From, To, Subject, Date)
The server fully supports non-ASCII characters in email subjects and content, including:
- Turkish, Chinese, Japanese, Korean, and other non-Latin alphabets
- Special characters and symbols
- Proper encoding ensures correct display in email clients
The server provides a complete set of tools for managing Gmail labels:
- Create Labels: Create new labels with customizable visibility settings
- Update Labels: Rename labels or change their visibility settings
- Delete Labels: Remove user-created labels (system labels are protected)
- Find or Create: Get a label by name or automatically create it if not found
- List All Labels: View all system and user labels with detailed information
- Label Visibility Options: Control how labels appear in message and label lists
- messageListVisibility: Controls whether the label appears in the message list (showorhide)
- labelListVisibility: Controls how the label appears in the label list (labelShow,labelShowIfUnread, orlabelHide)
These label management features enable sophisticated organization of emails directly through Claude, without needing to switch to the Gmail interface.
The server includes efficient batch processing capabilities:
- Process up to 50 emails at once (configurable batch size)
- Automatic chunking of large email sets to avoid API limits
- Detailed success/failure reporting for each operation
- Graceful error handling with individual retries
- Perfect for bulk inbox management and organization tasks
- OAuth credentials are stored securely in your local environment (~/.gmail-mcp/)
- The server uses offline access to maintain persistent authentication
- Never share or commit your credentials to version control
- Regularly review and revoke unused access in your Google Account settings
- Credentials are stored globally but are only accessible by the current user
- Make suretoken.jsonis in either your current directory or~/.gmail-mcp/
- Check file permissions
- Ensure your OAuth keys file contains eitherweborinstalledcredentials
- For web applications, verify the redirect URI is correctly configured
- If port 3000 is already in use, please free it up before running authentication
- You can find and stop the process using that port
- If batch operations fail, they automatically retry individual items
- Check the detailed error messages for specific failures
- Consider reducing the batch size if you encounter rate limiting
Contributions are welcome! Please feel free to submit a Pull Request.
If you encounter any issues or have questions, please file an issue on the GitHub repository.
Query live Gmail data using LLMs via CData's read-only MCP server.
Search and delete emails in your Gmail account.
A standardized interface for managing, sending, and retrieving emails through the Gmail API.
Manage your Gmail account, including sending, reading, and organizing emails.
A super simple and tiny MCP server for gmail in python
Allows AI agents to search Gmail threads, learn your writing style, and draft emails.
An MCP server that enables AI models to interact directly with the Gmail API to manage emails.
An MCP server for integrating with the Gmail API to manage emails.
Most email MCP servers only read from IMAP. mail-mcp does everything: 30 tools for reading, searching, sending, replying, forwarding, and bulk operations across IMAP, SMTP, Microsoft Graph API, and Exchange Web Services. Multi-account, native OAuth2, built in Rust. Works with Gmail, Microsoft 365, Hotmail/Outlook.com, Zoho, and any standard IMAP/SMTP server.
MCP server for structured, read-only email access. Exposes a minimal, auditable API surface — AI agents can search and read emails, but cannot send, delete, or modify your mailbox.
Sign in to leave a review
Use Google, GitHub, or an email account so ratings stay tied to real people.
No reviews posted yet.


