google-classroom-mcp
google-classroom-mcp
Servidor MCP para Google Classroom, pensado para el alumno y con soporte para varias cuentas de Google a la vez. Permite que Claude Code, Claude Desktop, Cursor o cualquier cliente MCP consulte tus cursos, tareas pendientes, fechas de entrega, calificaciones y anuncios y, si se lo pides, adjunte archivos o entregue una tarea.
Usa la API oficial de Google Classroom con OAuth de tu propia cuenta y solo pide permisos de Classroom. Los archivos (bajar materiales, subir tu tarea) se manejan con el servidor MCP oficial de Google Drive, que en Claude se conecta con un clic; este servidor solo pasa los ids y enlaces de Drive.
Sobre las entregas. La API de Google solo permite adjuntar archivos y entregar desde la misma aplicación que creó la tarea. Si tu profesor la creó desde la web de Classroom (lo normal),
submit_assignmentdevuelve403 @ProjectPermissionDeniedy hay que adjuntar desde classroom.google.com. Es una restricción de Google, no del servidor.
Requisitos
uv instalado. En macOS:
brew install uv. En cualquier sistema:curl -LsSf https://astral.sh/uv/install.sh | sh.Un client secret de OAuth de Google Cloud (gratis, ver abajo).
Que tu cuenta de Classroom permita apps de terceros. Si es una cuenta institucional, el administrador puede tenerlo bloqueado.
Instalación
1. Crea el client secret en Google Cloud (una sola vez, unos 5 minutos):
Entra a https://console.cloud.google.com y crea un proyecto, por ejemplo
classroom-mcp.APIs y servicios > Biblioteca: habilita Google Classroom API.
APIs y servicios > Pantalla de consentimiento de OAuth (o "Google Auth Platform"): tipo de usuario Externo, llena nombre y correo, y en Usuarios de prueba agrega todas las cuentas de Google con las que entras a Classroom.
APIs y servicios > Credenciales > Crear credenciales > ID de cliente de OAuth, tipo de aplicación Aplicación de escritorio. Descarga el JSON.
2. Autoriza tu cuenta (abre el navegador; el token queda en
~/.config/google-classroom-mcp/accounts/<alias>.json con permisos solo para tu usuario):
uvx --from git+https://github.com/AlanMagno1/google-classroom-mcp google-classroom-mcp setup ~/Downloads/client_secret_XXXX.jsonSi Google avisa que la app no está verificada, elige "Continuar": la app es tuya.
¿Otra cuenta? Vuelve a correr setup (ya sin el JSON) y en el navegador elige la
otra cuenta de Google. Por default cada cuenta se guarda con su correo como alias; si
prefieres un nombre corto usa setup --as unam.
3. Registra el servidor en Claude Code:
claude mcp add google-classroom -s user -- uvx --from git+https://github.com/AlanMagno1/google-classroom-mcp google-classroom-mcpListo. Abre Claude Code y pídele, por ejemplo:
¿Qué tareas tengo pendientes en Classroom?
Revisa https://classroom.google.com/c/NzE2NDU5MjM0/a/NjA1MzIx/details y dime qué piden.
Bájame la presentación de la clase de hoy de Cálculo (usa el MCP de Drive con el id que devuelve este servidor).
Otros clientes (Claude Desktop, Cursor, etc.)
{
"mcpServers": {
"google-classroom": {
"command": "uvx",
"args": ["--from", "git+https://github.com/AlanMagno1/google-classroom-mcp", "google-classroom-mcp"]
}
}
}Variables de entorno
Variable | Descripción |
| Carpeta de configuración. Default: |
| Ruta al client secret. Default: |
Varias cuentas de Google
Un solo servidor maneja todas tus cuentas. Cada herramienta acepta un parámetro
account opcional (alias, correo, o un pedazo de cualquiera de los dos):
Si solo hay una cuenta, nunca hace falta indicarlo.
list_coursesylist_pending_assignmentssinaccountrecorren todas las cuentas y marcan a cuál pertenece cada curso.Las herramientas que reciben un curso o una tarea averiguan solas en qué cuenta está.
Si por alguna razón quieres dos servidores separados, sigue funcionando la variable
GOOGLE_CLASSROOM_MCP_CONFIG_DIR con un nombre de servidor distinto para cada uno.
Herramientas
Todas aceptan account? al final. Los course_id aceptan también la URL del curso; los
ids en las URLs de Classroom van en base64 y el servidor los decodifica solo.
Herramienta | Qué hace |
| Cuentas configuradas (alias, correo, nombre). |
| Verifica la conexión y devuelve el usuario autenticado de cada cuenta. |
| Cursos en los que estás inscrito como alumno, con la cuenta de cada uno. |
| Tareas que aún no has entregado, por cuenta y curso, ordenadas por fecha límite. Marca las vencidas. |
| Tareas, preguntas y materiales del curso agrupados por tema, con el estado de tu entrega y calificación. |
| Detalle de una tarea: instrucciones, fecha, puntos, adjuntos y tu entrega. Acepta la URL completa de Classroom. |
| Anuncios del tablón, del más reciente al más antiguo. |
| Adjunta archivos de Drive (ids o URLs) y/o enlaces a tu entrega y si |
| Anula una entrega ya enviada para poder modificarla. Misma restricción. |
Los materiales y las entregas devuelven drive_id y url de cada archivo. Para leerlos o
para subir un archivo local a Drive usa el servidor MCP de Google Drive y pasa el id
resultante a submit_assignment(drive_ids=[...]).
Comandos
google-classroom-mcp setup [client_secret.json] [--as ALIAS] # guarda el client secret y autoriza una cuenta
google-classroom-mcp accounts # lista las cuentas configuradas
google-classroom-mcp remove ALIAS # quita una cuenta
google-classroom-mcp check # verifica la conexión de todas las cuentas
google-classroom-mcp # arranca el servidor MCP por stdio (lo usa el cliente)Permisos que pide
Solo permisos de Classroom: lectura de cursos, materiales, anuncios, temas, lista del
curso (para leer tu perfil) y correo del perfil, y lectura y escritura de tu propio
trabajo de clase y tus entregas (classroom.coursework.me). Ningún permiso de Drive.
Nada se envía a ningún servidor que no sea Google. submit_assignment y
reclaim_submission modifican tu entrega: Claude solo debe usarlas cuando se lo pidas
explícitamente.
Desarrollo
git clone https://github.com/AlanMagno1/google-classroom-mcp
cd google-classroom-mcp
uv sync
uv run google-classroom-mcp checkPara probar cambios locales en Claude Code sin publicar:
claude mcp add google-classroom -s user -- uv --directory /ruta/a/google-classroom-mcp run google-classroom-mcpLicencia
MIT