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-forms

v1.2.0

Published

MCP server for the Google Forms API — create forms, manage questions, publish, read responses and watch for new submissions. For Claude, Cursor, Codex and other AI clients.

Readme

Google Forms MCP

English | Русский

npm CI Glama License: MIT

A1 Google Forms MCP позволяет AI-приложению создавать и настраивать Google Forms на естественном языке. Можно подготовить опрос, выбрать вопросы, опубликовать его в нужный момент, прочитать ответы и настроить уведомления о новых отправках.

Сервер работает с Google Forms API через ваш Google-аккаунт. Он отличает черновую форму от опубликованной и явно показывает ограничения API, а не создаёт впечатление, что через форму можно сделать всё.

  • 19 инструментов. Проверка структуры формы и ответов, создание и редактирование форм и вопросов, управление публикацией и Pub/Sub watches.
  • Подключение из диалога. Скажите «подключи Google Формы»: сервер проведёт через создание OAuth-клиента, поймает редирект Google на 127.0.0.1 с PKCE и сам сохранит токены — без конфигов и перезапуска.
  • Осознанная публикация. Формы, созданные через API, по умолчанию не опубликованы и не принимают ответы, пока вы их не опубликуете.
  • Ответы сохраняются как есть. API умеет читать ответы, но не создавать и не редактировать их; инструмента отправки ответов у сервера нет.
  • Минимальные scope Google. Используются forms.body и forms.responses.readonly без широкого доступа к Drive.

Начните с запроса, который только читает данные:

Покажи вчерашние ответы на форму обратной связи и кратко суммируй ответы в свободной форме.

Подключить сервер · Посмотреть сценарии · Открыть техническую документацию


Увидеть работу за минуту

Вы: Покажи вопросы и настройки приёма ответов в форме обратной связи.

Ассистент: Показывает форму, её пункты, статус публикации и возможность принимать ответы. Ничего не меняется.

Вы: Подготовь обязательный вопрос с оценкой от 1 до 5: «Как прошёл ваш опыт?» — после первого вопроса.

Ассистент: Показывает целевую форму, позицию и предлагаемый вопрос, затем запрашивает подтверждение перед добавлением.

Вы: Подтверждаю.

Ассистент: Добавляет вопрос в форму. Он не публикует и не закрывает форму, пока вы не попросите об этом отдельно.

Содержание

Быстрый старт

Нужны Node.js 20+ и Google-аккаунт. Учётные данные при установке не нужны: сервер подключается прямо в диалоге.

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

В приложении: откройте Settings → MCP servers, нажмите Add server, выберите STDIO, укажите команду npx -y mcp-google-forms@latest и переменные окружения GOOGLE_FORMS_CLIENT_ID, GOOGLE_FORMS_CLIENT_SECRET, GOOGLE_FORMS_REFRESH_TOKEN, затем нажмите Save, потом Restart.

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

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

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

claude mcp add \
  --transport stdio --scope user google-forms \
  -- npx -y mcp-google-forms@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-forms": {
      "command": "npx",
      "args": ["-y", "mcp-google-forms@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-forms": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "mcp-google-forms@latest"]
    }
  }
}

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

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

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

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

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

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

Проверить опрос и ответы

  • Покажи вопросы, настройки приёма ответов и ссылку для респондентов.
  • Сколько ответов пришло с понедельника? Суммируй обратную связь в свободной форме.
  • Покажи один ответ по его ID.

Собрать и улучшить форму

  • Создай RSVP-форму с именем, выбором питания и датой приезда.
  • Добавь обязательный вопрос с оценкой, выпадающий список, дату, время, один или несколько вариантов или текстовое поле.
  • Перемести вопрос или обнови название, описание, quiz mode или сбор email.

Опубликовать и настроить уведомления

  • Опубликуй готовую форму и покажи ссылку для респондентов.
  • Останови приём новых ответов, не удаляя форму.
  • Создай, продли или удали Cloud Pub/Sub watch для новых отправок.

Как меняется форма

  1. create_form создаёт форму, которая по умолчанию не опубликована.
  2. Вопросы — это пункты, которые определяются позицией в форме.
  3. Публикация открывает форму для респондентов; закрытие приёма ответов оставляет форму опубликованной, но не принимает новые отправки.
  4. Ответы — отдельная read-only запись. API не может отправить, изменить или удалить ответ респондента.

