A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://github.com/GongRzhe/Gmail-MCP-Server below:

GongRzhe/Gmail-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.

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.

Installation & Authentication

To install Gmail AutoAuth for Claude Desktop automatically via Smithery:

npx -y @smithery/cli install @gongrzhe/server-gmail-autoauth-mcp --client claude
  1. Create a Google Cloud Project and obtain credentials:

    a. Create a Google Cloud Project:

    b. Create OAuth 2.0 Credentials:

  2. Run Authentication:

    You can authenticate in two ways:

    a. Global Authentication (Recommended):

    # First time: Place gcp-oauth.keys.json in your home directory's .gmail-mcp folder
    mkdir -p ~/.gmail-mcp
    mv gcp-oauth.keys.json ~/.gmail-mcp/
    
    # Run authentication from anywhere
    npx @gongrzhe/server-gmail-autoauth-mcp auth

    b. Local Authentication:

    # Place gcp-oauth.keys.json in your current directory
    # The file will be automatically copied to global config
    npx @gongrzhe/server-gmail-autoauth-mcp auth

    The authentication process will:

    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
  3. Configure in Claude Desktop:

{
  "mcpServers": {
    "gmail": {
      "command": "npx",
      "args": [
        "@gongrzhe/server-gmail-autoauth-mcp"
      ]
    }
  }
}

If you prefer using Docker:

  1. Authentication:
docker run -i --rm \
  --mount type=bind,source=/path/to/gcp-oauth.keys.json,target=/gcp-oauth.keys.json \
  -v mcp-gmail:/gmail-server \
  -e GMAIL_OAUTH_PATH=/gcp-oauth.keys.json \
  -e "GMAIL_CREDENTIALS_PATH=/gmail-server/credentials.json" \
  -p 3000:3000 \
  mcp/gmail auth
  1. Usage:
{
  "mcpServers": {
    "gmail": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "-v",
        "mcp-gmail:/gmail-server",
        "-e",
        "GMAIL_CREDENTIALS_PATH=/gmail-server/credentials.json",
        "mcp/gmail"
      ]
    }
  }
}
Cloud Server Authentication

For cloud server environments (like n8n), you can specify a custom callback URL during authentication:

