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.
To install Gmail AutoAuth for Claude Desktop automatically via Smithery:
npx -y @smithery/cli install @gongrzhe/server-gmail-autoauth-mcp --client claude
Create a Google Cloud Project and obtain credentials:
a. Create a Google Cloud Project:
b. Create OAuth 2.0 Credentials:
http://localhost:3000/oauth2callback
to the authorized redirect URIsgcp-oauth.keys.json
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:
gcp-oauth.keys.json
in the current directory or ~/.gmail-mcp/
~/.gmail-mcp/
~/.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:
{
"mcpServers": {
"gmail": {
"command": "npx",
"args": [
"@gongrzhe/server-gmail-autoauth-mcp"
]
}
}
}
If you prefer using Docker:
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
{
"mcpServers": {
"gmail": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-v",
"mcp-gmail:/gmail-server",
"-e",
"GMAIL_CREDENTIALS_PATH=/gmail-server/credentials.json",
"mcp/gmail"
]
}
}
}
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
Configure Reverse Proxy:
gmail.gongrzhe.com
) to this portDNS Configuration:
Google Cloud Platform Setup:
https://gmail.gongrzhe.com/oauth2callback
) to the authorized redirect URIs listRun Authentication:
npx @gongrzhe/server-gmail-autoauth-mcp auth https://gmail.gongrzhe.com/oauth2callback
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:
send_email
)Sends a new email immediately.
{
"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"]
}
draft_email
)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"]
}
read_email
)Retrieves the content of a specific email by its ID.
{
"messageId": "182ab45cd67ef"
}
search_emails
)Searches for emails using Gmail search syntax.
{
"query": "from:sender@example.com after:2024/01/01 has:attachment",
"maxResults": 10
}
modify_email
)Adds or removes labels from emails (move to different folders, archive, etc.).
{
"messageId": "182ab45cd67ef",
"addLabelIds": ["IMPORTANT"],
"removeLabelIds": ["INBOX"]
}
delete_email
)Permanently deletes an email.
{
"messageId": "182ab45cd67ef"
}
list_email_labels
)Retrieves all available Gmail labels.
{}
create_label
)Creates a new Gmail label.
{
"name": "Important Projects",
"messageListVisibility": "show",
"labelListVisibility": "labelShow"
}
update_label
)Updates an existing Gmail label.
{
"id": "Label_1234567890",
"name": "Urgent Projects",
"messageListVisibility": "show",
"labelListVisibility": "labelShow"
}
delete_label
)Deletes a Gmail label.
{
"id": "Label_1234567890"
}
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"
}
batch_modify_emails
)Modifies labels for multiple emails in efficient batches.
{
"messageIds": ["182ab45cd67ef", "182ab45cd67eg", "182ab45cd67eh"],
"addLabelIds": ["IMPORTANT"],
"removeLabelIds": ["INBOX"],
"batchSize": 50
}
batch_delete_emails
)Permanently deletes multiple emails in efficient batches.
{
"messageIds": ["182ab45cd67ef", "182ab45cd67eg", "182ab45cd67eh"],
"batchSize": 50
}
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 intelligently extracts email content from complex MIME structures:
The server fully supports non-ASCII characters in email subjects and content, including:
The server provides a complete set of tools for managing Gmail labels:
Label visibility settings include:
messageListVisibility
: Controls whether the label appears in the message list (show
or hide
)labelListVisibility
: Controls how the label appears in the label list (labelShow
, labelShowIfUnread
, or labelHide
)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:
~/.gmail-mcp/
)OAuth Keys Not Found
gcp-oauth.keys.json
is in either your current directory or ~/.gmail-mcp/
Invalid Credentials Format
web
or installed
credentialsPort Already in Use
Batch Operation Failures
Contributions are welcome! Please feel free to submit a Pull Request.
MIT
If you encounter any issues or have questions, please file an issue on the GitHub repository.
{
"mcpServers": {
"gmail": {
"env": {},
"args": [
"@gongrzhe/server-gmail-autoauth-mcp"
],
"command": "npx"
}
}
}
Seamless access to top MCP servers powering the future of AI integration.