Server data from the Official MCP Registry
Manage multiple Gmail accounts in Claude Desktop — search, send, reply, draft, and organize.
Manage multiple Gmail accounts in Claude Desktop — search, send, reply, draft, and organize.
This is a well-structured MCP server for managing multiple Gmail accounts with proper OAuth2 authentication and secure token storage. Authentication is required for all operations, credentials are stored locally outside the project, and the code follows security best practices. Minor code quality issues around error handling and input validation do not significantly impact the overall security posture. Supply chain analysis found 2 known vulnerabilities in dependencies (0 critical, 2 high severity). Package verification found 1 issue.
7 files analyzed · 9 issues found
Security scores are indicators to help you make informed decisions, not guarantees. Always review permissions before connecting any MCP server.
This plugin requests these system permissions. Most are normal for its category.
Set these up before or after installing:
Environment variable: GOOGLE_CLIENT_ID
Environment variable: GOOGLE_CLIENT_SECRET
Add this to your MCP configuration file:
{
"mcpServers": {
"io-github-gx-55-multi-gmail-mcp": {
"env": {
"GOOGLE_CLIENT_ID": "your-google-client-id-here",
"GOOGLE_CLIENT_SECRET": "your-google-client-secret-here"
},
"args": [
"-y",
"multi-gmail-mcp"
],
"command": "npx"
}
}
}From the project's GitHub README.
A Model Context Protocol (MCP) server that lets Claude Desktop manage multiple Gmail accounts simultaneously. Listed on the official Anthropic MCP registry and published on npm.
~/.gmail-mcp-tokens.db — never committed to gitnpm install -g multi-gmail-mcp
This registers two global commands: gmail-mcp (the MCP server) and gmail-mcp-cli (account manager).
You only need to do this once.
gmail.readonly, gmail.send, gmail.modify, gmail.labels~/.gmail-mcp-oauth.jsonAlternatively, set environment variables in the Claude Desktop config (see below).
# Add accounts (opens browser for Google sign-in)
gmail-mcp-cli add personal@gmail.com
gmail-mcp-cli add work@company.com
# List authenticated accounts
gmail-mcp-cli list
# Remove an account
gmail-mcp-cli remove work@company.com
Tokens are saved to ~/.gmail-mcp-tokens.db and refreshed automatically.
Edit ~/Library/Application Support/Claude/claude_desktop_config.json:
{
"mcpServers": {
"multi-gmail": {
"command": "gmail-mcp"
}
}
}
If you prefer environment variables over ~/.gmail-mcp-oauth.json:
{
"mcpServers": {
"multi-gmail": {
"command": "gmail-mcp",
"env": {
"GOOGLE_CLIENT_ID": "your-client-id.apps.googleusercontent.com",
"GOOGLE_CLIENT_SECRET": "your-client-secret"
}
}
}
}
Restart Claude Desktop after saving. Click the hammer icon to confirm 15 tools are loaded.
| Tool | Description |
|---|---|
list_accounts | List all authenticated Gmail accounts |
initiate_auth | Start OAuth flow — returns a URL to open in browser |
complete_auth | Finalize auth after completing Google sign-in |
remove_account | Remove an account and its stored credentials |
| Tool | Description |
|---|---|
search_emails | Search with Gmail syntax (is:unread, from:, after:, etc.) |
get_email | Fetch full email content by message ID |
| Tool | Description |
|---|---|
send_email | Send an email (supports To, CC, BCC) |
reply_to_email | Reply in thread, preserving References headers |
create_draft | Save an email as a draft |
| Tool | Description |
|---|---|
list_labels | List all Gmail labels for an account |
add_label | Add one or more labels to a message |
remove_label | Remove one or more labels from a message |
archive_email | Remove from Inbox |
mark_as_read | Remove the UNREAD label |
mark_as_unread | Add the UNREAD label |
List all my authenticated Gmail accounts.
Search my work@company.com inbox for unread emails from this week.
Reply to that email from my personal account saying I'll be there Saturday.
Send an email from personal@gmail.com to friend@example.com
with subject "Dinner plans" and body "Are you free Saturday?"
Archive everything older than a week in my side-project inbox that's already read.
Check both my accounts for emails from GitHub and summarize them.
~/.gmail-mcp-oauth.json and ~/.gmail-mcp-tokens.db live in your home directory — outside the project, never committed.gitignore excludes *.db, .gmail-mcp-oauth.json, and .envListed on the official Anthropic MCP registry:
io.github.gx-55/multi-gmail-mcp
curl "https://registry.modelcontextprotocol.io/v0.1/servers?search=io.github.gx-55"
multi-gmail-mcp/
├── bin/
│ ├── gmail-mcp.js # Entry point for the MCP server command
│ └── gmail-mcp-cli.js # Entry point for the CLI command
├── src/
│ ├── server.js # MCP server — all 15 tools
│ ├── gmail-client.js # Gmail API wrapper
│ ├── auth.js # OAuth2 flow with auto-refresh
│ ├── db.js # SQLite token storage (node:sqlite)
│ └── cli.js # Account management CLI
└── package.json
"No OAuth credentials found"
Make sure ~/.gmail-mcp-oauth.json exists or set GOOGLE_CLIENT_ID / GOOGLE_CLIENT_SECRET in the Claude Desktop config.
"Account not found. Authenticate it first"
Run gmail-mcp-cli add your@gmail.com before using that account in Claude.
Tools not appearing in Claude Desktop
Confirm gmail-mcp is in your PATH (which gmail-mcp) and restart Claude Desktop.
Token expired errors
Tokens auto-refresh if a valid refresh token is stored. If refresh fails, remove the account and re-authenticate: gmail-mcp-cli remove your@gmail.com && gmail-mcp-cli add your@gmail.com.
Be the first to review this server!
by Modelcontextprotocol · Developer Tools
Read, search, and manipulate Git repositories programmatically
by Toleno · Developer Tools
Toleno Network MCP Server — Manage your Toleno mining account with Claude AI using natural language.
by mcp-marketplace · Developer Tools
Create, build, and publish Python MCP servers to PyPI — conversationally.