MewCP Google Classroom MCP
Servidor MCP de Google Classroom alojado, sin estado y multiinquilino que permite a los asistentes de IA gestionar cursos, tareas, trabajos, estudiantes y actividades del aula a través de Google Classroom.
Documentación
Gestiona cursos, tareas y estudiantes de Google Classroom con agentes.
Un servidor de Model Context Protocol (MCP) que expone la API de Google Classroom para gestionar cursos, trabajos de curso, anuncios, listas de clase, entregas y tutores.
Resumen
El servidor MCP de Google Classroom proporciona gestión completa del ciclo de vida de tu entorno de Google Classroom:
- Crea y gestiona cursos, temas, anuncios y trabajos de curso
- Gestiona listas de estudiantes y profesores, invitaciones y enlaces de tutores
- Lee y califica las entregas de los estudiantes
Perfecto para:
- Educadores que automatizan la configuración de cursos y la distribución de contenido
- Administradores que gestionan listas de clase y comunicaciones con tutores a gran escala
- Desarrolladores que crean integraciones de gestión del aprendizaje sobre Google Classroom
Herramientas
Cursos
list_courses — Lista los cursos que el usuario puede ver
Devuelve una lista de cursos que el usuario solicitante tiene permiso de ver, opcionalmente filtrada por estudiante, profesor o estado del curso.
Entradas:
- `student_id` (string, optional) — Restrict to courses with this student
- `teacher_id` (string, optional) — Restrict to courses with this teacher
- `course_states` (string, optional) — Restrict to courses in these states (e.g. ACTIVE, ARCHIVED)
- `page_size` (integer, optional) — Maximum number of courses to return
- `page_token` (string, optional) — Token for the next page of results
Salida:
{
"courses": [
{
"id": "123456789",
"name": "Introduction to Python",
"section": "Period 1",
"ownerId": "987654321",
"courseState": "ACTIVE",
"enrollmentCode": "abc123",
"updateTime": "2025-01-15T10:00:00.000Z"
}
],
"nextPageToken": "token_for_next_page"
}
get_course — Obtiene un solo curso
Devuelve un curso por su identificador.
Entradas:
- `id` (string, required) — Identifier of the course
Salida:
{
"id": "123456789",
"name": "Introduction to Python",
"section": "Period 1",
"ownerId": "987654321",
"courseState": "ACTIVE",
"enrollmentCode": "abc123",
"updateTime": "2025-01-15T10:00:00.000Z"
}
create_course — Crea un curso
Crea un nuevo curso. El usuario solicitante se convierte en el propietario.
Entradas:
- `body` (string, required) — JSON string representing the Course object to create
Salida:
{
"id": "123456789",
"name": "Introduction to Python",
"section": "Period 1",
"ownerId": "987654321",
"courseState": "PROVISIONED",
"enrollmentCode": "abc123",
"updateTime": "2025-01-15T10:00:00.000Z"
}
update_course — Reemplaza un curso
Reemplaza todos los campos de un curso con los valores proporcionados.
Entradas:
- `id` (string, required) — Identifier of the course to update
- `body` (string, required) — JSON string representing the updated Course object
Salida:
{
"id": "123456789",
"name": "Advanced Python",
"section": "Period 2",
"ownerId": "987654321",
"courseState": "ACTIVE",
"updateTime": "2025-01-16T09:00:00.000Z"
}
patch_course — Actualiza parcialmente un curso
Actualiza solo los campos especificados en update_mask.
Entradas:
- `id` (string, required) — Identifier of the course to patch
- `update_mask` (string, required) — Comma-separated list of fields to update (e.g. name,section)
- `body` (string, required) — JSON string with the fields to update
Salida:
{
"id": "123456789",
"name": "Advanced Python",
"section": "Period 1",
"ownerId": "987654321",
"courseState": "ACTIVE",
"updateTime": "2025-01-16T09:00:00.000Z"
}
delete_course — Elimina un curso
Elimina permanentemente un curso. Solo los propietarios del curso pueden eliminarlo.
Entradas:
- `id` (string, required) — Identifier of the course to delete
Salida:
{}
Alias de curso
create_course_alias — Crea un alias de curso
Crea un alias para un curso para que pueda ser referenciado por un identificador alternativo.
Entradas:
- `course_id` (string, required) — Identifier of the course
- `body` (string, required) — JSON string representing the CourseAlias object
Salida:
{
"alias": "d:intro-python-2025"
}
list_course_aliases — Lista los alias de curso
Devuelve todos los alias de un curso.
Entradas:
- `course_id` (string, required) — Identifier of the course
- `page_size` (integer, optional) — Maximum number of aliases to return
- `page_token` (string, optional) — Token for the next page of results
Salida:
{
"aliases": [
{ "alias": "d:intro-python-2025" },
{ "alias": "d:py101" }
]
}
delete_course_alias — Elimina un alias de curso
Elimina un alias de un curso.
Entradas:
- `course_id` (string, required) — Identifier of the course
- `alias` (string, required) — The alias to delete
Salida:
{}
Anuncios
create_announcement — Crea un anuncio
Publica un nuevo anuncio en un curso.
Entradas:
- `course_id` (string, required) — Identifier of the course
- `body` (string, required) — JSON string representing the Announcement object
Salida:
{
"id": "111222333",
"courseId": "123456789",
"text": "Welcome to the course! Please review the syllabus.",
"state": "PUBLISHED",
"updateTime": "2025-01-15T10:00:00.000Z",
"creationTime": "2025-01-15T10:00:00.000Z"
}
list_announcements — Lista los anuncios
Devuelve los anuncios de un curso, opcionalmente filtrados por estado.
Entradas:
- `course_id` (string, required) — Identifier of the course
- `announcement_states` (string, optional) — Filter by state (PUBLISHED, DRAFT, DELETED)
- `order_by` (string, optional) — Sort order (e.g. updateTime desc)
- `page_size` (integer, optional) — Maximum number of results
- `page_token` (string, optional) — Token for the next page
Salida:
{
"announcements": [
{
"id": "111222333",
"courseId": "123456789",
"text": "Welcome to the course!",
"state": "PUBLISHED",
"updateTime": "2025-01-15T10:00:00.000Z"
}
],
"nextPageToken": "token_for_next_page"
}
get_announcement — Obtiene un anuncio
Devuelve un solo anuncio.
Entradas:
- `course_id` (string, required) — Identifier of the course
- `id` (string, required) — Identifier of the announcement
Salida:
{
"id": "111222333",
"courseId": "123456789",
"text": "Welcome to the course! Please review the syllabus.",
"state": "PUBLISHED",
"updateTime": "2025-01-15T10:00:00.000Z",
"creationTime": "2025-01-15T10:00:00.000Z"
}
patch_announcement — Actualiza un anuncio
Actualiza solo los campos especificados en update_mask.
Entradas:
- `course_id` (string, required) — Identifier of the course
- `id` (string, required) — Identifier of the announcement
- `update_mask` (string, required) — Fields to update (e.g. text,state)
- `body` (string, required) — JSON string with updated fields
Salida:
{
"id": "111222333",
"courseId": "123456789",
"text": "Updated announcement text.",
"state": "PUBLISHED",
"updateTime": "2025-01-16T09:00:00.000Z"
}
delete_announcement — Elimina un anuncio
Elimina un anuncio. Solo se pueden eliminar anuncios en borrador; los anuncios publicados deben archivarse primero.
Entradas:
- `course_id` (string, required) — Identifier of the course
- `id` (string, required) — Identifier of the announcement
Salida:
{}
modify_announcement_assignees — Modifica los destinatarios del anuncio
Cambia a qué estudiantes se asigna un anuncio.
Entradas:
- `course_id` (string, required) — Identifier of the course
- `id` (string, required) — Identifier of the announcement
- `body` (string, required) — JSON string with assignee mode and student IDs
Salida:
{
"id": "111222333",
"courseId": "123456789",
"text": "Welcome to the course!",
"state": "PUBLISHED",
"assigneeMode": "INDIVIDUAL_STUDENTS",
"individualStudentsOptions": {
"studentIds": ["555111", "555222"]
},
"updateTime": "2025-01-16T09:00:00.000Z"
}
Trabajos de curso
create_course_work — Crea un elemento de trabajo de curso
Crea una tarea, una pregunta de respuesta corta o una pregunta de opción múltiple en un curso.
Entradas:
- `course_id` (string, required) — Identifier of the course
- `body` (string, required) — JSON string representing the CourseWork object
Salida:
{
"id": "222333444",
"courseId": "123456789",
"title": "Assignment 1: Hello World",
"description": "Write your first Python program.",
"workType": "ASSIGNMENT",
"state": "PUBLISHED",
"maxPoints": 100,
"dueDate": { "year": 2025, "month": 2, "day": 1 },
"dueTime": { "hours": 23, "minutes": 59 },
"updateTime": "2025-01-15T10:00:00.000Z"
}
list_course_work — Lista los trabajos de curso
Devuelve los elementos de trabajo de curso en un curso, opcionalmente filtrados por estado.
Entradas:
- `course_id` (string, required) — Identifier of the course
- `course_work_states` (string, optional) — Filter by state (PUBLISHED, DRAFT, DELETED)
- `order_by` (string, optional) — Sort order (e.g. updateTime desc)
- `page_size` (integer, optional) — Maximum number of results
- `page_token` (string, optional) — Token for the next page
Salida:
{
"courseWork": [
{
"id": "222333444",
"courseId": "123456789",
"title": "Assignment 1: Hello World",
"workType": "ASSIGNMENT",
"state": "PUBLISHED",
"maxPoints": 100,
"updateTime": "2025-01-15T10:00:00.000Z"
}
],
"nextPageToken": "token_for_next_page"
}
get_course_work — Obtiene un elemento de trabajo de curso
Devuelve un solo elemento de trabajo de curso.
Entradas:
- `course_id` (string, required) — Identifier of the course
- `id` (string, required) — Identifier of the coursework item
Salida:
{
"id": "222333444",
"courseId": "123456789",
"title": "Assignment 1: Hello World",
"workType": "ASSIGNMENT",
"state": "PUBLISHED",
"maxPoints": 100,
"dueDate": { "year": 2025, "month": 2, "day": 1 },
"updateTime": "2025-01-15T10:00:00.000Z"
}
patch_course_work — Actualiza un elemento de trabajo de curso
Actualiza solo los campos especificados en update_mask.
Entradas:
- `course_id` (string, required) — Identifier of the course
- `id` (string, required) — Identifier of the coursework item
- `update_mask` (string, required) — Fields to update (e.g. title,maxPoints)
- `body` (string, required) — JSON string with updated fields
Salida:
{
"id": "222333444",
"courseId": "123456789",
"title": "Assignment 1: Hello World (Updated)",
"workType": "ASSIGNMENT",
"state": "PUBLISHED",
"maxPoints": 50,
"updateTime": "2025-01-16T09:00:00.000Z"
}
delete_course_work — Elimina un elemento de trabajo de curso
Elimina un elemento de trabajo de curso.
Entradas:
- `course_id` (string, required) — Identifier of the course
- `id` (string, required) — Identifier of the coursework item
Salida:
{}
modify_course_work_assignees — Modifica los destinatarios del trabajo de curso
Cambia a qué estudiantes se asigna un elemento de trabajo de curso.
Entradas:
- `course_id` (string, required) — Identifier of the course
- `id` (string, required) — Identifier of the coursework item
- `body` (string, required) — JSON string with assignee mode and student IDs
Salida:
{
"id": "222333444",
"courseId": "123456789",
"title": "Assignment 1: Hello World",
"workType": "ASSIGNMENT",
"assigneeMode": "INDIVIDUAL_STUDENTS",
"individualStudentsOptions": {
"studentIds": ["555111", "555222"]
},
"updateTime": "2025-01-16T09:00:00.000Z"
}
Entregas de estudiantes
list_student_submissions — Lista las entregas de estudiantes
Devuelve las entregas de un elemento de trabajo de curso, opcionalmente filtradas por usuario o estado.
Entradas:
- `course_id` (string, required) — Identifier of the course
- `course_work_id` (string, required) — Identifier of the coursework item (use `-` for all)
- `user_id` (string, optional) — Restrict to submissions by this student
- `states` (string, optional) — Filter by state (TURNED_IN, RETURNED, CREATED)
- `page_size` (integer, optional) — Maximum number of results
- `page_token` (string, optional) — Token for the next page
Salida:
{
"studentSubmissions": [
{
"id": "333444555",
"courseId": "123456789",
"courseWorkId": "222333444",
"userId": "555111",
"state": "TURNED_IN",
"assignedGrade": 95,
"late": false,
"updateTime": "2025-01-31T22:00:00.000Z"
}
],
"nextPageToken": "token_for_next_page"
}
get_student_submission — Obtiene una entrega de estudiante
Devuelve una sola entrega de estudiante.
Entradas:
- `course_id` (string, required) — Identifier of the course
- `course_work_id` (string, required) — Identifier of the coursework item
- `id` (string, required) — Identifier of the submission
Salida:
{
"id": "333444555",
"courseId": "123456789",
"courseWorkId": "222333444",
"userId": "555111",
"state": "TURNED_IN",
"assignedGrade": 95,
"late": false,
"updateTime": "2025-01-31T22:00:00.000Z"
}
patch_student_submission — Actualiza una entrega de estudiante
Actualiza campos de una entrega, como la calificación asignada. Solo ciertos campos pueden ser actualizados por estudiantes o profesores.
Entradas:
- `course_id` (string, required) — Identifier of the course
- `course_work_id` (string, required) — Identifier of the coursework item
- `id` (string, required) — Identifier of the submission
- `update_mask` (string, required) — Fields to update (e.g. assignedGrade,draftGrade)
- `body` (string, required) — JSON string with updated fields
Salida:
{
"id": "333444555",
"courseId": "123456789",
"courseWorkId": "222333444",
"userId": "555111",
"state": "RETURNED",
"assignedGrade": 95,
"draftGrade": 95,
"updateTime": "2025-02-02T09:00:00.000Z"
}
return_student_submission — Devuelve una entrega al estudiante
Devuelve una entrega realizada al estudiante. El estado de la entrega cambia a RETURNED.
Entradas:
- `course_id` (string, required) — Identifier of the course
- `course_work_id` (string, required) — Identifier of the coursework item
- `id` (string, required) — Identifier of the submission
Salida:
{}
reclaim_student_submission — Recupera una tarea entregada
Permite a un estudiante recuperar una entrega realizada para editarla nuevamente. El estado de la entrega vuelve a NEW.
Entradas:
- `course_id` (string, required) — Identifier of the course
- `course_work_id` (string, required) — Identifier of the coursework item
- `id` (string, required) — Identifier of the submission
Salida:
{}
Materiales de trabajo de curso
create_course_work_material — Crea un material de curso
Crea un recurso de material (documento, video, enlace, etc.) en un curso.
Entradas:
- `course_id` (string, required) — Identifier of the course
- `body` (string, required) — JSON string representing the CourseWorkMaterial object
Salida:
{
"id": "444555666",
"courseId": "123456789",
"title": "Week 1 Reading: Python Basics",
"description": "Required reading for Week 1.",
"state": "PUBLISHED",
"updateTime": "2025-01-15T10:00:00.000Z",
"creationTime": "2025-01-15T10:00:00.000Z"
}
list_course_work_materials — Lista los materiales de curso
Devuelve los materiales de un curso, opcionalmente filtrados por elemento de Drive o URL.
Entradas:
- `course_id` (string, required) — Identifier of the course
- `material_drive_id` (string, optional) — Filter by Google Drive item ID
- `material_link` (string, optional) — Filter by material URL
- `page_size` (integer, optional) — Maximum number of results
- `page_token` (string, optional) — Token for the next page
Salida:
{
"courseWorkMaterial": [
{
"id": "444555666",
"courseId": "123456789",
"title": "Week 1 Reading: Python Basics",
"state": "PUBLISHED",
"updateTime": "2025-01-15T10:00:00.000Z"
}
],
"nextPageToken": "token_for_next_page"
}
get_course_work_material — Obtiene un material de curso
Devuelve un solo material de curso.
Entradas:
- `course_id` (string, required) — Identifier of the course
- `id` (string, required) — Identifier of the material
Salida:
{
"id": "444555666",
"courseId": "123456789",
"title": "Week 1 Reading: Python Basics",
"description": "Required reading for Week 1.",
"state": "PUBLISHED",
"updateTime": "2025-01-15T10:00:00.000Z"
}
patch_course_work_material — Actualiza un material de curso
Actualiza solo los campos especificados en update_mask.
Entradas:
- `course_id` (string, required) — Identifier of the course
- `id` (string, required) — Identifier of the material
- `update_mask` (string, required) — Fields to update (e.g. title,description)
- `body` (string, required) — JSON string with updated fields
Salida:
{
"id": "444555666",
"courseId": "123456789",
"title": "Week 1 Reading: Python Basics (Updated)",
"state": "PUBLISHED",
"updateTime": "2025-01-16T09:00:00.000Z"
}
delete_course_work_material — Elimina un material de curso
Elimina un material de curso.
Entradas:
- `course_id` (string, required) — Identifier of the course
- `id` (string, required) — Identifier of the material to delete
Salida:
{}
Estudiantes
create_student — Inscribe a un estudiante
Agrega a un usuario como estudiante de un curso usando un código de inscripción.
Entradas:
- `course_id` (string, required) — Identifier of the course
- `enrollment_code` (string, required) — Enrollment code of the course
- `body` (string, required) — JSON string representing the Student object
Salida:
{
"courseId": "123456789",
"userId": "555111",
"profile": {
"id": "555111",
"name": { "fullName": "Jane Smith" },
"emailAddress": "jane.smith@school.edu"
}
}
list_students — Lista los estudiantes
Devuelve todos los estudiantes inscritos en un curso.
Entradas:
- `course_id` (string, required) — Identifier of the course
- `page_size` (integer, optional) — Maximum number of results
- `page_token` (string, optional) — Token for the next page
Salida:
{
"students": [
{
"courseId": "123456789",
"userId": "555111",
"profile": {
"id": "555111",
"name": { "fullName": "Jane Smith" },
"emailAddress": "jane.smith@school.edu"
}
}
],
"nextPageToken": "token_for_next_page"
}
get_student — Obtiene un estudiante
Devuelve un estudiante específico en un curso.
Entradas:
- `course_id` (string, required) — Identifier of the course
- `user_id` (string, required) — Identifier of the student
Salida:
{
"courseId": "123456789",
"userId": "555111",
"profile": {
"id": "555111",
"name": { "givenName": "Jane", "familyName": "Smith", "fullName": "Jane Smith" },
"emailAddress": "jane.smith@school.edu"
}
}
delete_student — Elimina a un estudiante
Elimina a un estudiante de un curso.
Entradas:
- `course_id` (string, required) — Identifier of the course
- `user_id` (string, required) — Identifier of the student to remove
Salida:
{}
Profesores
create_teacher — Agrega a un profesor
Agrega a un usuario como co-profesor de un curso.
Entradas:
- `course_id` (string, required) — Identifier of the course
- `body` (string, required) — JSON string representing the Teacher object
Salida:
{
"courseId": "123456789",
"userId": "666111",
"profile": {
"id": "666111",
"name": { "fullName": "Prof. Jones" },
"emailAddress": "jones@school.edu"
}
}
list_teachers — Lista los profesores
Devuelve todos los profesores de un curso.
Entradas:
- `course_id` (string, required) — Identifier of the course
- `page_size` (integer, optional) — Maximum number of results
- `page_token` (string, optional) — Token for the next page
Salida:
{
"teachers": [
{
"courseId": "123456789",
"userId": "666111",
"profile": {
"id": "666111",
"name": { "fullName": "Prof. Jones" },
"emailAddress": "jones@school.edu"
}
}
],
"nextPageToken": "token_for_next_page"
}
get_teacher — Obtiene un profesor
Devuelve un profesor específico de un curso.
Entradas:
- `course_id` (string, required) — Identifier of the course
- `user_id` (string, required) — Identifier of the teacher
Salida:
{
"courseId": "123456789",
"userId": "666111",
"profile": {
"id": "666111",
"name": { "givenName": "Robert", "familyName": "Jones", "fullName": "Prof. Jones" },
"emailAddress": "jones@school.edu"
}
}
delete_teacher — Elimina a un profesor
Elimina a un profesor de un curso.
Entradas:
- `course_id` (string, required) — Identifier of the course
- `user_id` (string, required) — Identifier of the teacher to remove
Salida:
{}
Temas
create_topic — Crea un tema
Crea un tema en un curso para organizar trabajos de curso y materiales.
Entradas:
- `course_id` (string, required) — Identifier of the course
- `body` (string, required) — JSON string representing the Topic object
Salida:
{
"courseId": "123456789",
"topicId": "777888999",
"name": "Unit 1: Variables and Data Types",
"updateTime": "2025-01-15T10:00:00.000Z"
}
list_topics — Lista los temas
Devuelve todos los temas de un curso.
Entradas:
- `course_id` (string, required) — Identifier of the course
- `page_size` (integer, optional) — Maximum number of results
- `page_token` (string, optional) — Token for the next page
Salida:
{
"topic": [
{
"courseId": "123456789",
"topicId": "777888999",
"name": "Unit 1: Variables and Data Types",
"updateTime": "2025-01-15T10:00:00.000Z"
}
],
"nextPageToken": "token_for_next_page"
}
get_topic — Obtener un tema
Devuelve un solo tema.
Entradas:
- `course_id` (string, required) — Identifier of the course
- `id` (string, required) — Identifier of the topic
Salida:
{
"courseId": "123456789",
"topicId": "777888999",
"name": "Unit 1: Variables and Data Types",
"updateTime": "2025-01-15T10:00:00.000Z"
}
patch_topic — Actualizar un tema
Actualiza solo los campos especificados en update_mask.
Entradas:
- `course_id` (string, required) — Identifier of the course
- `id` (string, required) — Identifier of the topic
- `update_mask` (string, required) — Fields to update (e.g. name)
- `body` (string, required) — JSON string with updated fields
Salida:
{
"courseId": "123456789",
"topicId": "777888999",
"name": "Unit 1: Introduction to Python",
"updateTime": "2025-01-16T09:00:00.000Z"
}
delete_topic — Eliminar un tema
Elimina un tema de un curso.
Entradas:
- `course_id` (string, required) — Identifier of the course
- `id` (string, required) — Identifier of the topic to delete
Salida:
{}
Invitaciones
create_invitation — Invitar a un usuario a un curso
Crea una invitación y envía un correo electrónico pidiendo al usuario que se una a un curso como estudiante o profesor.
Entradas:
- `body` (string, required) — JSON string representing the Invitation object (userId, courseId, role)
Salida:
{
"id": "888999111",
"userId": "555222",
"courseId": "123456789",
"role": "STUDENT"
}
list_invitations — Listar invitaciones
Devuelve invitaciones pendientes, opcionalmente filtradas por usuario o curso.
Entradas:
- `user_id` (string, optional) — Restrict to invitations for this user
- `course_id` (string, optional) — Restrict to invitations for this course
- `page_size` (integer, optional) — Maximum number of results
- `page_token` (string, optional) — Token for the next page
Salida:
{
"invitations": [
{
"id": "888999111",
"userId": "555222",
"courseId": "123456789",
"role": "STUDENT"
}
],
"nextPageToken": "token_for_next_page"
}
get_invitation — Obtener una invitación
Devuelve una invitación específica.
Entradas:
- `id` (string, required) — Identifier of the invitation
Salida:
{
"id": "888999111",
"userId": "555222",
"courseId": "123456789",
"role": "STUDENT"
}
delete_invitation — Eliminar una invitación
Elimina una invitación pendiente.
Entradas:
- `id` (string, required) — Identifier of the invitation to delete
Salida:
{}
accept_invitation — Aceptar una invitación
Acepta una invitación, agregando al usuario invitado al curso como estudiante o profesor y eliminando la invitación.
Entradas:
- `id` (string, required) — Identifier of the invitation to accept
Salida:
{}
Registros
create_registration — Crear un registro de notificación push
Registra un feed de Cloud Pub/Sub para recibir notificaciones push de Classroom.
Entradas:
- `body` (string, required) — JSON string representing the Registration object (feed, cloudPubsubTopic)
Salida:
{
"registrationId": "999111222",
"feed": {
"feedType": "COURSE_ROSTER_CHANGES",
"courseRosterChangesInfo": { "courseId": "123456789" }
},
"cloudPubsubTopic": {
"topicName": "projects/my-project/topics/classroom-notifications"
},
"expiryTime": "2025-02-15T10:00:00.000Z"
}
delete_registration — Eliminar un registro
Elimina un registro de notificación push.
Entradas:
- `registration_id` (string, required) — Identifier of the registration to delete
Salida:
{}
Perfiles de usuario
get_user_profile — Obtener un perfil de usuario
Devuelve el perfil de un usuario en el contexto de los cursos del usuario autenticado.
Entradas:
- `user_id` (string, required) — Identifier of the user (or `me` for the authenticated user)
Salida:
{
"id": "987654321",
"name": {
"givenName": "John",
"familyName": "Doe",
"fullName": "John Doe"
},
"emailAddress": "john.doe@school.edu",
"photoUrl": "https://lh3.googleusercontent.com/a/photo"
}
Tutores
create_guardian_invitation — Invitar a un tutor
Envía una invitación por correo electrónico a un tutor pidiéndole que confirme su relación con un estudiante.
Entradas:
- `student_id` (string, required) — Identifier of the student
- `body` (string, required) — JSON string with the guardian's email address
Salida:
{
"studentId": "555111",
"invitationId": "aaa111bbb",
"invitedEmailAddress": "parent@email.com",
"state": "PENDING",
"creationTime": "2025-01-15T10:00:00.000Z"
}
get_guardian_invitation — Obtener una invitación de tutor
Devuelve una invitación de tutor específica.
Entradas:
- `student_id` (string, required) — Identifier of the student
- `invitation_id` (string, required) — Identifier of the guardian invitation
Salida:
{
"studentId": "555111",
"invitationId": "aaa111bbb",
"invitedEmailAddress": "parent@email.com",
"state": "PENDING",
"creationTime": "2025-01-15T10:00:00.000Z"
}
patch_guardian_invitation — Actualizar una invitación de tutor
Actualiza una invitación de tutor (por ejemplo, cancelarla estableciendo el estado a COMPLETE).
Entradas:
- `student_id` (string, required) — Identifier of the student
- `invitation_id` (string, required) — Identifier of the guardian invitation
- `update_mask` (string, required) — Fields to update (e.g. state)
- `body` (string, required) — JSON string with updated fields
Salida:
{
"studentId": "555111",
"invitationId": "aaa111bbb",
"invitedEmailAddress": "parent@email.com",
"state": "COMPLETE",
"creationTime": "2025-01-15T10:00:00.000Z"
}
list_guardians — Listar tutores
Devuelve todos los tutores confirmados de un estudiante.
Entradas:
- `student_id` (string, required) — Identifier of the student
- `invited_email_address` (string, optional) — Filter by guardian email address
- `page_size` (integer, optional) — Maximum number of results
- `page_token` (string, optional) — Token for the next page
Salida:
{
"guardians": [
{
"studentId": "555111",
"guardianId": "bbb222ccc",
"invitedEmailAddress": "parent@email.com",
"guardianProfile": {
"id": "bbb222ccc",
"name": { "fullName": "Jane Parent" },
"emailAddress": "parent@email.com"
}
}
],
"nextPageToken": "token_for_next_page"
}
get_guardian — Obtener un tutor
Devuelve un tutor confirmado específico de un estudiante.
Entradas:
- `student_id` (string, required) — Identifier of the student
- `guardian_id` (string, required) — Identifier of the guardian
Salida:
{
"studentId": "555111",
"guardianId": "bbb222ccc",
"invitedEmailAddress": "parent@email.com",
"guardianProfile": {
"id": "bbb222ccc",
"name": { "givenName": "Jane", "familyName": "Parent", "fullName": "Jane Parent" },
"emailAddress": "parent@email.com"
}
}
delete_guardian — Eliminar un tutor
Elimina un tutor de un estudiante, revocando su acceso a los correos de progreso del estudiante.
Entradas:
- `student_id` (string, required) — Identifier of the student
- `guardian_id` (string, required) — Identifier of the guardian to remove
Salida:
{}
Referencia de parámetros de la API
Parámetros comunes
page_size— Número máximo de elementos a devolver en una sola respuesta. El servidor puede devolver menos.page_token— Token del camponextPageTokende una respuesta anterior. Pásalo para recuperar la siguiente página de resultados.update_mask— Lista separada por comas de rutas de campos a actualizar en una llamada PATCH. Solo se cambian los campos listados; los campos omitidos se dejan como están.
Identificadores de recursos
ID del curso:
Numeric string assigned by Classroom, or an alias prefixed with "d:"
Example: 123456789 or d:intro-python-2025
ID del usuario:
Numeric Google user ID, email address, or the literal "me" for the authenticated user
Example: 987654321 or student@school.edu or me
ID de trabajo del curso:
Numeric string assigned by Classroom.
Use "-" as a wildcard to list submissions across all coursework in list_student_submissions.
Example: 222333444
Solución de problemas
Encabezados faltantes o no válidos
- Causa: token OAuth no proporcionado en los encabezados de la solicitud o formato incorrecto
- Solución:
- Verifica que los encabezados
Authorization: Bearer YOUR_TOKENyX-Mewcp-Credential-Id: CREDENTIAL-IDestén presentes - Comprueba que tu credencial de Google esté activa en tu cuenta de MewCP
- Verifica que los encabezados
Créditos insuficientes
- Causa: las llamadas a la API han superado tus límites de solicitudes
- Solución:
- Revisa el uso de créditos en tu panel de Curious Layer
- Mejora a un plan de pago o agrega créditos para límites más altos
- Contacta al soporte para ajustes de crédito
Credencial no conectada
- Causa: no hay una credencial de Google Classroom vinculada a tu cuenta
- Solución:
- Ve a Credenciales en tu panel de MewCP
- Conecta tu cuenta de Google mediante OAuth
- Reintenta la solicitud con el encabezado
X-Mewcp-Credential-Idcorrecto
Carga de solicitud malformada
- Causa: la carga JSON pasada a un parámetro
bodyno es válida o le faltan campos obligatorios - Solución:
- Valida la sintaxis JSON antes de enviar
- Asegúrate de que todos los campos obligatorios para el tipo de recurso estén incluidos
- Comprueba que los tipos de parámetros coincidan con el esquema de la API de Google Classroom
Servidor no encontrado
- Causa: nombre de servidor incorrecto en el endpoint de la API
- Solución:
- Verifica el formato del endpoint:
{server-name}/mcp/{tool-name} - Usa el nombre de servidor correcto de la documentación
- Revisa los servidores disponibles en tu cuenta de Curious Layer
- Verifica el formato del endpoint:
Error de la API de Google Classroom
- Causa: la API de Google Classroom devolvió un error (por ejemplo, 403 Prohibido, 404 No encontrado)
- Solución:
- Revisa el panel de estado de Google Workspace para ver interrupciones
- Verifica que tu cuenta de Google tenga el rol requerido (profesor/administrador) para la operación
- Asegúrate de que el curso o recurso solicitado exista y tengas acceso a él
Recursos
- Documentación de la API de Google Classroom — Guía oficial de inicio
- Referencia de la API de Google Classroom — Referencia completa de endpoints
- Documentación de FastMCP — Especificación de FastMCP
- Credenciales de FastMCP — Paquete de manejo de credenciales