Provides comprehensive tools for managing Google Classroom environments, including the lifecycle management of courses, teacher and student rosters, invitations, topics, announcements, coursework, and student submissions.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Google Classroom MCPlist all assignments and due dates for my History 101 course"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Google Classroom MCP (local)
This MCP server exposes multiple tools for read + write:
classroom_get_user_enrollmentsclassroom_get_courseclassroom_list_coursesclassroom_create_courseclassroom_update_courseclassroom_set_course_stateclassroom_archive_courseclassroom_activate_courseclassroom_delete_courseclassroom_list_course_studentsclassroom_list_course_teachersclassroom_add_teacher_to_courseclassroom_remove_teacher_from_courseclassroom_add_student_to_courseclassroom_remove_student_from_courseclassroom_list_invitationsclassroom_get_invitationclassroom_create_invitationclassroom_delete_invitationclassroom_accept_invitationclassroom_list_course_topicsclassroom_create_topicclassroom_create_announcementclassroom_list_coursework_materialsclassroom_create_coursework_materialclassroom_list_courseworkclassroom_create_assignmentclassroom_clone_courseclassroom_list_student_submissionsclassroom_set_draft_gradeclassroom_set_assigned_gradeclassroom_turn_in_submissionclassroom_reclaim_submissionclassroom_return_submission
1) Google Workspace setup
Create (or choose) a Google Cloud project.
Enable Google Classroom API.
Create a Service Account and download its JSON key.
Enable Domain-wide delegation on that service account.
In Google Admin Console, go to
Security > API controls > Domain-wide delegationand add:Client ID: service account client ID
OAuth scopes (comma-separated):
https://www.googleapis.com/auth/classroom.courses.readonlyhttps://www.googleapis.com/auth/classroom.courseshttps://www.googleapis.com/auth/classroom.rosters.readonlyhttps://www.googleapis.com/auth/classroom.rostershttps://www.googleapis.com/auth/classroom.profile.emailshttps://www.googleapis.com/auth/classroom.topics.readonlyhttps://www.googleapis.com/auth/classroom.topicshttps://www.googleapis.com/auth/classroom.announcementshttps://www.googleapis.com/auth/classroom.coursework.students.readonlyhttps://www.googleapis.com/auth/classroom.coursework.studentshttps://www.googleapis.com/auth/classroom.coursework.mehttps://www.googleapis.com/auth/classroom.courseworkmaterials.readonlyhttps://www.googleapis.com/auth/classroom.courseworkmaterials
Ensure the delegated admin user can read Classroom data in your domain.
2) Local install
cd /home/carlos/classroom-mcp
bash setup.sh
cp .env.example .env
# edit .envOptional policy in .env:
CLASSROOM_REQUIRED_TEACHERS=osvalin15@certificacionmontessori.com,online@asociacionmontessori.mx
CLASSROOM_OBSOLETE_TEACHERS=presidencia@asociacionmontessori.mxWhen set, these teachers are auto-added for:
classroom_create_courseclassroom_clone_course
Obsolete filter behavior:
classroom_list_coursesandclassroom_get_user_enrollmentsexclude courses that include any teacher fromCLASSROOM_OBSOLETE_TEACHERS.If
CLASSROOM_OBSOLETE_TEACHERSis not set, default exclusion ispresidencia@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 list4) 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.shYou can override inputs with flags:
./smoke_test.sh \
--teacher-email carlos@certificacionmontessori.com \
--student-email carlos@asociacionmontessori.com.mx \
--course-id 765463029199Or set defaults in .env:
SMOKE_TEST_TEACHER_EMAILSMOKE_TEST_STUDENT_EMAILSMOKE_TEST_COURSE_ID
Keep generated artifacts (no cleanup) only when debugging:
./smoke_test.sh --keep-artifacts6) 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.shWith explicit inputs:
./admin_smoke_test.sh \
--admin-email admin@asociacionmontessori.com.mx \
--teacher-email carlos@certificacionmontessori.com \
--student-email carlos@asociacionmontessori.com.mxDefaults can live in .env:
ADMIN_SMOKE_ADMIN_EMAILADMIN_SMOKE_TEACHER_EMAILADMIN_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_emaillets you impersonate a teacher/admin for operations that require role-specific permissions.classroom_create_announcementdoes not support real Classroom topic binding; iftopic_idis sent, it is appended as text marker.classroom_create_coursedefaults toPROVISIONEDfor safer setup before going live.classroom_create_coursedefaultsownerIdtoacting_user_email(orGOOGLE_WORKSPACE_ADMIN_EMAIL) when not provided.classroom_delete_coursepermanently deletes the course; preferclassroom_archive_coursewhen in doubt.classroom_clone_coursecreates a new course and can copy topics, coursework, and course work materials with optional teacher/student enrollment.classroom_clone_coursedefaultsforce_draft_for_created_work=trueto avoid publishing cloned content unexpectedly.
This server cannot be installed
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.