Multi Google MCP
Multi-account Google MCP server for Claude Code — Gmail, Drive, Calendar, Sheets, Docs, Contacts, Search Console. 83 tools with OAuth2 multi-account switching.
mcp-google-multi
A local MCP server that gives Claude Code (and any MCP client) access to Gmail, Google Drive, Google Calendar, Google Sheets, Google Docs, Google Contacts, and Google Search Console across multiple Google accounts simultaneously.
Features
- Multi-account -- manage any number of Google accounts from a single server
- 83 tools -- Gmail (21), Drive (15), Calendar (11), Sheets (9), Docs (8), Contacts (9), Search Console (10)
- Config-driven -- accounts defined in
.env, no code changes needed - Auto-refresh -- OAuth tokens refresh transparently and persist to disk
- Stdio transport -- runs as a local subprocess, no hosting needed
Tools
Gmail (21 tools)
| Tool | Description |
|---|---|
gmail_search | Search messages with Gmail query syntax |
gmail_read | Read a full message by ID |
gmail_read_thread | Read all messages in a thread |
gmail_send | Send an email |
gmail_download_attachment | Download an email attachment to local disk |
gmail_create_draft | Create a draft |
gmail_modify_labels | Add/remove labels on a message (star, archive, mark read, etc.) |
gmail_trash | Move a message to Trash (recoverable) |
gmail_delete | Permanently delete a message (irreversible) |
gmail_batch_modify | Bulk add/remove labels across up to 1000 messages |
gmail_batch_delete | Permanently delete multiple messages (irreversible) |
gmail_list_drafts | List all drafts |
gmail_get_draft | Read a specific draft |
gmail_send_draft | Send an existing draft |
gmail_list_labels | List all labels (system + custom) |
gmail_create_label | Create a custom label |
gmail_delete_label | Delete a label |
gmail_get_profile | Get account email, message count, history ID |
gmail_list_history | Get mailbox changes since a history ID |
gmail_get_vacation | Read vacation responder settings |
gmail_set_vacation | Enable/disable vacation responder |
Google Drive (15 tools)
| Tool | Description |
|---|---|
drive_search | Search files with Drive query syntax |
drive_read | Read file content (exports Workspace docs as text) |
drive_list | List files in a folder or root |
drive_upload | Upload a local file to Drive |
drive_download | Download a binary file to local disk |
drive_export | Export Google Docs/Sheets/Slides to PDF, DOCX, XLSX, Markdown, etc. |
drive_create_folder | Create a new folder |
drive_update | Rename, move, or replace file content |
drive_delete | Permanently delete a file (irreversible) |
drive_trash | Move a file to trash (recoverable) |
drive_copy | Duplicate a file |
drive_share | Share with user/group/domain/anyone |
drive_list_permissions | List who has access to a file |
drive_remove_permission | Revoke access |
drive_get_about | Storage quota and account info |
Google Calendar (11 tools)
| Tool | Description |
|---|---|
calendar_list_calendars | List all calendars |
calendar_list_events | List/search events with time range |
calendar_get_event | Get a single event by ID |
calendar_create_event | Create an event |
calendar_update_event | Update an event |
calendar_delete_event | Delete an event |
calendar_quick_add | Create event from natural language (e.g. "Lunch Thursday 1pm") |
calendar_move_event | Move an event between calendars |
calendar_list_instances | List occurrences of a recurring event |
calendar_get_freebusy | Check free/busy times for calendars |
calendar_create_calendar | Create a new calendar |
Google Sheets (9 tools)
| Tool | Description |
|---|---|
sheets_create | Create a new spreadsheet |
sheets_get | Get spreadsheet metadata (title, sheets/tabs, named ranges) |
sheets_read_range | Read cell values from a range (A1 notation) |
sheets_write_range | Write values to a range |
sheets_append_rows | Append rows after existing data |
sheets_clear_range | Clear values from a range (keeps formatting) |
sheets_batch_read | Read multiple ranges at once |
sheets_batch_write | Write to multiple ranges at once |
sheets_add_sheet | Add a new tab/sheet to a spreadsheet |
Google Docs (8 tools)
| Tool | Description |
|---|---|
docs_create | Create a new document |
docs_get | Get document metadata (title, revision, named ranges) |
docs_read | Read document content as plain text |
docs_insert_text | Insert text at a position or at the end |
docs_replace_text | Find and replace all occurrences |
docs_delete_range | Delete content in an index range |
docs_update_style | Update text formatting (bold, italic, font, size) |
docs_insert_table | Insert a table at a position |
Google Contacts (9 tools)
| Tool | Description |
|---|---|
contacts_search | Search contacts by name, email, phone, or organization |
contacts_get | Get a single contact by resource name |
contacts_list | List all contacts (paginated) |
contacts_create | Create a new contact |
contacts_update | Update an existing contact |
contacts_delete | Delete a contact |
contacts_groups_list | List all contact groups (labels) |
contacts_group_members | List members of a contact group |
contacts_group_create | Create a new contact group |
Google Search Console (10 tools)
| Tool | Description |
|---|---|
searchconsole_sites_list | List all Search Console properties |
searchconsole_sites_get | Get details for a specific property |
searchconsole_sites_add | Add a property to Search Console |
searchconsole_sites_delete | Remove a property |
searchconsole_sitemaps_list | List submitted sitemaps |
searchconsole_sitemaps_get | Get sitemap details (status, errors, indexed count) |
searchconsole_sitemaps_submit | Submit a sitemap |
searchconsole_sitemaps_delete | Delete a submitted sitemap |
searchconsole_searchanalytics_query | Query search analytics (clicks, impressions, CTR, position) with filtering |
searchconsole_url_inspect | Inspect a URL (indexing status, crawl info, rich results, mobile usability) |
Every tool accepts an account parameter matching one of your configured aliases.
Prerequisites
- Node.js 18+
- A Google Cloud project with Gmail API, Google Drive API, and Google Calendar API enabled
- An OAuth 2.0 Client ID (Desktop app type)
Setup
1. Google Cloud Credentials
- Go to Google Cloud Console
- Create or select a project
- Enable these APIs:
- Go to APIs & Services > Credentials > Create Credentials > OAuth 2.0 Client ID
- Application type: Desktop app
- Add authorized redirect URI:
http://localhost:4242/oauth2callback - Copy the Client ID and Client Secret
2. Install & Configure
git clone https://github.com/bakissation/mcp-google-multi.git
cd mcp-google-multi
npm install
cp .env.example .env
Edit .env:
GOOGLE_CLIENT_ID=your_client_id_here
GOOGLE_CLIENT_SECRET=your_client_secret_here
# Define your accounts as alias:email pairs (comma-separated)
GOOGLE_ACCOUNTS=work:[email protected],personal:[email protected]
3. Build
npm run build
4. Authenticate Accounts
Run the auth flow for each account alias you defined:
npm run auth -- work # opens browser -> log in with [email protected]
npm run auth -- personal # opens browser -> log in with [email protected]
Each saves a token to tokens/<alias>/token.json. Tokens auto-refresh -- you should only need to do this once per account.
5. Register in Claude Code
claude mcp add google-multi -s user -- node /absolute/path/to/mcp-google-multi/dist/index.js
Or add it manually to your Claude Code MCP config:
{
"mcpServers": {
"google-multi": {
"command": "node",
"args": ["/absolute/path/to/mcp-google-multi/dist/index.js"]
}
}
}
Adding / Removing Accounts
Edit the GOOGLE_ACCOUNTS variable in .env, rebuild, and authenticate the new account:
# Add a new account
# .env: GOOGLE_ACCOUNTS=work:[email protected],personal:[email protected],freelance:[email protected]
npm run build
npm run auth -- freelance
No code changes required.
Project Structure
mcp-google-multi/
├── src/
│ ├── index.ts # Entry point: MCP server or auth CLI
│ ├── accounts.ts # Account config parser (reads from .env)
│ ├── auth.ts # OAuth flow with local HTTP callback
│ ├── client.ts # OAuth2Client factory with auto-refresh
│ ├── types.ts # Shared TypeScript types
│ └── tools/
│ ├── gmail.ts # 21 Gmail tools
│ ├── drive.ts # 15 Drive tools
│ ├── calendar.ts # 11 Calendar tools
│ ├── sheets.ts # 9 Sheets tools
│ ├── docs.ts # 8 Docs tools
│ ├── contacts.ts # 9 Contacts tools
│ └── searchconsole.ts # 10 Search Console tools
├── tokens/ # OAuth tokens per account (gitignored)
├── dist/ # Compiled output (gitignored)
├── .env # Your credentials (gitignored)
├── .env.example # Template for .env
├── package.json
├── tsconfig.json
└── LICENSE
OAuth Scopes
| Scope | Access |
|---|---|
gmail.modify | Read, label, trash, delete emails |
gmail.send | Send emails |
drive | Full Drive access (read, upload, share, delete) |
calendar | Full calendar access |
spreadsheets | Read/write Google Sheets |
documents | Read/write Google Docs |
contacts | Read/write Google Contacts |
webmasters | Google Search Console (sites, sitemaps, analytics, URL inspection) |
Troubleshooting
"GOOGLE_ACCOUNTS is not set" -- Make sure your .env file exists in the project root and has the GOOGLE_ACCOUNTS variable set.
"No token file found for account X" -- Run npm run auth -- <alias> to authenticate that account.
"Port 4242 is already in use" -- Another process is using port 4242. Close it and retry the auth flow.
Token refresh errors -- Delete the token file at tokens/<alias>/token.json and re-authenticate.
Contributing
Contributions are welcome! Please open an issue or submit a pull request.
Author
Abdelbaki Berkati — berkati.xyz · @bakissation
License
संबंधित सर्वर
Learning Hour MCP
Generates Learning Hour content and Miro boards for Technical Coaches.
MCP Sharepoint (aisuru)
A Model Context Protocol (MCP) server that exposes core Microsoft SharePoint / Microsoft Graph API functionalities as tools usable by LLM agents (e.g. Claude Desktop).
Brivvy MCP
Connects AI assistants to your Brivvy workspace so they can use your brand voices, templates, and glossary for on-brand content—hosted at mcp.brivvy.io.
Microsoft 365
Interact with Microsoft 365 services like Outlook, OneDrive, and Teams using the Graph API.
Promptheus
AI-powered prompt refinement tool with adaptive questioning and multi-provider support. Intelligently refines prompts through clarifying questions, supports 6+ AI providers (Google Gemini, Anthropic Claude, OpenAI, Groq, Alibaba Qwen, Zhipu GLM), and provides comprehensive prompt engineering capabilities.
Date-time Tools
A server for date-time manipulation and timezone conversion.
Napkin.AI MCP Server
MCP Server for dynamically generating infographics using Napkin.AI
GitHub Project Manager MCP
A GitHub-integrated project management server for Claude Desktop, requiring a personal access token.
Odoo MCP Pro (cloud based)
A hosted or self-hosted cloud version of Odoo MCP
salary-Web
An AI-powered payroll management tool for enterprises, integrated with DingTalk.