multi-google-calendar-gmail-mcp

multi-google-calendar-gmail-mcp

Enables multi-account Gmail and Google Calendar access through MCP, allowing operations across multiple Google accounts with a single tool call.

Category
Visit Server

README

multi-google-calendar-gmail-mcp

One small Python file that gives Claude (or any MCP client) Gmail and Google Calendar across as many Google accounts as you want — a personal Gmail, three Workspace domains, whatever. Each account gets a nickname; every tool takes a nickname or "all" to sweep the whole fleet in one call.

"find every unread invoice across all five inboxes and label them Bookkeeping" — one tool call.

Why this one

  • Multi-account is the whole design, not a bolt-on. Most self-hosted Gmail MCPs authenticate one account. Here, connecting another account is one command + one browser click, and cross-account operations are native.
  • Minimal. One readable server.py, three dependencies. If you want to know what it does, you can just read it.
  • Bring your own credentials. Nothing is hosted, nothing phones home. You create your own (free) Google Cloud OAuth client, and your account keys live in a git-ignored folder on your machine. This repo never sees them.

Pairs naturally with apple-suite-mcp: that one reads whatever your Mac's built-in apps already see (zero setup, macOS only); this one speaks Google's APIs directly (real labels, batch operations up to 500 messages, drafts, calendar invites with attendees) and runs anywhere Python runs — including a headless Linux box.

Setup

Requires uv (brew install uv on macOS).

git clone https://github.com/travisthetrashpanda/multi-google-calendar-gmail-mcp.git ~/multi-google-calendar-gmail-mcp
  1. One-time Google Cloud setup (~15 min, free): follow SETUP.md — create a Cloud project, enable the Gmail and Calendar APIs, publish the consent screen (avoids 7-day token expiry), create a Desktop-app OAuth client, and drop credentials.json in this folder. Heads-up: Google rejects app names containing the word "Google".
  2. Connect the accounts you choose (repeat per account, any alias you like — only accounts you connect are ever visible):
    cd ~/multi-google-calendar-gmail-mcp
    uv run python server.py connect work
    uv run python server.py connect personal
    
    Changed your mind? uv run python server.py disconnect work deletes that account's key.
  3. Verify: uv run python server.py check
  4. Register with your MCP client — e.g. Claude Code:
    claude mcp add --scope user google -- uv run --directory ~/multi-google-calendar-gmail-mcp python server.py
    
    or in a JSON MCP config:
    {
      "mcpServers": {
        "google": {
          "command": "uv",
          "args": ["run", "--directory", "/Users/YOU/multi-google-calendar-gmail-mcp", "python", "server.py"]
        }
      }
    }
    

Tools

Area Tools
Accounts accounts_list, check
Gmail gmail_search (full Gmail query syntax), gmail_read, gmail_labels, gmail_modify (batch label/archive/mark-read, ≤500 ids), gmail_draft, gmail_send
Calendar calendar_list, calendar_events, calendar_create_event (with attendee invitations)

Test any tool from the command line:

uv run python server.py test gmail_search '{"query": "is:unread", "account": "all", "limit": 5}'

Scoping access (optional)

You already control access by choosing what to connect — but if you want a client to see only a subset of connected accounts (or to remove tools entirely), copy config.example.json to config.json:

{
  "accounts": ["work", "personal"],
  "disabled_tools": ["gmail_send"]
}

Accounts not listed become invisible to every tool; tools in disabled_tools are never even registered with the MCP client. Omit a key (or the whole file) to allow everything. check reports active scoping.

Safety notes

  • There is deliberately no delete/trash tool — the most destructive operation is archiving (removing from inbox), which is reversible.
  • gmail_send and attendee invitations send real email; MCP clients should confirm with the user first.
  • credentials.json and tokens/ are git-ignored. Treat the tokens/ folder like passwords — don't put it in cloud-synced directories.

Credits

Sibling project of apple-suite-mcp; the two split the work of giving an AI assistant a complete view of your accounts — locally-visible vs. API-native.

Say thanks

This project is free to use, no strings attached. If it's useful to you, a ⭐ on this repo or a shout-out to @travisthetrashpanda is always appreciated — and if you build something on top of it, a link back here helps others find it.

License

MIT

Recommended Servers

playwright-mcp

playwright-mcp

A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.

Official
Featured
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.

Official
Featured
Local
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.

Official
Featured
Local
TypeScript
VeyraX MCP

VeyraX MCP

Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.

Official
Featured
Local
graphlit-mcp-server

graphlit-mcp-server

The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.

Official
Featured
TypeScript
Kagi MCP Server

Kagi MCP Server

An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.

Official
Featured
Python
E2B

E2B

Using MCP to run code via e2b.

Official
Featured
Neon Database

Neon Database

MCP server for interacting with Neon Management API and databases

Official
Featured
Exa Search

Exa Search

A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.

Official
Featured
Qdrant Server

Qdrant Server

This repository is an example of how to create a MCP server for Qdrant, a vector search engine.

Official
Featured