Google Classroom MCP
Google Classroom MCP — Next.js + Google OAuth
Удалённый MCP-сервер Google Classroom только для чтения, предназначенный для ChatGPT/агентных клиентов. Он заменяет локальную архитектуру stdio + tokens.json на статeless-обработчики маршрутов Next.js App Router, OAuth discovery, интерактивный вход через Google, информативные инструменты Classroom и извлечение текста из вложений Drive.
Что делает эта реализация
Запускает
/mcpкак веб-стандартную конечную точку MCP на стандартном Node.js-рантайме Next.js.Использует текущий API
@modelcontextprotocol/serverv2 вместо монолитного SDK v1.Реализует OAuth Protected Resource Metadata и OAuth Authorization Server Metadata.
Поддерживает как OAuth Client ID Metadata Documents (CIMD), так и Dynamic Client Registration (DCR) для совместимости с клиентами.
Проводит пользователя через Google OAuth в процессе подключения MCP. Нет локальной команды
authCLI и нетtokens.json.Сохраняет развёртывание статeless: состояние авторизации, короткоживущие коды авторизации, MCP access-токены и MCP refresh-токены — это зашифрованные непрозрачные значения JWE с использованием
AUTH_SECRET.Не включает вышестоящий Google refresh-токен в MCP access-токены. Обычный MCP bearer содержит только текущий короткоживущий Google access-токен; грант обновления Google находится только внутри зашифрованного MCP refresh-токена, обрабатываемого
/oauth/token.Использует Google REST API через
fetch, избегая Node-файловых API и тяжёлого клиентаgoogleapis.Читает материалы курса, представления текущего студента, объявления, материалы заданий, темы и метаданные курса.
Нормализует типы вложений Classroom: файлы Drive, ссылки, видео YouTube, формы, Gemini Gems и блокноты NotebookLM.
Читает фактический текст из прикреплённых Google Docs, Sheets, Slides, PDF и текстовых/JSON/XML файлов по запросу.
Реализация намеренно только для чтения. Добавляйте инструменты мутации позже и запрашивайте write-скоупы только для этих операций.
Related MCP server: mcp-classroom
Инструменты, видимые модели
classroom_overview
Используйте это в первую очередь для планирования. Он объединяет активные курсы + все опубликованные задания + представления аутентифицированного студента, и по умолчанию также включает объявления и материалы занятий. Поддерживает границы дат, фильтрацию по статусу задания, выбранные курсы, опциональные работы без срока и ограниченное количество постов. Границы дат заданий используют сроки; границы объявлений/материалов — время обновления/создания поста.
Типичные вопросы: «Что нужно сдать на этой неделе?», «Что мои учителя опубликовали на этой неделе?», «Что я пропустил?», «Составь мне план на сегодняшний вечер.»
classroom_course_context
Возвращает один объединённый пакет курса: метаданные, темы, задания + статус представления, материалы занятий, объявления и нормализованные вложения. С attachmentMode: "text" также читает ограниченное количество вложений Drive, чтобы модель могла напрямую ссылаться на учебный план или раздаточный материал.
Типичные вопросы: «Каковы правила оценивания по химии?», «Что мой учитель опубликовал на этой неделе?», «Используй учебный план при ответе.»
classroom_assignment_context
Возвращает конкретное задание, его рубрику, текущее представление/оценку студента и состояние рубрики, вложения от учителя и представленные вложения. Также может извлекать текст вложений.
Типичные вопросы: «Разбери это задание», «Что именно мне нужно сдать?», «Сравни мою работу с инструкциями.»
classroom_search
Ищет по названиям/описаниям заданий, материалам, объявлениям, названиям/ссылкам вложений учителя и названиям собственных представленных вложений аутентифицированного студента в выбранных курсах и опциональном диапазоне дат. searchAttachmentContents: true выполняет ограниченный глубокий поиск внутри вложений Drive как от учителей, так и из представлений студента, полезно, когда вы помните правило из учебного плана или старого файла, но не его имя.
Типичные вопросы: «Найди мой учебный план», «Где учитель упоминал конспекты Корнелла?», «Найди раздаточный материал о главе 4.»
classroom_read_attachment
Читает один файл Drive по ID. Google Docs, Sheets, Slides, текстовые файлы, JSON/XML и текстовые PDF возвращают извлечённый текст плюс метаданные. Неподдерживаемые бинарные типы возвращают метаданные и URL Drive, а не выдуманное содержимое.
OAuth-поток, используемый MCP-клиентом
Вход через Google является частью подключения MCP, а не отдельной командой настройки:
MCP client
-> /mcp (no bearer token)
<- 401 + WWW-Authenticate + resource_metadata
-> /.well-known/oauth-protected-resource/mcp
-> /.well-known/oauth-authorization-server
-> /oauth/authorize (PKCE)
-> accounts.google.com
-> /oauth/google/callback
-> client redirect URI with MCP authorization code
-> /oauth/token
<- MCP access token + refresh token
-> /mcp (Bearer <MCP access token>)Ваш Google refresh-токен никогда не становится bearer-токеном, отправляемым в /mcp; он остаётся внутри зашифрованного гранта обновления коннектора. Именно это делает работу похожей на обычный MCP «Подключиться через Google», а не на запрос вставить учётные данные в агента.
Настройка Google Cloud
Создайте/выберите проект Google Cloud и включите Google Classroom API, Google Drive API, Google Docs API, Google Sheets API и Google Slides API.
Настройте экран согласия OAuth. Для частного/личного развёртывания также ограничьте разрешённые аккаунты с помощью
ALLOWED_GOOGLE_EMAILS.Создайте OAuth 2.0 клиент Веб-приложение.
Добавьте точный URI перенаправления Google:
https://YOUR_DOMAIN/oauth/google/callback.Скопируйте идентификатор клиента/секрет клиента в переменные окружения Vercel, показанные в
.env.example.
Запрашиваемые Google-скоупы — это read-only скоупы Classroom плюс drive.readonly. drive.readonly — ограниченный Google-скоуп, поэтому для публичного/многопользовательского продакшн-приложения может потребоваться проверка Google. Приложение Google OAuth, оставленное в режиме Testing, также может иметь короткоживущие гранты обновления; переведите конфигурацию согласия в соответствующее продакшн-состояние, когда будете готовы.
Развёртывание на Vercel
Установите переменные окружения из .env.example, разверните, затем используйте:
https://YOUR_DOMAIN/mcpкак URL удалённого MCP-сервера в вашем MCP-клиенте / пользовательском приложении ChatGPT. Первый неаутентифицированный MCP-запрос получает OAuth-вызов; клиент обнаруживает OAuth-метаданные этого сервера и открывает поток авторизации. Затем конечная точка авторизации перенаправляет браузер на Google, и обратный вызов возвращает MCP-код авторизации клиенту.
Для ChatGPT сохраняйте рекламу offline_access. Эта реализация добавляет его, даже если клиент его опускает, чтобы можно было выдать MCP refresh-токен и коннектору не требовался вход через Google каждый раз, когда истекает короткоживущий access-токен.
Среда выполнения
Все конечные точки MCP и OAuth используют обработчики маршрутов Next.js App Router на стандартном Node.js-рантайме. Это соответствует рекомендациям Next.js 16 и избегает ограничений пакетов Edge-рантайма. Реализация по-прежнему использует переносимые веб-API, где это практично.
Замечания по безопасности
Этот проект намеренно статeless. Это упрощает развёртывание на Vercel, но означает, что сервер не может централизованно отозвать уже выданный MCP refresh-токен или гарантировать одноразовое использование кода авторизации без постоянного хранилища. Отзыв Google или ротация AUTH_SECRET делает доступ недействительным глобально. Если вы превращаете этот личный коннектор в многопользовательский сервис, замените самодостаточное хранилище refresh-токенов/кодов на сервер авторизации на основе базы данных/KV, поддерживающий отзыв, одноразовое использование кодов, обнаружение ротации/повторного использования токенов и отключение аккаунтов.
Установите ALLOWED_GOOGLE_EMAILS для личного развёртывания. Установите ALLOWED_CIMD_HOSTS=chatgpt.com для ChatGPT; выборка URL CIMD запрещена, когда этот список разрешённых пуст.
Текущие границы API
«Полная поддержка постов» здесь означает объекты Classroom, которые публичный API предоставляет студенту: задания, материалы заданий и объявления, объединённые в удобные для модели представления. Classroom не предоставляет каждую часть веб-интерфейса как универсальную ленту постов/комментариев. Сторонние дополнения Classroom, PDF только для сканирования, бинарные файлы Office, видео и произвольные связанные веб-страницы возвращаются как типизированные метаданные/ссылки, если не добавлен специальный экстрактор.
Локальная разработка
Скопируйте .env.example в .env.local, установите APP_ORIGIN на HTTPS-источник, доступный вашему OAuth-клиенту, затем:
npm install
npm run devGoogle OAuth обычно требует зарегистрированный URI перенаправления, поэтому для локального интерактивного OAuth используйте HTTPS-туннель и установите APP_ORIGIN на источник этого туннеля.
This server cannot be deployed
Maintenance
Related MCP Connectors
MCP server connecting AI agents to 100+ apps (Gmail, Slack, Notion, GitHub) via one-click OAuth.
Connect any AI agent to 1,000+ apps and 27,000+ actions through one remote MCP server (OAuth).
Hosted Google Calendar MCP server for AI agents. No self-hosting or Google Cloud setup.
Remote streamable-HTTP MCP server running on a single Cloudflare Worker. Your assistant gets live Airbnb, Amazon, Booking.com, Google Flights, Maps and Reddit data, social search on X, Instagram and TikTok, the Meta Ad Library, and image/video generation without any keys. Connect your own accounts to let it send WhatsApp or Telegram messages, work an IMAP inbox, manage Meta Ads campaigns and publish to X and LinkedIn. OAuth 2.1 with PKCE; stored credentials are AES-256-GCM encrypted.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceAn MCP server that enables AI assistants to access and interact with Google Classroom data, allowing users to view courses, course details, and assignments through natural language commands.1,038 npm6MIT
- FlicenseNot gradedqualityDmaintenanceMCP server for Google Classroom enabling reading assignments, checking submission states, uploading files to Drive, and viewing attachments, with optional Playwright automation for write operations restricted by Workspace admins.-
- AlicenseAqualityDmaintenanceUnified MCP server for Google Classroom, Drive, and Docs, enabling AI assistants to manage courses, assignments, files, and documents.17MIT
- FlicenseNot gradedqualityDmaintenanceIntegrates Google Classroom with LLMs and AI agents via MCP. Enables listing courses, assignments, announcements, and generating prioritized TODO summaries.1-