MewCP Google Classroom MCP

Servidor MCP do Google Classroom hospedado, sem estado e multilocatário que permite que assistentes de IA gerenciem cursos, tarefas, trabalhos, alunos e atividades da sala de aula por meio do Google Classroom.

Documentação

Gerencie cursos, tarefas e alunos do Google Classroom com Agentes.

Um servidor Model Context Protocol (MCP) que expõe a API do Google Classroom para gerenciar cursos, trabalhos, comunicados, listas de alunos, entregas e responsáveis.

Visão Geral

O Servidor MCP do Google Classroom oferece gerenciamento completo do ciclo de vida do seu ambiente Google Classroom:

  • Crie e gerencie cursos, tópicos, comunicados e trabalhos
  • Gerencie listas de alunos e professores, convites e vínculos com responsáveis
  • Leia e avalie entregas de alunos

Perfeito para:

  • Educadores que automatizam a criação de cursos e a distribuição de conteúdo
  • Administradores que gerenciam listas de alunos e comunicações com responsáveis em escala
  • Desenvolvedores que criam integrações de gestão de aprendizagem sobre o Google Classroom

Ferramentas

Cursos

list_courses — Lista cursos que o usuário pode visualizar

Retorna uma lista de cursos que o usuário solicitante tem permissão para visualizar, opcionalmente filtrada por aluno, professor ou estado do 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

Saída:

