mcp-google-chat
v1.0.0
Published
MCP server for the Google Chat API — list and search spaces, read and send messages, work with threads, reactions, attachments and memberships. For Claude, Cursor, Codex and other AI clients.
Maintainers
Readme
Google Chat MCP
English | Русский
A1 Google Chat MCP позволяет AI-приложению работать в Google Chat на естественном языке. Можно найти нужное пространство или личный чат, вникнуть в переписку, ответить в треде, поставить эмодзи-реакцию и управлять составом участников.
Сервер работает с Google Chat API через ваш Google-аккаунт и действует от имени вошедшего пользователя: сообщения отправляются под вашим именем, а редактировать и удалять можно только собственные сообщения и реакции. Ограничения Chat API он показывает явно, а не создаёт впечатление, что в чате можно сделать всё.
- 20 инструментов. Подключение из диалога, поиск пространств и личных чатов, чтение и отправка сообщений с управлением тредами, эмодзи-реакции, метаданные вложений и управление участниками.
- Вы действуете от своего имени. Отправленное появляется под вашим именем; редактирование и удаление не выходят за пределы ваших собственных сообщений и реакций.
- Отправка никогда не повторяется. После неоднозначного сбоя сервер не повторяет запись — повторённая отправка стала бы дублем сообщения в реальном чате.
- Минимальные scope Google. Сервер отправляет тот токен, который вы выпустили; запрашивайте scope под задачу — для просмотра пространств и сообщений хватает read-only.
Начните с запроса, который только читает данные:
Покажи сегодняшние сообщения в пространстве команды и кратко перескажи, о чём договорились.
Подключить сервер · Посмотреть сценарии · Открыть техническую документацию
Увидеть работу за минуту
Вы: Что сегодня обсуждали в пространстве релиза?
Ассистент: Показывает сегодняшние сообщения с отправителями и тредами. Ничего не меняется.
Вы: Ответь в треде про деплой, что выкатка завершена.
Ассистент: Показывает целевое пространство, тред и черновик текста, затем запрашивает подтверждение перед отправкой.
Вы: Подтверждаю.
Ассистент: Отправляет ответ под вашим именем в этот тред. Другие сообщения он не трогает.
Содержание
- Быстрый старт
- Что можно поручить
- Как сервер действует в чате
- Что может измениться
- Как получить доступ
- Конфигурация
- Данные, лимиты и работа в фоне
- Техническая документация
- Поддержка
Быстрый старт
Нужны Node.js 20+ и Google-аккаунт с доступом к Google Chat. Учётные данные при установке не нужны: сервер подключается прямо в диалоге.
- Добавьте сервер в AI-приложение.
- Скажите «подключи Google Chat» — ассистент проведёт создание OAuth-клиента и выдачу доступа, не трогая конфиги и без перезапуска.
- Отправьте запрос, который только читает данные.
В приложении: откройте Settings → MCP servers, нажмите Add server, выберите STDIO, укажите команду npx -y mcp-google-chat@latest и нажмите Save. Переменные окружения не нужны — подключение делается потом прямо в диалоге.
В командной строке:
codex mcp add google-chat \
-- npx -y mcp-google-chat@latestcodex mcp listclaude mcp add \
--transport stdio --scope user google-chat \
-- npx -y mcp-google-chat@latestclaude mcp listАктуальный официальный путь — Settings → Extensions. Для пользовательского desktop extension откройте Advanced settings → Extension Developer → Install Extension…, выберите файл .mcpb и следуйте подсказкам.
Этот репозиторий сейчас публикует npm-пакет со stdio и пока не содержит .mcpb. Поэтому используйте приведённый ниже JSON stdio-конфиг как fallback только в сборках Claude Desktop, где ещё поддерживается локальная конфигурация:
{
"mcpServers": {
"google-chat": {
"command": "npx",
"args": ["-y", "mcp-google-chat@latest"]
}
}
}В таких сборках сохраните его в ~/Library/Application Support/Claude/claude_desktop_config.json на macOS или %APPDATA%\Claude\claude_desktop_config.json на Windows.
Документация Claude Desktop MCP
Добавьте в ~/.cursor/mcp.json на macOS/Linux или %USERPROFILE%\.cursor\mcp.json на Windows:
{
"mcpServers": {
"google-chat": {
"type": "stdio",
"command": "npx",
"args": ["-y", "mcp-google-chat@latest"]
}
}
}Запустите MCP: Open User Configuration и добавьте:
{
"servers": {
"google-chat": {
"type": "stdio",
"command": "npx",
"args": ["-y", "mcp-google-chat@latest"]
}
}
}Проверьте сервер командой MCP: List Servers.
Что можно поручить
Вникнуть в переписку
- Покажи мои пространства и найди личный чат с [email protected].
- Что сегодня писали в пространстве релиза? Суммируй принятые решения.
- Покажи весь тред, к которому относится это сообщение.
Отправлять и править сообщения
- Отправь статус-апдейт в пространство команды.
- Ответь в треде про деплой, что выкатка завершена.
- Исправь опечатку в моём последнем сообщении или удали его совсем.
Реагировать и проверять вложения
- Поставь 👍 на анонс и покажи, кто ещё чем отреагировал.
- Убери мою реакцию с того сообщения.
- Какие файлы приложены к этому сообщению? Покажи имена и типы.
Управлять участниками пространства
- Кто состоит в этом пространстве и кто его менеджеры?
- Добавь [email protected] в пространство и сделай его менеджером.
- Удали бывшего коллегу из пространства.
Как сервер действует в чате
- С OAuth-данными refresh-потока сервер действует от имени вошедшего пользователя: сообщения отправляются под вашим именем, а редактирование и удаление достают только до ваших собственных сообщений и реакций. Для изменения состава участников дополнительно нужно быть менеджером пространства.
- Пространство можно указать голым id, но сообщения, треды, участники, реакции и вложения адресуются полными именами ресурсов, которые возвращает API, — сначала получите список, затем действуйте по точному имени.
- Ответ попадает в тред по его имени или по ключу треда. По умолчанию отправка откатывается к созданию нового треда, когда ответить в целевой нельзя; можно попросить вместо этого завершиться ошибкой.
- Работа в роли Chat-приложения — карточки, личные сообщения от приложения, отдельный эндпоинт вложений, принудительное удаление — это отдельная конфигурация Google Cloud; единственный мост сюда — access token сервисного аккаунта, переданный через
GOOGLE_CHAT_ACCESS_TOKEN.
Chat API не умеет искать по тексту сообщений — единственные фильтры сообщений — это время создания и тред. find_direct_message находит существующий личный чат, но никогда не создаёт его, а байты файлов через этот сервер не скачиваются и не загружаются. Создание пространств и остальные непокрытые методы API идут через raw_request.
Что может измениться
| Операция | Что происходит | Граница подтверждения | |---|---|---| | Чтение пространств, сообщений, участников, реакций и метаданных вложений | Читает переписку и метаданные | Ничего не меняет | | Отправка сообщения | Публикует в реальном пространстве под вашим именем | Меняет переписку | | Обновление сообщения | Заменяет текст вашего собственного сообщения | Меняет переписку | | Добавление или снятие реакции | Меняет вашу собственную реакцию на сообщении | Меняет переписку | | Удаление сообщения | Безвозвратно удаляет сообщение | Разрушительно | | Управление участниками | Добавляет, меняет роль или удаляет участника пространства | Потенциально разрушительно | | Технический запрос API | Может вызвать метод API без отдельного инструмента | Потенциально разрушительно |
Как AI-приложение просит подтверждение, определяет само приложение. Сервер помечает операции чтения, записи и удаления, чтобы оно отличило просмотр переписки от публикации.
Как получить доступ
Google Chat требует OAuth 2.0: одного API-ключа недостаточно. Путей два, и первый не требует править конфигурационные файлы.
Подключение из диалога (рекомендуемый путь)
Скажите «подключи Google Chat», и ассистент пройдёт флоу вместе с вами:
setup_instructionsвыдаёт чек-лист: создать или выбрать проект Google Cloud, включить Google Chat API, настроить consent screen и создать OAuth-клиент типа Desktop app.- Скачайте JSON этого клиента («Download JSON») и передайте ассистенту путь к файлу —
set_clientсохранит его с правами только для владельца. Секрет через переписку не проходит. start_loginвозвращает ссылку на согласие Google. Откройте её на этой же машине и подтвердите доступ: код возвращается на одноразовый слушатель127.0.0.1(PKCE), а не в чат.finish_loginменяет код на токены, кладёт их в~/.config/mcp-google-chat/credentials.json(права 0600) и проверяет реальным вызовом Chat API — так невключённый Chat API ловится сразу, а не на первом рабочем вопросе.
Токены перечитываются на каждый вызов, поэтому подключение действует немедленно — перезапускать AI-приложение не нужно. auth_status показывает состояние, logout отзывает токен и удаляет его. Логин запрашивает chat.spaces.readonly, chat.messages, chat.messages.reactions и chat.memberships.readonly; админский scope, нужный search_spaces, намеренно не запрашивается — для него остаётся путь через переменные окружения.
Переменные окружения (CI и автоматические установки)
Создайте или выберите проект Google Cloud и включите Google Chat API.
Настройте OAuth consent screen и создайте OAuth-клиент типа Desktop app.
Авторизуйте Google-аккаунт, от имени которого будете писать. OAuth 2.0 Playground поможет получить refresh token, если включить Use your own OAuth credentials.
Запрашивайте только те scope, которые нужны вашим сессиям. Для чтения и отправки достаточно этих:
https://www.googleapis.com/auth/chat.spaces.readonly https://www.googleapis.com/auth/chat.messages.readonly https://www.googleapis.com/auth/chat.messages.createПолная таблица по задачам — редактирование и удаление своих сообщений, реакции, участники, админский поиск — в docs/TOOLS.md.
Refresh token OAuth-приложения в режиме Testing может истечь через семь дней. Для долгого доступа опубликуйте OAuth-приложение или используйте Internal-приложение в домене Workspace. Храните client secret и refresh token как пароли.
Для короткой сессии подойдёт и короткоживущий токен в GOOGLE_CHAT_ACCESS_TOKEN — например из gcloud auth print-access-token с выданными Chat-scope. Через эту же переменную на сервер попадает токен сервисного аккаунта Chat-приложения, когда нужны функции, доступные только приложению.
Конфигурация
Все переменные необязательные — без единой из них сервер подключается из диалога.
| Переменная | Обязательна | Описание |
|---|---|---|
| GOOGLE_CHAT_CLIENT_ID | Нет* | OAuth client ID. |
| GOOGLE_CHAT_CLIENT_SECRET | Нет* | OAuth client secret. |
| GOOGLE_CHAT_REFRESH_TOKEN | Нет* | OAuth refresh token. |
| GOOGLE_CHAT_ACCESS_TOKEN | Нет* | Короткоживущая альтернатива OAuth-тройке; может быть токеном сервисного аккаунта или Chat-приложения. |
| GOOGLE_CHAT_OAUTH_PORT | Нет | Фиксированный порт loopback-слушателя для входа из диалога; нужен при пробросе портов по SSH. |
| GOOGLE_CHAT_API_BASE | Нет | Переопределяет базовый URL Google Chat API. |
| GOOGLE_CHAT_TIMEOUT_MS | Нет | Тайм-аут одного запроса; по умолчанию 60000 мс. |
| GOOGLE_CHAT_MAX_RETRIES | Нет | Повторы временных ошибок; по умолчанию 3. |
* Для пути через окружение передайте OAuth-тройку или access token. Заданные, они имеют приоритет над сохранённым входом из диалога, и сервер их не обновляет и не удаляет.
Запущенный без учётных данных сервер всё равно завершает MCP-рукопожатие; инструкции и первый вызов инструмента называют оба способа починки — вход из диалога (без перезапуска) и переменные окружения (с перезапуском).
Данные, лимиты и работа в фоне
- Запросы идут в Google Chat. Локальный сервер обновляет OAuth-токены Google и вызывает Chat API; токен никогда не отправляется на другой хост. Анонимная телеметрия содержит ID установки, версию пакета, версии AI-клиента и платформы и имена инструментов — но не OAuth-токены, текст сообщений, аргументы или промпты. Чтобы отключить её, задайте
ASKADS_TELEMETRY=0. - У Google есть квоты на проект и пользователя. При
429сервер использует задержку; чтение также повторяется после сетевых и5xxошибок, а запись после неопределённой ошибки не повторяется никогда — повторённая отправка стала бы дублем сообщения в реальном чате.send_messageпринимает собственный id сообщения, который делает отправку адресуемой и защищённой от дублей. - Постоянного опроса нет. Сервер работает только при вызове.
list_messagesможет инкрементально опрашивать пространство по времени создания, если AI-приложение поддерживает задания по расписанию; подписки на события пространства идут черезraw_request.
Техническая документация
- Каталог MCP-возможностей — страницы по пользовательским задачам для каждого инструмента.
- Все инструменты и параметры
- Документация по разработке
- Документация по публикации
- Справочник Google Chat API
Поддержка
Нашли ошибку или не хватает сценария? Создайте issue или напишите в Telegram.
