gmail-mcp-server
gmail-mcp-server
MCP-сервер, предоставляющий один инструмент, send_email, который отправляет сообщения Gmail (с возможностью прикрепления файлов) через Gmail API. Создан для использования в качестве локального stdio MCP-сервера внутри Claude Code.
Область действия намеренно узкая: только gmail.send (без доступа на чтение/изменение почтового ящика) — минимальные привилегии для инструмента, единственная задача которого — отправлять почту.
Этот README написан по итогам реальной первой настройки, включая все ошибки, которые возникали по ходу дела. Проходите его сверху вниз — и вы не должны столкнуться ни с одной из них.
Примечание по PowerShell:
&&не работает как разделитель команд в Windows PowerShell (это синтаксис bash/cmd). Все команды, состоящие из нескольких частей, ниже записаны отдельными строками; либо используйте;, если нужна одна строка:cd C:\Users\GaneshGupta\gmail-mcp-server; python auth_setup.py
1. Google Cloud — включите API и создайте OAuth-учётные данные
В консоли Google этот раздел недавно переименовали из «OAuth consent screen» в Google Auth Platform, а настройки разнесли по отдельным страницам левого меню (Branding / Audience / Clients / Data Access / Verification Center). В шагах ниже используются актуальные названия.
Перейдите на console.cloud.google.com. Создайте новый проект или используйте существующий.
APIs & Services → Library → найдите «Gmail API» → Enable.
APIs & Services → OAuth consent screen (вы попадёте в новый раздел Google Auth Platform) → заполните страницу Branding:
App name: любое, например
gmail-mcp-toolUser support email: ваш адрес Gmail
Developer contact email: ваш адрес Gmail
Поля logo/App domain пока оставьте пустыми — вы вернётесь к App domain на шаге 4, если столкнётесь с ошибкой «incomplete configuration». Не заполняйте их на всякий случай; делайте это только если действительно увидите эту ошибку.
Страница Audience (левое меню) → в разделе Test users → + Add users → укажите свой собственный адрес Gmail (тот, с которого будет отправляться почта) → Save.
Если «Add users» заблокировано жёлтым баннером с текстом «Your app's OAuth configuration is incomplete... Please visit the Branding page» — это происходит потому, что
gmail.send— чувствительная область доступа, для которой поля App domain должны быть непустыми даже для приложения только в режиме Testing. Исправление:Перейдите в Branding → App domain и заполните:
Application home page:
https://example.comApplication privacy policy link:
https://example.com/privacyApplication terms of service link:
https://example.com/terms
После этого появится поле Authorized domains. Введите только домен без префикса
https://:Правильно:
example.comНеправильно (отклоняется с ошибкой «Invalid domain: must not specify the scheme»):
https://example.com
Нажмите Save на странице Branding (должно появиться уведомление «Branding changes saved!»).
Вернитесь в Audience → Add users и попробуйте снова — на этот раз должно пройти.
Эти URL не обязаны быть реальными/рабочими — Google не проверяет их, пока приложение находится в статусе Testing, ему просто нужно, чтобы поля были заполнены.
Страница Clients (левое меню) → + Create client:
Application type: Desktop app
Name: любое, например
gmail-mcp-desktopCreate → Download JSON (кнопка появляется сразу после создания)
Скачанный файл будет называться примерно так:
client_secret_<long-id>.apps.googleusercontent.com.json. Переименуйте его точно вclient_secret.jsonи переместите в:C:\Users\GaneshGupta\gmail-mcp-server\credentials\client_secret.jsonТочное имя файла важно —
gmail_auth.pyищет файл по этому имени и выбрасываетFileNotFoundError, если имя не совпадает (это самая частая ошибка на этом шаге).
Related MCP server: Gmail Sender MCP Server
2. Установка зависимостей
cd C:\Users\GaneshGupta\gmail-mcp-server
pip install -r requirements.txt3. Одноразовый вход
python auth_setup.pyЧто происходит:
Откроется окно браузера с обычным входом в Google.
Вы попадёте на экран «Google hasn't verified this app». Это ожидаемо — это ваш собственный OAuth-клиент в режиме Testing, запрашивающий чувствительную область доступа. Нажмите Continue (в старом интерфейсе: Advanced → Go to [app name] (unsafe)).
Предоставьте разрешение «Send email on your behalf».
Браузер покажет «The authentication flow has completed. You may close this window.»
В терминале появится
Authorized. Token saved to ...credentials\token.json.
Если на шаге 2 вместо этого отображается Error 403: access_denied / «has not completed the Google verification process... can only be accessed by developer-approved testers» — вашего адреса Gmail ещё нет в списке Audience → Test users. Вернитесь к шагу 1.4 выше.
Сделайте это один раз. После этого server.py лишь молча обновляет сохранённый токен — браузер больше никогда не открывается сам.
4. Проверка токена (необязательно, но рекомендуется)
python -c "from gmail_auth import load_credentials; c = load_credentials(); print('valid:', c.valid); print('scopes:', c.scopes); print('has refresh token:', bool(c.refresh_token))"Ожидайте valid: True, scopes: ['https://www.googleapis.com/auth/gmail.send'], has refresh token: True.
5. Регистрация в Claude Code
claude mcp add gmail-sender --scope user -- python C:\Users\GaneshGupta\gmail-mcp-server\server.py--scope user регистрирует сервер глобально — он становится доступен во всех сессиях Claude Code на этой машине, а не только в той, где вы выполнили команду. В уже запущенной сессии он задним числом не появится — MCP-серверы загружаются при старте сессии, поэтому откройте новый терминал / новую сессию claude, чтобы увидеть его.
Проверка:
claude mcp listВ списке вы должны увидеть gmail-sender.
6. Использование
В любой сессии Claude Code (после регистрации выше) просто попросите на естественном языке:
Отправь письмо на jane@example.com с темой «Following up» и текстом «...» — приложи C:\path\to\file.pdf
Claude Code напрямую вызовет инструмент send_email. Никакой дополнительной настройки для каждой сессии не требуется.
Справочник по инструменту
send_email(to, subject, body, attachments=None, cc=None, bcc=None, html=False)
to/cc/bcc: адреса через запятуюattachments: список абсолютных локальных путей к файлам, суммарный лимит — 15MB (потолок Gmail для raw-отправки — 25MB; 15MB исходных файлов оставляют запас на раздувание base64 + заголовки)html: установите true, чтобы отправить HTML-тело вместо обычного текстаВозвращает
{status, message_id, thread_id, to, subject, attachment_count}
Таблица неполадок
Симптом | Причина | Исправление |
| У скачанного JSON осталось длинное имя, заданное Google по умолчанию | Переименуйте точно в |
| Вашего аккаунта ещё нет в Test users | Audience → Test users → добавьте свой адрес Gmail |
Страница Audience: баннер «Your app's OAuth configuration is incomplete» блокирует Add users | Чувствительная область доступа ( | Заполните Branding → App domain (home page/privacy/terms) любым |
Ошибка «Invalid domain: must not specify the scheme» в поле Authorized domain | Введён | Введите только |
Предупреждение «Google hasn't verified this app» при входе | Ожидаемо — ваш собственный OAuth-клиент в режиме Testing | Нажмите Continue (или Advanced → Go to app), это нормально, а не ошибка |
| Это синтаксис bash, а не PowerShell | Используйте |
| Зарегистрирован после запуска текущей сессии или указан неверный scope | Откройте новую сессию |
Нужно отправлять с другого аккаунта Gmail | Токен привязан к аккаунту, под которым вы вошли | Удалите |
Вложение отклонено / отправка больших файлов не удаётся | Суммарный размер вложений более 15MB | Разбейте на несколько писем или сожмите |
Примечания
credentials/client_secret.jsonиcredentials/token.jsonнаходятся в .gitignore — никогда не коммитьте их.Чтобы отправлять с другого аккаунта Gmail, удалите
credentials/token.jsonи снова запуститеauth_setup.py.
This server cannot be deployed
Maintenance
Related MCP Connectors
Manage Gmail messages, threads, labels, drafts, and settings from your workflows. Send and organiz…
Send transactional email over a verified domain — templates, attachments, custom headers.
Manage Gmail end-to-end: search, read, send, draft, label, and organize threads. Automate workflow…
Permissioned access to Gmail, Drive and Calendar via the user's own Google account
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceEnables sending emails through Gmail using Google's Gmail API. Requires OAuth authentication setup through Google Cloud Console.-
- AlicenseAqualityDmaintenanceEnables sending emails and creating drafts through the Gmail API with OAuth 2.0 authentication.211 npmMIT
- AlicenseNot gradedqualityDmaintenanceEnables searching contacts, drafting, and sending emails via the Gmail API with explicit user approval required before sending.18 npmISC
- AlicenseNot gradedqualityBmaintenanceEnables listing recent emails, creating drafts, and sending emails through Gmail with a required approval token for send operations.1MIT