npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

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.

Readme

Google Chat MCP

English | Русский

npm CI Glama License: MIT

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. Учётные данные при установке не нужны: сервер подключается прямо в диалоге.

  1. Добавьте сервер в AI-приложение.
  2. Скажите «подключи Google Chat» — ассистент проведёт создание OAuth-клиента и выдачу доступа, не трогая конфиги и без перезапуска.
  3. Отправьте запрос, который только читает данные.

В приложении: откройте Settings → MCP servers, нажмите Add server, выберите STDIO, укажите команду npx -y mcp-google-chat@latest и нажмите Save. Переменные окружения не нужны — подключение делается потом прямо в диалоге.

В командной строке:

codex mcp add google-chat \
  -- npx -y mcp-google-chat@latest
codex mcp list

Документация Codex MCP

claude mcp add \
  --transport stdio --scope user google-chat \
  -- npx -y mcp-google-chat@latest
claude mcp list

Документация Claude Code MCP

Актуальный официальный путь — 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"]
    }
  }
}

Документация Cursor MCP

Запустите MCP: Open User Configuration и добавьте:

{
  "servers": {
    "google-chat": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "mcp-google-chat@latest"]
    }
  }
}

Проверьте сервер командой MCP: List Servers.

Документация VS Code MCP

Что можно поручить

Вникнуть в переписку

  • Покажи мои пространства и найди личный чат с [email protected].
  • Что сегодня писали в пространстве релиза? Суммируй принятые решения.
  • Покажи весь тред, к которому относится это сообщение.

Отправлять и править сообщения

  • Отправь статус-апдейт в пространство команды.
  • Ответь в треде про деплой, что выкатка завершена.
  • Исправь опечатку в моём последнем сообщении или удали его совсем.

Реагировать и проверять вложения

  • Поставь 👍 на анонс и покажи, кто ещё чем отреагировал.
  • Убери мою реакцию с того сообщения.
  • Какие файлы приложены к этому сообщению? Покажи имена и типы.

Управлять участниками пространства

  • Кто состоит в этом пространстве и кто его менеджеры?
  • Добавь [email protected] в пространство и сделай его менеджером.
  • Удали бывшего коллегу из пространства.

Как сервер действует в чате

  1. С OAuth-данными refresh-потока сервер действует от имени вошедшего пользователя: сообщения отправляются под вашим именем, а редактирование и удаление достают только до ваших собственных сообщений и реакций. Для изменения состава участников дополнительно нужно быть менеджером пространства.
  2. Пространство можно указать голым id, но сообщения, треды, участники, реакции и вложения адресуются полными именами ресурсов, которые возвращает API, — сначала получите список, затем действуйте по точному имени.
  3. Ответ попадает в тред по его имени или по ключу треда. По умолчанию отправка откатывается к созданию нового треда, когда ответить в целевой нельзя; можно попросить вместо этого завершиться ошибкой.
  4. Работа в роли 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», и ассистент пройдёт флоу вместе с вами:

  1. setup_instructions выдаёт чек-лист: создать или выбрать проект Google Cloud, включить Google Chat API, настроить consent screen и создать OAuth-клиент типа Desktop app.
  2. Скачайте JSON этого клиента («Download JSON») и передайте ассистенту путь к файлу — set_client сохранит его с правами только для владельца. Секрет через переписку не проходит.
  3. start_login возвращает ссылку на согласие Google. Откройте её на этой же машине и подтвердите доступ: код возвращается на одноразовый слушатель 127.0.0.1 (PKCE), а не в чат.
  4. 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 и автоматические установки)

  1. Создайте или выберите проект Google Cloud и включите Google Chat API.

  2. Настройте OAuth consent screen и создайте OAuth-клиент типа Desktop app.

  3. Авторизуйте Google-аккаунт, от имени которого будете писать. OAuth 2.0 Playground поможет получить refresh token, если включить Use your own OAuth credentials.

  4. Запрашивайте только те 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.

Техническая документация

Поддержка

Нашли ошибку или не хватает сценария? Создайте issue или напишите в Telegram.