npx @gongrzhe/server-gmail-autoauth-mcp auth https://gmail.gongrzhe.com/oauth2callback
Setup Instructions for Cloud Environment
  1. Configure Reverse Proxy:

  2. DNS Configuration:

  3. Google Cloud Platform Setup:

  4. Run Authentication:

    npx @gongrzhe/server-gmail-autoauth-mcp auth https://gmail.gongrzhe.com/oauth2callback
  5. Configure in your application:

    {
      "mcpServers": {
        "gmail": {
          "command": "npx",
          "args": [
            "@gongrzhe/server-gmail-autoauth-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:

1. Send Email (send_email)

Sends a new email immediately. Supports plain text, HTML, or multipart emails with optional file attachments.

Basic Email:

{
  "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"],
  "mimeType": "text/plain"
}

Email with Attachments:

{
  "to": ["recipient@example.com"],
  "subject": "Project Files",
  "body": "Hi,\n\nPlease find the project files attached.\n\nBest regards",
  "attachments": [
    "/path/to/document.pdf",
    "/path/to/spreadsheet.xlsx",
    "/path/to/presentation.pptx"
  ]
}

HTML Email Example:

{
  "to": ["recipient@example.com"],
  "subject": "Meeting Tomorrow",
  "mimeType": "text/html",
  "body": "<html><body><h1>Meeting Reminder</h1><p>Just a reminder about our <b>meeting tomorrow</b> at 10 AM.</p><p>Best regards</p></body></html>"
}

Multipart Email Example (HTML + Plain Text):

{
  "to": ["recipient@example.com"],
  "subject": "Meeting Tomorrow",
  "mimeType": "multipart/alternative",
  "body": "Hi,\n\nJust a reminder about our meeting tomorrow at 10 AM.\n\nBest regards",
  "htmlBody": "<html><body><h1>Meeting Reminder</h1><p>Just a reminder about our <b>meeting tomorrow</b> at 10 AM.</p><p>Best regards</p></body></html>"
}
2. Draft Email (draft_email)

Creates a draft email without sending it. Also supports attachments.

{
  "to": ["recipient@example.com"],
  "subject": "Draft Report",
  "body": "Here's the draft report for your review.",
  "cc": ["manager@example.com"],
  "attachments": ["/path/to/draft_report.docx"]
}
3. Read Email (read_email)

Retrieves the content of a specific email by its ID. Now shows enhanced attachment information.

{
  "messageId": "182ab45cd67ef"
}

Enhanced Response includes attachment details:

Subject: Project Files
From: sender@example.com
To: recipient@example.com
Date: Thu, 19 Jun 2025 10:30:00 -0400

Email body content here...

Attachments (2):
- document.pdf (application/pdf, 245 KB, ID: ANGjdJ9fkTs-i3GCQo5o97f_itG...)
- spreadsheet.xlsx (application/vnd.openxmlformats-officedocument.spreadsheetml.sheet, 89 KB, ID: BWHkeL8gkUt-j4HDRp6o98g_juI...)
4. Download Attachment (download_attachment)

NEW: Downloads email attachments to your local filesystem.

{
  "messageId": "182ab45cd67ef",
  "attachmentId": "ANGjdJ9fkTs-i3GCQo5o97f_itG...",
  "savePath": "/path/to/downloads",
  "filename": "downloaded_document.pdf"
}

Parameters:

5. Search Emails (search_emails)

Searches for emails using Gmail search syntax.

{
  "query": "from:sender@example.com after:2024/01/01 has:attachment",
  "maxResults": 10
}
6. Modify Email (modify_email)

Adds or removes labels from emails (move to different folders, archive, etc.).

{
  "messageId": "182ab45cd67ef",
  "addLabelIds": ["IMPORTANT"],
  "removeLabelIds": ["INBOX"]
}
7. Delete Email (delete_email)

Permanently deletes an email.

{
  "messageId": "182ab45cd67ef"
}
8. List Email Labels (list_email_labels)

Retrieves all available Gmail labels.

9. Create Label (create_label)

Creates a new Gmail label.

{
  "name": "Important Projects",
  "messageListVisibility": "show",
  "labelListVisibility": "labelShow"
}
10. Update Label (update_label)

Updates an existing Gmail label.

{
  "id": "Label_1234567890",
  "name": "Urgent Projects",
  "messageListVisibility": "show",
  "labelListVisibility": "labelShow"
}
11. Delete Label (delete_label)

Deletes a Gmail label.

{
  "id": "Label_1234567890"
}
12. 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"
}
13. Batch Modify Emails (batch_modify_emails)

Modifies labels for multiple emails in efficient batches.

{
  "messageIds": ["182ab45cd67ef", "182ab45cd67eg", "182ab45cd67eh"],
  "addLabelIds": ["IMPORTANT"],
  "removeLabelIds": ["INBOX"],
  "batchSize": 50
}
14. Batch Delete Emails (batch_delete_emails)

Permanently deletes multiple emails in efficient batches.

{
  "messageIds": ["182ab45cd67ef", "182ab45cd67eg", "182ab45cd67eh"],
  "batchSize": 50
}
14. Create Filter (create_filter)

Creates a new Gmail filter with custom criteria and actions.

{
  "criteria": {
    "from": "newsletter@company.com",
    "hasAttachment": false
  },
  "action": {
    "addLabelIds": ["Label_Newsletter"],
    "removeLabelIds": ["INBOX"]
  }
}
15. List Filters (list_filters)

Retrieves all Gmail filters.

16. Get Filter (get_filter)

Gets details of a specific Gmail filter.

{
  "filterId": "ANe1Bmj1234567890"
}
17. Delete Filter (delete_filter)

Deletes a Gmail filter.

{
  "filterId": "ANe1Bmj1234567890"
}
18. Create Filter from Template (create_filter_from_template)

Creates a filter using pre-defined templates for common scenarios.

{
  "template": "fromSender",
  "parameters": {
    "senderEmail": "notifications@github.com",
    "labelIds": ["Label_GitHub"],
    "archive": true
  }
}
Filter Management Features

You can create filters based on various criteria:

Criteria Example Description from "sender@example.com" Emails from a specific sender to "recipient@example.com" Emails sent to a specific recipient subject "Meeting" Emails with specific text in subject query "has:attachment" Gmail search query syntax negatedQuery "spam" Text that must NOT be present hasAttachment true Emails with attachments size 10485760 Email size in bytes sizeComparison "larger" Size comparison (larger, smaller)

Filters can perform the following actions:

Action Example Description addLabelIds ["IMPORTANT", "Label_Work"] Add labels to matching emails removeLabelIds ["INBOX", "UNREAD"] Remove labels from matching emails forward "backup@example.com" Forward emails to another address

The server includes pre-built templates for common filtering scenarios:

1. From Sender Template (fromSender)

Filters emails from a specific sender and optionally archives them.

{
  "template": "fromSender",
  "parameters": {
    "senderEmail": "newsletter@company.com",
    "labelIds": ["Label_Newsletter"],
    "archive": true
  }
}
2. Subject Filter Template (withSubject)

Filters emails with specific subject text and optionally marks as read.

{
  "template": "withSubject",
  "parameters": {
    "subjectText": "[URGENT]",
    "labelIds": ["Label_Urgent"],
    "markAsRead": false
  }
}
3. Attachment Filter Template (withAttachments)

Filters all emails with attachments.

{
  "template": "withAttachments",
  "parameters": {
    "labelIds": ["Label_Attachments"]
  }
}
4. Large Email Template (largeEmails)

Filters emails larger than a specified size.

{
  "template": "largeEmails",
  "parameters": {
    "sizeInBytes": 10485760,
    "labelIds": ["Label_Large"]
  }
}
5. Content Filter Template (containingText)

Filters emails containing specific text and optionally marks as important.

{
  "template": "containingText",
  "parameters": {
    "searchText": "invoice",
    "labelIds": ["Label_Finance"],
    "markImportant": true
  }
}
6. Mailing List Template (mailingList)

Filters mailing list emails and optionally archives them.

{
  "template": "mailingList",
  "parameters": {
    "listIdentifier": "dev-team",
    "labelIds": ["Label_DevTeam"],
    "archive": true
  }
}

Here are some practical filter examples:

Auto-organize newsletters:

{
  "criteria": {
    "from": "newsletter@company.com"
  },
  "action": {
    "addLabelIds": ["Label_Newsletter"],
    "removeLabelIds": ["INBOX"]
  }
}

Handle promotional emails:

{
  "criteria": {
    "query": "unsubscribe OR promotional"
  },
  "action": {
    "addLabelIds": ["Label_Promotions"],
    "removeLabelIds": ["INBOX", "UNREAD"]
  }
}

Priority emails from boss:

{
  "criteria": {
    "from": "boss@company.com"
  },
  "action": {
    "addLabelIds": ["IMPORTANT", "Label_Boss"]
  }
}

Large attachments:

{
  "criteria": {
    "size": 10485760,
    "sizeComparison": "larger",
    "hasAttachment": true
  },
  "action": {
    "addLabelIds": ["Label_LargeFiles"]
  }
}

The search_emails tool supports Gmail's powerful search operators:

Operator Example Description from: from:john@example.com Emails from a specific sender to: to:mary@example.com 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:john@example.com after:2024/01/01 has:attachment

The server provides comprehensive attachment functionality:

Supported File Types: All standard file types including PDF, DOCX, XLSX, PPTX, images (PNG, JPG, GIF), archives (ZIP, RAR), and more.

The server intelligently extracts email content from complex MIME structures:

International Character Support

The server fully supports non-ASCII characters in email subjects and content, including:

Comprehensive Label Management

The server provides a complete set of tools for managing Gmail labels:

Label visibility settings include:

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:

  1. OAuth Keys Not Found

  2. Invalid Credentials Format

  3. Port Already in Use

  4. Batch Operation Failures

  5. Attachment Issues

Contributions are welcome! Please feel free to submit a Pull Request.

The evals package loads an mcp client that then runs the index.ts file, so there is no need to rebuild between tests. You can load environment variables by prefixing the npx command. Full documentation can be found here.

OPENAI_API_KEY=your-key  npx mcp-eval src/evals/evals.ts src/index.ts

MIT

If you encounter any issues or have questions, please file an issue on the GitHub repository.


RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4