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 campo nextPageToken de 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:
    1. Verifica que los encabezados Authorization: Bearer YOUR_TOKEN y X-Mewcp-Credential-Id: CREDENTIAL-ID estén presentes
    2. Comprueba que tu credencial de Google esté activa en tu cuenta de MewCP
Créditos insuficientes
  • Causa: las llamadas a la API han superado tus límites de solicitudes
  • Solución:
    1. Revisa el uso de créditos en tu panel de Curious Layer
    2. Mejora a un plan de pago o agrega créditos para límites más altos
    3. 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:
    1. Ve a Credenciales en tu panel de MewCP
    2. Conecta tu cuenta de Google mediante OAuth
    3. Reintenta la solicitud con el encabezado X-Mewcp-Credential-Id correcto
Carga de solicitud malformada
  • Causa: la carga JSON pasada a un parámetro body no es válida o le faltan campos obligatorios
  • Solución:
    1. Valida la sintaxis JSON antes de enviar
    2. Asegúrate de que todos los campos obligatorios para el tipo de recurso estén incluidos
    3. 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:
    1. Verifica el formato del endpoint: {server-name}/mcp/{tool-name}
    2. Usa el nombre de servidor correcto de la documentación
    3. Revisa los servidores disponibles en tu cuenta de Curious Layer
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:
    1. Revisa el panel de estado de Google Workspace para ver interrupciones
    2. Verifica que tu cuenta de Google tenga el rol requerido (profesor/administrador) para la operación
    3. Asegúrate de que el curso o recurso solicitado exista y tengas acceso a él

Recursos