Skip to main content
Glama
gmail-mcp-multi

gmail-mcp-multi

by dmorrill

gmail-mcp-multi

A Gmail MCP server with native multi-account support. Manage multiple Gmail accounts from a single server instance.

Unlike other Gmail MCPs that require running separate server instances per account, this one lets you specify which account to use on each tool call—making it easy to manage personal and work inboxes from Claude Code, Cursor, or any MCP client.

Features

  • Multi-account support - Single server instance, unlimited Gmail accounts

  • Account aliases - Use friendly names like "work" or "personal" instead of email addresses

  • Full Gmail API - Search, read, send, label, and manage emails

  • Batch operations - Bulk modify or delete emails efficiently

  • Auto token refresh - Handles OAuth token refresh automatically

Related MCP server: gmail-mcp

Installation

npm install -g gmail-mcp-multi

Or run directly with npx:

npx gmail-mcp-multi

Quick Start

1. Set up Google Cloud OAuth

You'll need OAuth credentials from Google Cloud Console:

  1. Go to Google Cloud Console

  2. Create a new project (or use existing)

  3. Enable the Gmail API

  4. Create OAuth 2.0 credentials (Desktop app type)

  5. Download the credentials JSON

2. Configure the MCP

Create ~/.gmail-mcp/oauth-keys.json with your OAuth credentials.

3. Add to your MCP client

Claude Code (~/.claude/settings.json):

{
  "mcpServers": {
    "gmail": {
      "command": "npx",
      "args": ["gmail-mcp-multi"]
    }
  }
}

4. Authenticate accounts

Once the MCP is running, use the authenticate tool:

authenticate({ alias: "work", email: "you@company.com" })
authenticate({ alias: "personal", email: "you@gmail.com" })

5. Use it!

search_emails({ account: "work", query: "in:inbox is:unread" })
search_emails({ account: "personal", query: "from:mom" })

Tools

All tools that interact with Gmail require an account parameter (alias or email).

Account Management

Tool

Description

list_accounts

List all configured accounts and auth status

authenticate

Add or re-authenticate an account

Email Operations

Tool

Description

search_emails

Search emails using Gmail query syntax

read_email

Get full content of an email by ID

send_email

Send a new email

draft_email

Create a draft

modify_email

Add/remove labels, mark read/unread

delete_email

Trash or permanently delete

batch_modify_emails

Bulk label operations

batch_delete_emails

Bulk delete

Label Management

Tool

Description

list_labels

Get all labels for an account

create_label

Create a new label

delete_label

Delete a label

Configuration

Credentials are stored in ~/.gmail-mcp/:

~/.gmail-mcp/
├── config.json           # Account aliases and settings
├── oauth-keys.json       # Your Google OAuth app credentials
└── accounts/
    ├── work/
    │   └── credentials.json
    └── personal/
        └── credentials.json

Development

git clone https://github.com/dmorrill/gmail-mcp-multi.git
cd gmail-mcp-multi
npm install
npm run build
npm run dev

Contributing

Contributions welcome! Please see CONTRIBUTING.md for guidelines.

License

MIT

Available Tools

7 tools
authenticateA

Add or re-authenticate a Gmail account. Opens browser for OAuth flow.

Inputs: alias (required), email.

list_accountsA

List all configured Gmail accounts and their authentication status

Inputs: no named parameters.

list_labelsC

Get all labels for an account

Inputs: account (required).

modify_emailB

Modify email labels (add/remove labels, mark read/unread)

Inputs: account (required), messageId (required), addLabelIds, removeLabelIds.

read_emailB

Get the full content of an email by ID

Inputs: account (required), messageId (required).

search_emailsB

Search for emails using Gmail query syntax

Inputs: account (required), query (required), maxResults.

send_emailC

Send a new email

Inputs: account (required), to (required), subject (required), body (required), +2 more.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    A3.5/5.0

    Scored across 7 tools

    Disambiguation5/5

    Each tool has a distinct purpose: authentication, account listing, label management, email reading, searching, sending, and label modification. No overlap or ambiguity.

    Naming Consistency5/5

    All tool names follow a consistent verb_noun pattern with snake_case (e.g., list_accounts, modify_email). The only exception is 'authenticate' which lacks an object but is still clear.

    Tool Count5/5

    7 tools is appropriate for a Gmail server, covering authentication, account management, label operations, and core email actions without being excessive or insufficient.

    Completeness3/5

    Core operations like send, read, search, and modify labels are present, but missing label creation/deletion and email deletion/trash are notable gaps for typical Gmail workflows.

    Maintenance

    ActivityInactive
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      Not graded
      quality
      D
      maintenance
      An MCP server that provides read, label, and draft access to multiple Gmail accounts from a single server, never sending email.
      101 npm
      MIT
    • F
      license
      Not graded
      quality
      B
      maintenance
      Enables interacting with multiple Gmail accounts through a single MCP server, supporting search, labels, drafts, and thread management with per-account OAuth.
      1
      -
    • F
      license
      Not graded
      quality
      D
      maintenance
      Multi-user Gmail MCP server that enables sending/receiving emails, managing accounts, and searching mail via SMTP/IMAP with per-user isolation and encrypted app passwords.
      -
    • F
      license
      Not graded
      quality
      D
      maintenance
      Multi-account Gmail MCP server for reading threads, managing labels, and creating drafts across multiple Gmail accounts.
      -