gmail-mcp-server

MCP.Pizza Chef: jasonsum

The gmail-mcp-server is a Model Context Protocol (MCP) server that integrates Gmail functionalities into MCP-enabled applications. It allows MCP clients to send, read, draft, respond to, and trash emails within Gmail, while ensuring user prompts before executing sensitive actions. This server exposes tools for managing emails programmatically, including sending emails, marking them as read, retrieving unread messages, and moving emails to trash. It facilitates seamless, secure, and interactive email management workflows for AI agents and copilots, enhancing productivity and communication within the MCP ecosystem.

Use This MCP server To

Send emails programmatically via Gmail Retrieve and read unread Gmail messages Mark Gmail emails as read automatically Move unwanted emails to Gmail trash Draft and respond to emails through MCP clients

README

Gmail Server for Model Context Protocol (MCP)

This MCP server integrates with Gmail to enable sending, removing, reading, drafting, and responding to emails.

Note: This server enables an MCP client to read, remove, and send emails. However, the client prompts the user before conducting such activities.

demo.mov

Components

Tools

  • send-email

    • Sends email to email address recipient
    • Input:
      • recipient_id (string): Email address of addressee
      • subject (string): Email subject
      • message (string): Email content
    • Returns status and message_id
  • trash-email

    • Moves email to trash
    • Input:
      • email_id (string): Auto-generated ID of email
    • Returns success message
  • mark-email-as-read

    • Marks email as read
    • Input:
      • email_id (string): Auto-generated ID of email
    • Returns success message
  • get-unread-emails

    • Retrieves unread emails
    • Returns list of emails including email ID
  • read-email

    • Retrieves given email content
    • Input:
      • email_id (string): Auto-generated ID of email
    • Returns dictionary of email metadata and marks email as read
  • open-email

    • Open email in browser
    • Input:
      • email_id (string): Auto-generated ID of email
    • Returns success message and opens given email in default browser

Setup

Gmail API Setup

  1. Create a new Google Cloud project
  2. Enable the Gmail API
  3. Configure an OAuth consent screen
    • Select "external". However, we will not publish the app.
    • Add your personal email address as a "Test user".
  4. Add OAuth scope https://www.googleapis.com/auth/gmail/modify
  5. Create an OAuth Client ID for application type "Desktop App"
  6. Download the JSON file of your client's OAuth keys
  7. Rename the key file and save it to your local machine in a secure location. Take note of the location.
    • The absolute path to this file will be passed as parameter --creds-file-path when the server is started.

Authentication

When the server is started, an authentication flow will be launched in your system browser. Token credentials will be subsequently saved (and later retrieved) in the absolute file path passed to parameter --token-path.

For example, you may use a dot directory in your home folder, replacing [your-home-folder].:

Parameter Example
--creds-file-path /[your-home-folder]/.google/client_creds.json
--token-path /[your-home-folder]/.google/app_tokens.json

Usage with Desktop App

Using uv is recommended.

To integrate this server with Claude Desktop as the MCP Client, add the following to your app's server configuration. By default, this is stored as ~/Library/Application\ Support/Claude/claude_desktop_config.json.

{
  "mcpServers": {
    "gdrive": {
      "command": "uv",
      "args": [
        "--directory",
        "[absolute-path-to-git-repo]",
        "run",
        "gmail",
        "--creds-file-path",
        "[absolute-path-to-credentials-file]",
        "--token-path",
        "[absolute-path-to-access-tokens-file]"
      ]
    }
  }
}

The following parameters must be set

Parameter Example
--directory Absolute path to gmail directory containing server
--creds-file-path Absolute path to credentials file created in Gmail API Setup.
--token-path Absolute path to store and retrieve access and refresh tokens for application.

Troubleshooting with MCP Inspector

To test the server, use MCP Inspector. From the git repo, run the below changing the parameter arguments accordingly.

npx @modelcontextprotocol/inspector uv run [absolute-path-to-git-repo]/src/gmail/server.py --creds-file-path [absolute-path-to-credentials-file] --token-path [absolute-path-to-access-tokens-file]

gmail-mcp-server FAQ

How does gmail-mcp-server ensure user consent before sending or deleting emails?
The server requires MCP clients to prompt users for confirmation before sending, removing, or modifying emails, ensuring secure and intentional actions.
Can gmail-mcp-server handle email attachments?
Currently, the server focuses on core email operations like sending text emails, reading, and trashing; attachment support is not explicitly provided.
Is gmail-mcp-server compatible with multiple Gmail accounts?
Yes, it can be configured to work with different Gmail accounts by managing authentication tokens per account.
How does gmail-mcp-server authenticate with Gmail?
It uses OAuth 2.0 authentication to securely connect to Gmail APIs, ensuring safe access to user email data.
Can gmail-mcp-server be used with any MCP client?
Yes, it is designed to integrate seamlessly with any MCP client that supports the protocol and can handle user prompts.
What email operations does gmail-mcp-server support?
It supports sending emails, reading unread emails, marking emails as read, trashing emails, and drafting responses.
How does gmail-mcp-server handle email IDs?
Emails are referenced by auto-generated unique IDs used as inputs for operations like marking as read or trashing.
Is user data stored by gmail-mcp-server?
The server acts as a proxy to Gmail APIs and does not store user email content persistently, respecting privacy and security.