Skip to main content
Glama

Google Classroom MCP (local)

This MCP server exposes multiple tools for read + write:

  • classroom_get_user_enrollments

  • classroom_get_course

  • classroom_list_courses

  • classroom_create_course

  • classroom_update_course

  • classroom_set_course_state

  • classroom_archive_course

  • classroom_activate_course

  • classroom_delete_course

  • classroom_list_course_students

  • classroom_list_course_teachers

  • classroom_add_teacher_to_course

  • classroom_remove_teacher_from_course

  • classroom_add_student_to_course

  • classroom_remove_student_from_course

  • classroom_list_invitations

  • classroom_get_invitation

  • classroom_create_invitation

  • classroom_delete_invitation

  • classroom_accept_invitation

  • classroom_list_course_topics

  • classroom_create_topic

  • classroom_create_announcement

  • classroom_list_coursework_materials

  • classroom_create_coursework_material

  • classroom_list_coursework

  • classroom_create_assignment

  • classroom_clone_course

  • classroom_list_student_submissions

  • classroom_set_draft_grade

  • classroom_set_assigned_grade

  • classroom_turn_in_submission

  • classroom_reclaim_submission

  • classroom_return_submission

1) Google Workspace setup

  1. Create (or choose) a Google Cloud project.

  2. Enable Google Classroom API.

  3. Create a Service Account and download its JSON key.

  4. Enable Domain-wide delegation on that service account.

  5. In Google Admin Console, go to Security > API controls > Domain-wide delegation and add:

    • Client ID: service account client ID

    • OAuth scopes (comma-separated):

      • https://www.googleapis.com/auth/classroom.courses.readonly

      • https://www.googleapis.com/auth/classroom.courses

      • https://www.googleapis.com/auth/classroom.rosters.readonly

      • https://www.googleapis.com/auth/classroom.rosters

      • https://www.googleapis.com/auth/classroom.profile.emails

      • https://www.googleapis.com/auth/classroom.topics.readonly

      • https://www.googleapis.com/auth/classroom.topics

      • https://www.googleapis.com/auth/classroom.announcements

      • https://www.googleapis.com/auth/classroom.coursework.students.readonly

      • https://www.googleapis.com/auth/classroom.coursework.students

      • https://www.googleapis.com/auth/classroom.coursework.me

      • https://www.googleapis.com/auth/classroom.courseworkmaterials.readonly

      • https://www.googleapis.com/auth/classroom.courseworkmaterials

  6. Ensure the delegated admin user can read Classroom data in your domain.

Related MCP server: gsuite

2) Local install

cd /home/carlos/classroom-mcp
bash setup.sh
cp .env.example .env
# edit .env

Optional policy in .env:

CLASSROOM_REQUIRED_TEACHERS=osvalin15@certificacionmontessori.com,online@asociacionmontessori.mx
CLASSROOM_OBSOLETE_TEACHERS=presidencia@asociacionmontessori.mx

When set, these teachers are auto-added for:

  • classroom_create_course

  • classroom_clone_course

Obsolete filter behavior:

  • classroom_list_courses and classroom_get_user_enrollments exclude courses that include any teacher from CLASSROOM_OBSOLETE_TEACHERS.

  • If CLASSROOM_OBSOLETE_TEACHERS is not set, default exclusion is presidencia@asociacionmontessori.mx.

  • Set CLASSROOM_OBSOLETE_TEACHERS= (empty) to disable this filter.

3) Register in Codex

codex mcp add classroom -- /home/carlos/classroom-mcp/run.sh
codex mcp list

4) Example prompt in Codex

En qué materias está registrado el usuario guiarodrigo@asociacionmontessori.mx?

5) Smoke test (portable)

Run the full write-path smoke test with automatic cleanup:

cd /home/carlos/classroom-mcp
./smoke_test.sh

You can override inputs with flags:

./smoke_test.sh \
  --teacher-email carlos@certificacionmontessori.com \
  --student-email carlos@asociacionmontessori.com.mx \
  --course-id 765463029199

Or set defaults in .env:

  • SMOKE_TEST_TEACHER_EMAIL

  • SMOKE_TEST_STUDENT_EMAIL

  • SMOKE_TEST_COURSE_ID

Keep generated artifacts (no cleanup) only when debugging:

./smoke_test.sh --keep-artifacts

6) Admin smoke test (course lifecycle + invitations)

This covers the newer admin tools:

  • create/update/archive/activate/delete course

  • add/remove teacher

  • create/get/list/accept/delete invitation

cd /home/carlos/classroom-mcp
./admin_smoke_test.sh

With explicit inputs:

./admin_smoke_test.sh \
  --admin-email admin@asociacionmontessori.com.mx \
  --teacher-email carlos@certificacionmontessori.com \
  --student-email carlos@asociacionmontessori.com.mx

Defaults can live in .env:

  • ADMIN_SMOKE_ADMIN_EMAIL

  • ADMIN_SMOKE_TEACHER_EMAIL

  • ADMIN_SMOKE_STUDENT_EMAIL

7) Clone course example (MCP)

Use the new tool to clone structure + content safely as drafts:

classroom_clone_course(
  source_course_id="844288618274",
  new_course_name="Copia de F12 - Lenguaje",
  teacher_emails=["carlos@certificacionmontessori.com"],
  student_emails=["carlos@asociacionmontessori.com.mx"],
  copy_topics=true,
  copy_coursework=true,
  copy_coursework_materials=true,
  force_draft_for_created_work=true
)

Notes

  • If the user exists outside your Workspace domain, Google may return 403/404.

  • If you need archived courses too, ask with course_state="ARCHIVED".

  • acting_user_email lets you impersonate a teacher/admin for operations that require role-specific permissions.

  • classroom_create_announcement does not support real Classroom topic binding; if topic_id is sent, it is appended as text marker.

  • classroom_create_course defaults to PROVISIONED for safer setup before going live.

  • classroom_create_course defaults ownerId to acting_user_email (or GOOGLE_WORKSPACE_ADMIN_EMAIL) when not provided.

  • classroom_delete_course permanently deletes the course; prefer classroom_archive_course when in doubt.

  • classroom_clone_course creates a new course and can copy topics, coursework, and course work materials with optional teacher/student enrollment.

  • classroom_clone_course defaults force_draft_for_created_work=true to avoid publishing cloned content unexpectedly.

Related MCP Connectors

Related MCP Servers