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 installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
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,3056MIT
- 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 gradedqualityCmaintenanceIntegrates Google Classroom with LLMs and AI agents via MCP. Enables listing courses, assignments, announcements, and generating prioritized TODO summaries.1
Related MCP Connectors
Hosted Google Calendar MCP server for AI agents. No self-hosting or Google Cloud setup.
MCP server for Argo RPG Platform — connects AI assistants to campaign data via OAuth2
Phone, SMS & email for AI agents — one remote MCP endpoint, OAuth login, zero install.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/elijah629/classroom-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server