Через Forms API нельзя создать вопрос с загрузкой файла, хотя существующий такой вопрос можно прочитать. Старые формы, созданные до модели публикации Google, могут не поддерживать настройки публикации.

Что может измениться

| Операция | Что происходит | Граница подтверждения | |---|---|---| | Проверка формы и её ответов | Читает структуру и отправки | Ничего не меняет | | Создание формы | Добавляет неопубликованную форму | Меняет Google Forms | | Добавление или перемещение вопроса | Меняет пункты формы | Меняет форму | | Обновление данных, настроек или вопроса | Меняет название, настройки или выбранный вопрос | Меняет форму | | Публикация, снятие с публикации, открытие или закрытие ответов | Меняет доступность формы | Меняет доступ для респондентов | | Удаление пункта | Удаляет выбранный вопрос | Разрушительно | | Управление Pub/Sub watch | Создаёт, продлевает или удаляет доставку уведомлений | Потенциально разрушительно | | Технический запрос API | Может вызвать метод API без отдельного инструмента | Потенциально разрушительно |

Как AI-приложение просит подтверждение, определяет само приложение. Сервер помечает операции чтения, записи и удаления, чтобы оно отличило проверку от рабочего изменения.

Как получить доступ

Google Forms требует OAuth 2.0: одного API-ключа недостаточно. Путей два, и первый не требует править конфигурационные файлы.

Подключение из диалога (рекомендуемый путь)

Скажите «подключи Google Формы», и ассистент пройдёт флоу вместе с вами:

  1. setup_instructions выдаёт чек-лист: создать или выбрать проект Google Cloud, включить Google Forms 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-forms/credentials.json (права 0600).

Токены перечитываются на каждый вызов, поэтому подключение действует немедленно — перезапускать AI-приложение не нужно. auth_status показывает состояние, logout отзывает токен и удаляет его.

Переменные окружения (CI и автоматические установки)

  1. Создайте или выберите проект Google Cloud и включите Google Forms 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/forms.body
    https://www.googleapis.com/auth/forms.responses.readonly

Refresh token OAuth-приложения в режиме Testing может истечь через семь дней. Для долгого доступа опубликуйте OAuth-приложение или используйте Internal-приложение в домене Workspace. Храните client secret и refresh token как пароли.

Конфигурация

Все переменные необязательные — без единой из них сервер подключается из диалога.

| Переменная | Обязательна | Описание | |---|---|---| | GOOGLE_FORMS_CLIENT_ID | Нет* | OAuth client ID. | | GOOGLE_FORMS_CLIENT_SECRET | Нет* | OAuth client secret. | | GOOGLE_FORMS_REFRESH_TOKEN | Нет* | OAuth refresh token. | | GOOGLE_FORMS_ACCESS_TOKEN | Нет* | Короткоживущая альтернатива OAuth-тройке. | | GOOGLE_FORMS_OAUTH_PORT | Нет | Фиксированный порт loopback-слушателя для входа из диалога; нужен при пробросе портов по SSH. | | GOOGLE_FORMS_API_BASE | Нет | Переопределяет базовый URL Google Forms API. | | GOOGLE_FORMS_TIMEOUT_MS | Нет | Тайм-аут одного запроса; по умолчанию 60000 мс. | | GOOGLE_FORMS_MAX_RETRIES | Нет | Повторы временных ошибок; по умолчанию 3. |

* Передайте OAuth-тройку или access token.

Данные, лимиты и работа в фоне

  • Запросы идут в Google Forms. Локальный сервер обновляет OAuth-токены Google и вызывает Forms API. Анонимная телеметрия содержит ID установки, версию пакета, версии AI-клиента и платформы и имена инструментов — но не OAuth-токены, данные формы, аргументы или промпты. Чтобы отключить её, задайте ASKADS_TELEMETRY=0.
  • У Google есть поминутные квоты. Документированные лимиты: 975 чтений на проект, 450 вызовов list_responses и 375 записей. При 429 сервер использует задержку; чтение также повторяется после сетевых и 5xx ошибок, а запись после неопределённой ошибки не повторяется.
  • Постоянного опроса нет. Сервер работает только при вызове. Pub/Sub watch может уведомить вашу инфраструктуру о новых ответах; если AI-приложение поддерживает задания по расписанию, оно также может периодически проверять ответы.

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

Поддержка

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