jnpacker/gmail-mcp-server
If you are the rightful owner of gmail-mcp-server and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to henry@mcphub.com.
This is a purpose-built MCP server designed to manage unread Gmail emails by marking them as read, deleting, or archiving them.
Gmail MCP Server
A purpose-built Model Context Protocol (MCP) server for Gmail integration, allowing AI assistants to review unread emails and perform email management operations.
Features
- List Unread Emails: Retrieve unread emails from Gmail inbox with optional subject filtering
- Email Content: Access complete email content including headers, body, and metadata
- Delete Emails: Permanently delete emails by ID
- Archive Emails: Archive emails (remove from inbox) by ID
Installation
- Clone this repository:
git clone <repository-url>
cd gmail-mcp-server
- Install dependencies:
pip install -r requirements.txt
- Set up Google OAuth 2.0 credentials:
- Go to Google Cloud Console
- Create a new project or select an existing one
- Enable the Gmail API
- Create OAuth 2.0 credentials (Desktop application)
- Download the credentials JSON file and save as
credentials.json
in the project root
Start the server:
python -m gmail_mcp_server.server
MCP Configuration
To use this Gmail MCP server with Claude or gemini-cli, you need to configure a .mcp.json
file. This file tells the AI assistant how to connect to your MCP server.
.mcp.json Configuration
Create a .mcp.json
file in your home directory or project directory with the following configuration:
{
"mcpServers": {
"gmail": {
"command": "python",
"args": ["-m", "gmail_mcp_server.server"],
"cwd": "/path/to/gmail-mcp-server"
}
}
}
Configuration Details:
command
: The Python interpreter to useargs
: Arguments to pass to the Gmail MCP server modulecwd
: The working directory where the Gmail MCP server is installed
For Claude Desktop:
Place the .mcp.json
file in your Claude Desktop configuration directory:
- macOS:
~/Library/Application Support/Claude/
- Windows:
%APPDATA%\Claude\
- Linux:
~/.config/claude/
For gemini-cli:
Place the .mcp.json
file in your home directory or specify the path when running gemini-cli.
Example Usage
Once configured, you can use the Gmail MCP server with AI assistants with these commands:
Basic Email Management
- "list emails" - Quick command to show all unread emails with smart categorization
- "Show me my unread emails" - Full command to display unread emails
- "List emails with 'urgent' in the subject" - Filter emails by subject content
Email Actions by Position Number
- "delete email 1, 4, 6" - Delete specific emails using their position numbers from the email list
- "archive email 3" - Archive a single email by position number
- "delete emails 2, 5, 7" - Delete multiple emails by their list positions
Bulk Operations by Category
- "archive all meeting updates" - Archive all emails in the "Meeting Updates" group
- "delete all social media notifications" - Delete all emails in the "Social Media" group
- "apply recommendations" - Execute all suggested actions (archive/delete) that the AI has identified
Advanced Filtering
- "Delete the email with ID 123456789abcdef" - Delete by specific Gmail message ID
- "Archive all emails from john@example.com" - Archive emails from specific sender
AI Assistant Commands
This project includes pre-configured command files for different AI assistants to provide intelligent Gmail management capabilities:
Claude CLI
The .claude/commands/emails.md
file provides comprehensive Gmail management instructions for Claude CLI. This command enables:
- Smart email categorization and grouping
- Priority rating (Minor/Good to Know/Major)
- Automated action suggestions (archive/delete)
- Dynamic email summaries
- Intelligent filtering for different email types
Gemini CLI
The .gemini/commands/emails.toml
file provides the same Gmail management capabilities for Gemini CLI users. The configuration includes:
- Email listing and analysis workflows
- Dynamic grouping based on email content
- Priority-based action recommendations
- Support for bulk operations and individual email actions
Cursor
Coming soon - Cursor integration is planned for future implementation.
Available Tools
1. list_unread_emails
Lists unread emails in Gmail inbox with optional filtering.
Parameters:
subject_filter
(optional): Filter emails containing specific text in subjectmax_results
(optional): Maximum number of emails to return (default: 50)
Example:
{
"subject_filter": "important",
"max_results": 10
}
2. delete_email
Permanently deletes an email by ID.
Parameters:
message_id
(required): Gmail message ID to delete
Example:
{
"message_id": "123456789abcdef"
}
3. archive_email
Archives an email (removes from inbox) by ID.
Parameters:
message_id
(required): Gmail message ID to archive
Example:
{
"message_id": "123456789abcdef"
}
Authentication
On first run, the server will:
- Check for existing authentication token (
token.json
) - If not found, open a browser for OAuth 2.0 authentication
- Save the authentication token for future use
For headless operation, you can authenticate manually:
python -c "from gmail_mcp_server.gmail_client import GmailClient; import os; os.environ['GMAIL_INTERACTIVE_AUTH'] = '1'; GmailClient()"
Required Gmail API scopes:
https://www.googleapis.com/auth/gmail.readonly
- Read emailshttps://www.googleapis.com/auth/gmail.modify
- Delete and archive emails
Security Notes
- Keep your
credentials.json
andtoken.json
files secure - These files are automatically ignored by git
- The server only requests minimal required permissions
- All operations are performed through official Gmail API
Development
Install in development mode:
pip install -e .
Run the server:
gmail-mcp-server