Gmail AutoAuth MCP Server
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.
Features
- 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)
- 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
- 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
Installation & Authentication
Installing via Smithery
To install Gmail AutoAuth for Claude Desktop automatically via Smithery:
1npx -y @smithery/cli install @gongrzhe/server-gmail-autoauth-mcp --client claude
Installing Manually
-
Create a Google Cloud Project and obtain credentials:
a. Create a Google Cloud Project:
- Go to Google Cloud Console
- Create a new project or select an existing one
- Enable the Gmail API for your project
b. Create OAuth 2.0 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, add
http://localhost:3000/oauth2callback
to the authorized redirect URIs - Download the JSON file of your client's OAuth keys
- Rename the key file to
gcp-oauth.keys.json
-
Run Authentication:
You can authenticate in two ways:
a. Global Authentication (Recommended):
1# First time: Place gcp-oauth.keys.json in your home directory's .gmail-mcp folder 2mkdir -p ~/.gmail-mcp 3mv gcp-oauth.keys.json ~/.gmail-mcp/ 4 5# Run authentication from anywhere 6npx @gongrzhe/server-gmail-autoauth-mcp auth
b. Local Authentication:
1# Place gcp-oauth.keys.json in your current directory 2# The file will be automatically copied to global config 3npx @gongrzhe/server-gmail-autoauth-mcp auth
The authentication process will:
-
Look for
gcp-oauth.keys.json
in 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
Note:
- 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 add
http://localhost:3000/oauth2callback
to your authorized redirect URIs
-
-
Configure in Claude Desktop:
1{ 2 "mcpServers": { 3 "gmail": { 4 "command": "npx", 5 "args": [ 6 "@gongrzhe/server-gmail-autoauth-mcp" 7 ] 8 } 9 } 10}
Docker Support
If you prefer using Docker:
- Authentication:
1docker run -i --rm \ 2 --mount type=bind,source=/path/to/gcp-oauth.keys.json,target=/gcp-oauth.keys.json \ 3 -v mcp-gmail:/gmail-server \ 4 -e GMAIL_OAUTH_PATH=/gcp-oauth.keys.json \ 5 -e "GMAIL_CREDENTIALS_PATH=/gmail-server/credentials.json" \ 6 -p 3000:3000 \ 7 mcp/gmail auth
- Usage:
1{ 2 "mcpServers": { 3 "gmail": { 4 "command": "docker", 5 "args": [ 6 "run", 7 "-i", 8 "--rm", 9 "-v", 10 "mcp-gmail:/gmail-server", 11 "-e", 12 "GMAIL_CREDENTIALS_PATH=/gmail-server/credentials.json", 13 "mcp/gmail" 14 ] 15 } 16 } 17}
Available Tools
The server provides the following tools that can be used through Claude Desktop:
1. Send Email (send_email
)
Sends a new email immediately.
1{ 2 "to": ["[email protected]"], 3 "subject": "Meeting Tomorrow", 4 "body": "Hi,\n\nJust a reminder about our meeting tomorrow at 10 AM.\n\nBest regards", 5 "cc": ["[email protected]"], 6 "bcc": ["[email protected]"] 7}
2. Draft Email (draft_email
)
Creates a draft email without sending it.
1{ 2 "to": ["[email protected]"], 3 "subject": "Draft Report", 4 "body": "Here's the draft report for your review.", 5 "cc": ["[email protected]"] 6}
3. Read Email (read_email
)
Retrieves the content of a specific email by its ID.
1{ 2 "messageId": "182ab45cd67ef" 3}
4. Search Emails (search_emails
)
Searches for emails using Gmail search syntax.
1{ 2 "query": "from:[email protected] after:2024/01/01 has:attachment", 3 "maxResults": 10 4}
5. Modify Email (modify_email
)
Adds or removes labels from emails (move to different folders, archive, etc.).
1{ 2 "messageId": "182ab45cd67ef", 3 "addLabelIds": ["IMPORTANT"], 4 "removeLabelIds": ["INBOX"] 5}
6. Delete Email (delete_email
)
Permanently deletes an email.
1{ 2 "messageId": "182ab45cd67ef" 3}
7. List Email Labels (list_email_labels
)
Retrieves all available Gmail labels.
1{}
Advanced Search Syntax
The search_emails
tool supports Gmail's powerful search operators:
| Operator | Example | Description |
|----------|---------|-------------|
| from:
| from:[email protected]
| Emails from a specific sender |
| to:
| to:[email protected]
| Emails sent to a specific recipient |
| subject:
| subject:"meeting notes"
| Emails with specific text in the subject |
| has:attachment
| has:attachment
| Emails with attachments |
| after:
| after:2024/01/01
| Emails received after a date |
| before:
| before:2024/02/01
| Emails received before a date |
| is:
| is:unread
| Emails with a specific state |
| label:
| label:work
| Emails with a specific label |
You can combine multiple operators: from:[email protected] after:2024/01/01 has:attachment
Advanced Features
Email Content Extraction
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)
International Character Support
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
Security Notes
- 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
Troubleshooting
-
OAuth Keys Not Found
- Make sure
gcp-oauth.keys.json
is in either your current directory or~/.gmail-mcp/
- Check file permissions
- Make sure
-
Invalid Credentials Format
- Ensure your OAuth keys file contains either
web
orinstalled
credentials - For web applications, verify the redirect URI is correctly configured
- Ensure your OAuth keys file contains either
-
Port Already in Use
- If port 3000 is already in use, please free it up before running authentication
- You can find and stop the process using that port
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
License
MIT
Support
If you encounter any issues or have questions, please file an issue on the GitHub repository.