MCP server/other

Google Classroom MCP Server

Comprehensive read and write access to Google Classroom management

carlosrm22/mcp-classroom-codex ↗by carlosrm22updated
1

Add it to Claude Code

claude mcp add google-classroom-mcp -- /path/to/run.sh
2

Make your agent remember this setup

google-classroom-mcp's config, env vars, and the gotchas you hit — recalled in every future Claude Code, Cursor, and Codex session.

npx conare@latest

Free · one command · indexes the sessions already on disk. Set up in the browser instead →

What it does

  • 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

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.

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 [email protected] to the course 765463029199.
Original README from carlosrm22/mcp-classroom-codex

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,[email protected]
[email protected]

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 [email protected].
  • 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 [email protected]?

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 [email protected] \
  --student-email [email protected] \
  --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 [email protected] \
  --teacher-email [email protected] \
  --student-email [email protected]

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=["[email protected]"],
  stu

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.

Conare · memory for coding agents

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.

Set up free$npx conare@latest