{
  "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 — Obtém um único curso

Retorna um curso pelo seu identificador.

Entradas:

- `id` (string, required) — Identifier of the course

Saída:

{
  "id": "123456789",
  "name": "Introduction to Python",
  "section": "Period 1",
  "ownerId": "987654321",
  "courseState": "ACTIVE",
  "enrollmentCode": "abc123",
  "updateTime": "2025-01-15T10:00:00.000Z"
}
create_course — Cria um curso

Cria um novo curso. O usuário solicitante torna-se o proprietário.

Entradas:

- `body` (string, required) — JSON string representing the Course object to create

Saída:

{
  "id": "123456789",
  "name": "Introduction to Python",
  "section": "Period 1",
  "ownerId": "987654321",
  "courseState": "PROVISIONED",
  "enrollmentCode": "abc123",
  "updateTime": "2025-01-15T10:00:00.000Z"
}
update_course — Substitui um curso

Substitui todos os campos de um curso pelos valores fornecidos.

Entradas:

- `id`   (string, required) — Identifier of the course to update
- `body` (string, required) — JSON string representing the updated Course object

Saída:

{
  "id": "123456789",
  "name": "Advanced Python",
  "section": "Period 2",
  "ownerId": "987654321",
  "courseState": "ACTIVE",
  "updateTime": "2025-01-16T09:00:00.000Z"
}
patch_course — Atualiza parcialmente um curso

Atualiza apenas os campos especificados em 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

Saída:

{
  "id": "123456789",
  "name": "Advanced Python",
  "section": "Period 1",
  "ownerId": "987654321",
  "courseState": "ACTIVE",
  "updateTime": "2025-01-16T09:00:00.000Z"
}
delete_course — Exclui um curso

Exclui permanentemente um curso. Somente proprietários do curso podem excluí-lo.

Entradas:

- `id` (string, required) — Identifier of the course to delete

Saída:

{}

Apelidos de Curso

create_course_alias — Cria um apelido de curso

Cria um apelido para um curso para que ele possa ser referenciado por um identificador alternativo.

Entradas:

- `course_id` (string, required) — Identifier of the course
- `body`      (string, required) — JSON string representing the CourseAlias object

Saída:

{
  "alias": "d:intro-python-2025"
}
list_course_aliases — Lista apelidos de curso

Retorna todos os apelidos de um 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

Saída:

{
  "aliases": [
    { "alias": "d:intro-python-2025" },
    { "alias": "d:py101" }
  ]
}
delete_course_alias — Exclui um apelido de curso

Remove um apelido de um curso.

Entradas:

- `course_id` (string, required) — Identifier of the course
- `alias`     (string, required) — The alias to delete

Saída:

{}

Comunicados

create_announcement — Cria um comunicado

Publica um novo comunicado em um curso.

Entradas:

- `course_id` (string, required) — Identifier of the course
- `body`      (string, required) — JSON string representing the Announcement object

Saída:

{
  "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 comunicados

Retorna comunicados em um 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

Saída:

{
  "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 — Obtém um comunicado

Retorna um único comunicado.

Entradas:

- `course_id` (string, required) — Identifier of the course
- `id`        (string, required) — Identifier of the announcement

Saída:

{
  "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 — Atualiza um comunicado

Atualiza apenas os campos especificados em 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

Saída:

{
  "id": "111222333",
  "courseId": "123456789",
  "text": "Updated announcement text.",
  "state": "PUBLISHED",
  "updateTime": "2025-01-16T09:00:00.000Z"
}
delete_announcement — Exclui um comunicado

Exclui um comunicado. Somente comunicados em rascunho podem ser excluídos; comunicados publicados devem ser arquivados primeiro.

Entradas:

- `course_id` (string, required) — Identifier of the course
- `id`        (string, required) — Identifier of the announcement

Saída:

{}
modify_announcement_assignees — Modifica destinatários do comunicado

Altera para quais alunos um comunicado é direcionado.

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

Saída:

{
  "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"
}

Trabalhos do Curso

create_course_work — Cria um item de trabalho

Cria uma tarefa, pergunta de resposta curta ou pergunta de múltipla escolha em um curso.

Entradas:

- `course_id` (string, required) — Identifier of the course
- `body`      (string, required) — JSON string representing the CourseWork object

Saída:

{
  "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 trabalhos

Retorna itens de trabalho em um 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

Saída:

{
  "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 — Obtém um item de trabalho

Retorna um único item de trabalho.

Entradas:

- `course_id` (string, required) — Identifier of the course
- `id`        (string, required) — Identifier of the coursework item

Saída:

{
  "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 — Atualiza um item de trabalho

Atualiza apenas os campos especificados em 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

Saída:

{
  "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 — Exclui um item de trabalho

Exclui um item de trabalho.

Entradas:

- `course_id` (string, required) — Identifier of the course
- `id`        (string, required) — Identifier of the coursework item

Saída:

{}
modify_course_work_assignees — Modifica destinatários do trabalho

Altera para quais alunos um item de trabalho é direcionado.

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

Saída:

{
  "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 Alunos

list_student_submissions — Lista entregas de alunos

Retorna entregas para um item de trabalho, opcionalmente filtradas por usuário ou 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

Saída:

{
  "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 — Obtém uma entrega de aluno

Retorna uma única entrega de aluno.

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

Saída:

{
  "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 — Atualiza uma entrega de aluno

Atualiza campos em uma entrega, como a nota atribuída. Somente determinados campos podem ser atualizados por alunos ou professores.

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

Saída:

{
  "id": "333444555",
  "courseId": "123456789",
  "courseWorkId": "222333444",
  "userId": "555111",
  "state": "RETURNED",
  "assignedGrade": 95,
  "draftGrade": 95,
  "updateTime": "2025-02-02T09:00:00.000Z"
}
return_student_submission — Devolve uma entrega ao aluno

Devolve uma entrega enviada ao aluno. O estado da entrega muda para 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

Saída:

{}
reclaim_student_submission — Reivindica uma tarefa enviada

Permite que um aluno reivindique uma entrega enviada para edição adicional. O estado da entrega volta para 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

Saída:

{}

Materiais de Trabalho do Curso

create_course_work_material — Cria um material de curso

Cria um recurso de material (documento, vídeo, link, etc.) em um curso.

Entradas:

- `course_id` (string, required) — Identifier of the course
- `body`      (string, required) — JSON string representing the CourseWorkMaterial object

Saída:

{
  "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 materiais de curso

Retorna materiais em um curso, opcionalmente filtrados por item do Drive ou 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

Saída:

{
  "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 — Obtém um material de curso

Retorna um único material de curso.

Entradas:

- `course_id` (string, required) — Identifier of the course
- `id`        (string, required) — Identifier of the material

Saída:

{
  "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 — Atualiza um material de curso

Atualiza apenas os campos especificados em 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

Saída:

{
  "id": "444555666",
  "courseId": "123456789",
  "title": "Week 1 Reading: Python Basics (Updated)",
  "state": "PUBLISHED",
  "updateTime": "2025-01-16T09:00:00.000Z"
}
delete_course_work_material — Exclui um material de curso

Exclui um material de curso.

Entradas:

- `course_id` (string, required) — Identifier of the course
- `id`        (string, required) — Identifier of the material to delete

Saída:

{}

Alunos

create_student — Matricula um aluno

Adiciona um usuário como aluno de um curso usando um código de matrícula.

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

Saída:

{
  "courseId": "123456789",
  "userId": "555111",
  "profile": {
    "id": "555111",
    "name": { "fullName": "Jane Smith" },
    "emailAddress": "jane.smith@school.edu"
  }
}
list_students — Lista alunos

Retorna todos os alunos matriculados em um 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

Saída:

{
  "students": [
    {
      "courseId": "123456789",
      "userId": "555111",
      "profile": {
        "id": "555111",
        "name": { "fullName": "Jane Smith" },
        "emailAddress": "jane.smith@school.edu"
      }
    }
  ],
  "nextPageToken": "token_for_next_page"
}
get_student — Obtém um aluno

Retorna um aluno específico em um curso.

Entradas:

- `course_id` (string, required) — Identifier of the course
- `user_id`   (string, required) — Identifier of the student

Saída:

{
  "courseId": "123456789",
  "userId": "555111",
  "profile": {
    "id": "555111",
    "name": { "givenName": "Jane", "familyName": "Smith", "fullName": "Jane Smith" },
    "emailAddress": "jane.smith@school.edu"
  }
}
delete_student — Remove um aluno

Remove um aluno de um curso.

Entradas:

- `course_id` (string, required) — Identifier of the course
- `user_id`   (string, required) — Identifier of the student to remove

Saída:

{}

Professores

create_teacher — Adiciona um professor

Adiciona um usuário como coprofessor de um curso.

Entradas:

- `course_id` (string, required) — Identifier of the course
- `body`      (string, required) — JSON string representing the Teacher object

Saída:

{
  "courseId": "123456789",
  "userId": "666111",
  "profile": {
    "id": "666111",
    "name": { "fullName": "Prof. Jones" },
    "emailAddress": "jones@school.edu"
  }
}
list_teachers — Lista professores

Retorna todos os professores de um 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

Saída:

{
  "teachers": [
    {
      "courseId": "123456789",
      "userId": "666111",
      "profile": {
        "id": "666111",
        "name": { "fullName": "Prof. Jones" },
        "emailAddress": "jones@school.edu"
      }
    }
  ],
  "nextPageToken": "token_for_next_page"
}
get_teacher — Obtém um professor

Retorna um professor específico de um curso.

Entradas:

- `course_id` (string, required) — Identifier of the course
- `user_id`   (string, required) — Identifier of the teacher

Saída:

{
  "courseId": "123456789",
  "userId": "666111",
  "profile": {
    "id": "666111",
    "name": { "givenName": "Robert", "familyName": "Jones", "fullName": "Prof. Jones" },
    "emailAddress": "jones@school.edu"
  }
}
delete_teacher — Remove um professor

Remove um professor de um curso.

Entradas:

- `course_id` (string, required) — Identifier of the course
- `user_id`   (string, required) — Identifier of the teacher to remove

Saída:

{}

Tópicos

create_topic — Cria um tópico

Cria um tópico em um curso para organizar trabalhos e materiais.

Entradas:

- `course_id` (string, required) — Identifier of the course
- `body`      (string, required) — JSON string representing the Topic object

Saída:

{
  "courseId": "123456789",
  "topicId": "777888999",
  "name": "Unit 1: Variables and Data Types",
  "updateTime": "2025-01-15T10:00:00.000Z"
}
list_topics — Lista tópicos

Retorna todos os tópicos em um 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

Saída:

{
  "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 — Obter um tópico

Retorna um único tópico.

Entradas:

- `course_id` (string, required) — Identifier of the course
- `id`        (string, required) — Identifier of the topic

Saída:

{
  "courseId": "123456789",
  "topicId": "777888999",
  "name": "Unit 1: Variables and Data Types",
  "updateTime": "2025-01-15T10:00:00.000Z"
}
patch_topic — Atualizar um tópico

Atualiza apenas os campos especificados em 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

Saída:

{
  "courseId": "123456789",
  "topicId": "777888999",
  "name": "Unit 1: Introduction to Python",
  "updateTime": "2025-01-16T09:00:00.000Z"
}
delete_topic — Excluir um tópico

Exclui um tópico de um curso.

Entradas:

- `course_id` (string, required) — Identifier of the course
- `id`        (string, required) — Identifier of the topic to delete

Saída:

{}

Convites

create_invitation — Convidar um usuário para um curso

Cria um convite e envia um e-mail pedindo que o usuário entre em um curso como aluno ou professor.

Entradas:

- `body` (string, required) — JSON string representing the Invitation object (userId, courseId, role)

Saída:

{
  "id": "888999111",
  "userId": "555222",
  "courseId": "123456789",
  "role": "STUDENT"
}
list_invitations — Listar convites

Retorna convites pendentes, opcionalmente filtrados por usuário ou 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

Saída:

{
  "invitations": [
    {
      "id": "888999111",
      "userId": "555222",
      "courseId": "123456789",
      "role": "STUDENT"
    }
  ],
  "nextPageToken": "token_for_next_page"
}
get_invitation — Obter um convite

Retorna um convite específico.

Entradas:

- `id` (string, required) — Identifier of the invitation

Saída:

{
  "id": "888999111",
  "userId": "555222",
  "courseId": "123456789",
  "role": "STUDENT"
}
delete_invitation — Excluir um convite

Exclui um convite pendente.

Entradas:

- `id` (string, required) — Identifier of the invitation to delete

Saída:

{}
accept_invitation — Aceitar um convite

Aceita um convite, adicionando o usuário convidado ao curso como aluno ou professor e removendo o convite.

Entradas:

- `id` (string, required) — Identifier of the invitation to accept

Saída:

{}

Registros

create_registration — Criar um registro de notificação push

Registra um feed Cloud Pub/Sub para receber notificações push do Classroom.

Entradas:

- `body` (string, required) — JSON string representing the Registration object (feed, cloudPubsubTopic)

Saída:

{
  "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 — Excluir um registro

Exclui um registro de notificação push.

Entradas:

- `registration_id` (string, required) — Identifier of the registration to delete

Saída:

{}

Perfis de Usuário

get_user_profile — Obter um perfil de usuário

Retorna o perfil de um usuário no contexto dos cursos do usuário autenticado.

Entradas:

- `user_id` (string, required) — Identifier of the user (or `me` for the authenticated user)

Saída:

{
  "id": "987654321",
  "name": {
    "givenName": "John",
    "familyName": "Doe",
    "fullName": "John Doe"
  },
  "emailAddress": "john.doe@school.edu",
  "photoUrl": "https://lh3.googleusercontent.com/a/photo"
}

Responsáveis

create_guardian_invitation — Convidar um responsável

Envia um convite por e-mail a um responsável pedindo que ele confirme sua relação com um aluno.

Entradas:

- `student_id` (string, required) — Identifier of the student
- `body`       (string, required) — JSON string with the guardian's email address

Saída:

{
  "studentId": "555111",
  "invitationId": "aaa111bbb",
  "invitedEmailAddress": "parent@email.com",
  "state": "PENDING",
  "creationTime": "2025-01-15T10:00:00.000Z"
}
get_guardian_invitation — Obter um convite de responsável

Retorna um convite de responsável específico.

Entradas:

- `student_id`     (string, required) — Identifier of the student
- `invitation_id`  (string, required) — Identifier of the guardian invitation

Saída:

{
  "studentId": "555111",
  "invitationId": "aaa111bbb",
  "invitedEmailAddress": "parent@email.com",
  "state": "PENDING",
  "creationTime": "2025-01-15T10:00:00.000Z"
}
patch_guardian_invitation — Atualizar um convite de responsável

Atualiza um convite de responsável (por exemplo, cancelá-lo definindo o estado como 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

Saída:

{
  "studentId": "555111",
  "invitationId": "aaa111bbb",
  "invitedEmailAddress": "parent@email.com",
  "state": "COMPLETE",
  "creationTime": "2025-01-15T10:00:00.000Z"
}
list_guardians — Listar responsáveis

Retorna todos os responsáveis confirmados de um aluno.

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

Saída:

{
  "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 — Obter um responsável

Retorna um responsável confirmado específico de um aluno.

Entradas:

- `student_id`   (string, required) — Identifier of the student
- `guardian_id`  (string, required) — Identifier of the guardian

Saída:

{
  "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 — Remover um responsável

Remove um responsável de um aluno, revogando o acesso dele aos e-mails de progresso do aluno.

Entradas:

- `student_id`   (string, required) — Identifier of the student
- `guardian_id`  (string, required) — Identifier of the guardian to remove

Saída:

{}

Referência de Parâmetros da API

Parâmetros Comuns
  • page_size — Número máximo de itens a retornar em uma única resposta. O servidor pode retornar menos.
  • page_token — Token da resposta anterior no campo nextPageToken. Passe-o para recuperar a próxima página de resultados.
  • update_mask — Lista separada por vírgulas de caminhos de campos a atualizar em uma chamada PATCH. Somente os campos listados são alterados; os campos omitidos permanecem como estão.
Identificadores de Recursos

ID do Curso:

Numeric string assigned by Classroom, or an alias prefixed with "d:"
Example: 123456789  or  d:intro-python-2025

ID do Usuário:

Numeric Google user ID, email address, or the literal "me" for the authenticated user
Example: 987654321  or  student@school.edu  or  me

ID do Trabalho:

Numeric string assigned by Classroom.
Use "-" as a wildcard to list submissions across all coursework in list_student_submissions.
Example: 222333444

Solução de Problemas

Cabeçalhos Ausentes ou Inválidos
  • Causa: Token OAuth não fornecido nos cabeçalhos da solicitação ou formato incorreto
  • Solução:
    1. Verifique se os cabeçalhos Authorization: Bearer YOUR_TOKEN e X-Mewcp-Credential-Id: CREDENTIAL-ID estão presentes
    2. Confirme que sua credencial do Google está ativa na sua conta MewCP
Créditos Insuficientes
  • Causa: As chamadas de API excederam seus limites de solicitação
  • Solução:
    1. Verifique o uso de créditos no seu painel do Curious Layer
    2. Faça upgrade para um plano pago ou adicione créditos para limites maiores
    3. Entre em contato com o suporte para ajustes de crédito
Credencial Não Conectada
  • Causa: Nenhuma credencial do Google Classroom vinculada à sua conta
  • Solução:
    1. Vá para Credenciais no seu painel do MewCP
    2. Conecte sua conta do Google via OAuth
    3. Tente novamente a solicitação com o cabeçalho X-Mewcp-Credential-Id correto
Payload de Solicitação Malformado
  • Causa: O payload JSON passado para um parâmetro body é inválido ou está faltando campos obrigatórios
  • Solução:
    1. Valide a sintaxe JSON antes de enviar
    2. Garanta que todos os campos obrigatórios para o tipo de recurso estejam incluídos
    3. Verifique se os tipos de parâmetros correspondem ao esquema da API do Google Classroom
Servidor Não Encontrado
  • Causa: Nome de servidor incorreto no endpoint da API
  • Solução:
    1. Verifique o formato do endpoint: {server-name}/mcp/{tool-name}
    2. Use o nome de servidor correto da documentação
    3. Verifique os servidores disponíveis na sua conta do Curious Layer
Erro da API do Google Classroom
  • Causa: A API upstream do Google Classroom retornou um erro (por exemplo, 403 Forbidden, 404 Not Found)
  • Solução:
    1. Verifique o Painel de Status do Google Workspace para interrupções
    2. Confirme que sua conta do Google tem a função necessária (professor/admin) para a operação
    3. Garanta que o curso ou recurso solicitado exista e que você tenha acesso a ele

Recursos