Google Classroom MCP Server

Local setup required. This server has to be cloned and prepared on your machine before you register it in Claude Code.
1

Set the server up locally

Run this once to clone and prepare the server before adding it to Claude Code.

Run in terminal
git clone https://github.com/carlosrm22/mcp-classroom-codex
cd mcp-classroom-codex

Then follow the repository README for any remaining dependency or build steps before continuing.

2

Register it in Claude Code

After the local setup is done, run this command to point Claude Code at the built server.

Run in terminal
claude mcp add google-classroom-mcp -- node "<FULL_PATH_TO_MCP_CLASSROOM_CODEX>/dist/index.js"

Replace <FULL_PATH_TO_MCP_CLASSROOM_CODEX>/dist/index.js with the actual folder you prepared in step 1.

README.md

Comprehensive read and write access to Google Classroom management

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.

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"],
  stu

Tools (5)

classroom_list_coursesList all courses available in the classroom environment.
classroom_create_courseCreate a new course in Google Classroom.
classroom_clone_courseClone an existing course structure and content as drafts.
classroom_list_student_submissionsList submissions for a specific course and coursework.
classroom_set_assigned_gradeSet the grade for a student submission.

Environment Variables

CLASSROOM_REQUIRED_TEACHERSList of teacher emails to auto-add to new courses.
CLASSROOM_OBSOLETE_TEACHERSList of teacher emails to exclude from course listings.
SMOKE_TEST_TEACHER_EMAILDefault teacher email for smoke tests.

Configuration

claude_desktop_config.json
{"mcpServers": {"classroom": {"command": "/path/to/run.sh"}}}

Try it

List all the courses I am currently enrolled in.
Create a new course named 'Introduction to Computer Science' with the description 'Basic programming concepts'.
Clone the course with ID 844288618274 and name it 'Copia de F12 - Lenguaje'.
What are the current student submissions for the assignment in course 765463029199?
Add the teacher carlos@certificacionmontessori.com to the course 765463029199.

Frequently Asked Questions

What are the key features of Google Classroom MCP?

Full lifecycle management for Google Classroom courses. Support for student submissions and grading operations. Automated teacher assignment and course cloning capabilities. Advanced filtering for course lists based on teacher roles. Comprehensive invitation management for students and teachers.

What can I use Google Classroom MCP for?

Automating the creation of new course shells for a new semester. Bulk grading of student assignments across multiple courses. Cloning course structures to maintain consistency across different sections. Managing teacher rosters and invitations programmatically. Filtering out obsolete or inactive courses from administrative views.

How do I install Google Classroom MCP?

Install Google Classroom MCP by running: cd /home/carlos/classroom-mcp && bash setup.sh

What MCP clients work with Google Classroom MCP?

Google Classroom MCP works with any MCP-compatible client including Claude Desktop, Claude Code, Cursor, and other editors with MCP support.

Turn this server into reusable context

Keep Google Classroom MCP docs, env vars, and workflow notes in Conare so your agent carries them across sessions.

Need the old visual installer? Open Conare IDE.
Open Conare