gmail-multi-mcp-server
gmail-multi-mcp-server
MCP-сервер, который подключает Claude сразу к нескольким аккаунтам Gmail и предоставляет тот же набор инструментов, что и встроенный коннектор Gmail. Каждый инструмент принимает дополнительный аргумент account, указывающий, с каким почтовым ящиком работать, — это единственное структурное отличие от коннектора для одного почтового ящика.
"Check my work inbox for anything from the lender, and draft the reply from my personal account."Зачем это нужно
Встроенный коннектор Gmail авторизует один почтовый ящик. Если у вас несколько отдельных аккаунтов — рабочий, личный, корпоративный псевдоним — приходится постоянно переключаться. Этот сервер хранит учётные данные для любого количества авторизованных вами аккаунтов Gmail и направляет каждый вызов к тому, который вы указали.
Related MCP server: multiGmailMCP
Требования
Node.js 20 или новее
Проект Google Cloud с включённым Gmail API и OAuth-клиент типа Desktop app
1. Получите OAuth-клиент Google
Откройте Google Cloud Console и выберите или создайте проект.
APIs & Services → Library → включите Gmail API.
APIs & Services → OAuth consent screen → настройте его. Пока приложение находится в Testing, добавьте каждый адрес Gmail, который планируете подключать, в раздел Test users.
APIs & Services → Credentials → Create credentials → OAuth client ID → тип приложения Desktop app. Скачайте JSON.
Клиенты типа Desktop app разрешают loopback-редиректы на любом порту — именно это использует процесс add-account.
2. Установка и сборка
git clone <this repo>
cd Gmail-MCP
npm install
npm run build3. Укажите серверу ваш OAuth-клиент
Выберите один:
# Option A — save the downloaded JSON where the server looks by default
mkdir -p ~/.gmail-mcp && cp ~/Downloads/client_secret_*.json ~/.gmail-mcp/credentials.json
# Option B — point at it explicitly
export GMAIL_MCP_CREDENTIALS=/path/to/client_secret.json
# Option C — pass the values directly
export GMAIL_MCP_CLIENT_ID=...apps.googleusercontent.com
export GMAIL_MCP_CLIENT_SECRET=...4. Авторизуйте каждый почтовый ящик
Запустите один раз для каждого аккаунта Gmail:
node dist/index.js add-account --alias work
node dist/index.js add-account --alias personal
node dist/index.js list-accountsКаждый запуск выводит URL согласия Google, ожидает редирект на локальном loopback-порту и сохраняет полученный refresh token. На машине без графического интерфейса добавьте --manual и вставьте URL, на который произошёл редирект.
Аккаунты, добавленные во время работы сервера, подхватываются автоматически — перезапуск не требуется.
5. Подключите его к Claude
Claude Code
claude mcp add gmail-multi -- node /absolute/path/to/Gmail-MCP/dist/index.jsClaude Desktop — добавьте в claude_desktop_config.json:
{
"mcpServers": {
"gmail-multi": {
"command": "node",
"args": ["/absolute/path/to/Gmail-MCP/dist/index.js"],
"env": {
"GMAIL_MCP_CREDENTIALS": "/absolute/path/to/client_secret.json"
}
}
}
}Выбор аккаунта
Каждый инструмент, кроме list_accounts, принимает account. Он сопоставляется по порядку:
с полным адресом электронной почты —
mikael@example.comс псевдонимом, заданным при
add-account, —workс локальной частью до
@—mikaelс любым однозначным префиксом
account необязателен, когда настроен только один почтовый ящик или установлена переменная GMAIL_MCP_DEFAULT_ACCOUNT. В остальных случаях он обязателен, и в ошибке перечисляется, что доступно.
ID привязаны к почтовому ящику. ID сообщения, цепочки, черновика или метки из одного аккаунта ничего не значит в другом. Ошибка «not found» обычно означает, что был передан неверный account.
Инструменты
35 инструментов — набор инструментов коннектора плюс два для нескольких аккаунтов.
Область | Инструменты |
Аккаунты |
|
Цепочки |
|
Сообщения |
|
Отправка |
|
Черновики |
|
Метки |
|
Названия инструментов намеренно совпадают с коннектором Gmail, поэтому подсказки и привычки переносятся без изменений. MCP-клиенты разделяют инструменты по серверам, поэтому оба набора можно включить одновременно без конфликтов.
Отличия от встроенного коннектора
Всё ниже — только дополнения: ничто из того, что делает коннектор, здесь не работает иначе.
accountв каждом инструменте, плюсlist_accountsиget_profile.response_format(markdown|json) в каждом инструменте. По умолчанию используется Markdown, и он остаётся компактным; полная структурированная нагрузка в любом случае возвращается вstructuredContent.delete_draftиget_message_attachment, которые коннектор упоминает, но не предоставляет.replyпринимаетquoteOriginal(по умолчаниюfalse), чтобы добавить исходное сообщение цитируемым блоком.forwardпринимаетincludeAttachments(по умолчаниюtrue); установитеfalse, чтобы пропустить большие файлы.get_message_attachmentпринимаетsavePath, чтобы записать файл на диск вместо встраивания base64.Ответы ограничены 25 000 символов; в первую очередь сокращаются постраничные списки, и в ответе точно указывается, что было отброшено и как получить остальное.
Поведение, о котором стоит знать
search_threadsвозвращает предпросмотр самых старых сообщений каждой цепочки (~5), как коннектор. Вызывайтеget_thread, прежде чем отвечать на что-либо о недавних или непрочитанных письмах.Черновики исключаются из
search_threads, если только в запросе не упоминаются черновики. Используйтеlist_drafts.Метки задаются по ID, а не по отображаемому имени. Сначала вызовите
list_labels.DRAFTиSENTдоступны только для чтения; добавлениеTRASH/SPAMперенаправляется в инструментыapply_sensitive_*, чтобы разрушающие действия всегда были явно названы.update_draftобъединяет поля, но вложения заменяются, а не объединяются — в ответе сообщается, сколько было отброшено.replyустанавливаетIn-Reply-ToиReferences, чтобы клиенты правильно строили цепочки, и никогда не адресует ответ самому авторизованному почтовому ящику.
Безопасность
Refresh-токены хранятся в
~/.gmail-mcp/accounts.jsonи записываются атомарно с правами0600в каталоге с правами0700. Любой, у кого есть доступ на чтение к этому файлу, имеет полный доступ к почтовым ящикам.OAuth-процесс проверяет параметр
stateи слушает только на127.0.0.1.remove-accountудаляет локальный токен. Чтобы полностью отозвать доступ, удалите также приложение на myaccount.google.com/permissions.Предоставленные области доступа позволяют читать, отправлять и удалять почту.
send_message,replyиforwardдоставляют письмо немедленно — в описаниях инструментов указано, что модели следует предпочитатьcreate_draft, когда пользователь явно не попросил отправить письмо.
Разработка
npm run build # compile TypeScript to dist/
npm test # build, then unit tests + stdio smoke test
npm run test:unit # MIME, reply addressing, parsing, truncation — no network
npm run test:smoke # boots the server, checks all 35 tools register
npm run inspect # open the MCP Inspector against the serversrc/
index.ts CLI entry point and server bootstrap
constants.ts scopes, limits, paths
types.ts normalized message/thread/draft shapes
auth/ token store, OAuth flow, account registry
schemas/common.ts shared Zod fields (account, formats, pagination, colors)
services/ Gmail parsing, MIME building, formatting, errors
tools/ tool registration by domainУстранение неполадок
Симптом | Решение |
"No Gmail accounts are authorized yet" | Запустите |
"Google did not return a refresh token" | Отзовите доступ приложению на myaccount.google.com/permissions, затем снова запустите |
"Account 'x' is ambiguous" | Используйте полный адрес электронной почты |
403 при каждом вызове | Gmail API не включён в проекте Google Cloud, или адрес не добавлен в тестовые пользователи |
Ошибки not-found при корректных ID | ID принадлежит другому почтовому ящику — проверьте |
Лицензия
MIT
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Connect any mailbox to Claude, ChatGPT & AI: read, send, reply, schedule & search emails.
Manage Gmail end-to-end: search, read, send, draft, label, and organize threads. Automate workflow…
Give AI agents secure access to your email via private aliases with dedicated mailbox storage.
Email infrastructure for AI agents — send, receive, search, and reply to email over MCP.
Related MCP Servers
- AlicenseBqualityBmaintenanceEnables AI assistants to manage multiple Gmail accounts simultaneously with built-in OAuth authentication, supporting email reading, sending, drafts, labels, and account management.60482MIT
- FlicenseAqualityBmaintenanceConnects AI assistants to multiple Gmail accounts simultaneously, enabling search, read, draft, send, and reply operations with per-account permission controls.54
- AlicenseNot gradedqualityCmaintenanceEnables searching and summarizing emails across multiple Gmail accounts simultaneously through Claude.1MIT
- AlicenseBqualityCmaintenanceEnables multi-account Gmail and Google Calendar access through MCP, allowing operations across multiple Google accounts with a single tool call.11MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/Seventhdd/Gmail-MCP'
If you have feedback or need assistance with the MCP directory API, please join our Discord server