# Google Classroom MCP Server

> **Google Classroom MCP Server** is a hosted, multitenant Model Context Protocol (MCP) server run by **MewCP** (https://mewcp.com), giving AI agents managed access to Google Classroom.
>
> MewCP takes care of all MCP infrastructure for you — credential storage, OAuth flows,
> token refresh, and production-grade auto-scaling — so your AI agents can connect to
> third-party services and run freely without you managing any MCP server yourself.
>
> Server page:  https://mewcp.com/mcp/google-classroom
> MewCP docs:   https://docs.mewcp.com
> All servers:  https://mewcp.com/servers (JSON: https://mewcp.com/api/servers)
> About MewCP:  https://mewcp.com/llms.txt

---

## About

Manage courses, assignments, rosters and student activity within Google Classroom. Create learning workflows, track submissions and organize educational content across classrooms.

---

## Details

- Server ID: `google-classroom`
- Version: 2.0.0
- Tools: 76
- Authentication: OAuth, managed by MewCP
- Calls served: 89
- Transport: http

---

## Access

The gateway URL below serves your **entire MewCP toolset**, not this server on its
own. Pasting a config snippet is not enough — Google Classroom has to be in the toolset
first. In order:

1. Add Google Classroom to your toolset at https://mewcp.com/mcp/google-classroom
2. Connect your Google Classroom account (OAuth); MewCP stores the credential and attaches it to each call
3. Add the gateway URL to your client (see Connect below). It signs in with OAuth
   the first time it connects, so there is no key to copy.

Once connected, an agent does **not** see this server's tools as top-level tools.
It sees four meta-tools and reaches everything through them:

- `search(query)` — find tools by keyword across the toolset
- `get_schema(tools)` — full description and arguments for the tools you picked
- `list_accounts(provider)` — only when one app has several connected accounts
- `call_tool(server_maskedId, tool_name, args)` — execute

So the list below is what `search` can return for this server, not a set of
callable tool names on their own.

---

## Tools (76)

Descriptions are truncated to 160 characters; call `get_schema`
for the full text and the argument schema. Where a tool is annotated, its type
is shown — treat `destructive` as irreversible.

- `create_course_alias` _(write)_ — Creates an alias for a course and returns it. The alias must start with `d:` (domain-scoped) or `p:` (project-scoped), and fails with ALREADY_EXISTS if it is…
- `delete_course_alias` _(destructive)_ — DESTRUCTIVE — REQUIRES EXPLICIT USER CONFIRMATION BEFORE CALLING. Permanently deletes a course alias. This action is irreversible — the alias (the course…
- `list_course_aliases` _(read)_ — Lists the aliases of a course. Returns each alias string plus `nextPageToken` for paging.
- `create_announcement` _(write)_ — Creates an announcement in a course and returns it, optionally with materials, a draft/scheduled state and specific student assignees. Attachments must be…
- `delete_announcement` _(destructive)_ — DESTRUCTIVE — REQUIRES EXPLICIT USER CONFIRMATION BEFORE CALLING. Permanently deletes an announcement. This action is irreversible — the announcement and its…
- `get_announcement` _(read)_ — Retrieves one announcement of a course by ID and returns its text, state, materials, assignee mode and timestamps.
- `list_announcements` _(read)_ — Lists announcements in a course, filtered by `announcement_states`. Students only see PUBLISHED announcements; teachers and domain admins see all. Returns…
- `modify_announcement_assignees` _(write)_ — Changes the assignee mode of an announcement (all students or specific students) and adds or removes individual students, then returns the announcement. Only a…
- `update_announcement` _(write)_ — Updates the provided fields of an announcement (text, state, scheduled time) and returns the updated announcement. NOTE: this overwrites the current field…
- `create_course` _(write)_ — Creates a course owned by `owner_id`, who is also added as its teacher, and returns the new course. Non-admin users can only create courses they own; domain…
- `delete_course` _(destructive)_ — DESTRUCTIVE — REQUIRES EXPLICIT USER CONFIRMATION BEFORE CALLING. Permanently deletes a course. This action is irreversible — the course and its classwork,…
- `get_course` _(read)_ — Retrieves one course by ID or alias and returns its settings, state, links, owner and teacher/course group emails.
- `get_grading_period_settings` _(read)_ — Retrieves the grading period settings of a course and returns each grading period with its start and end dates, plus whether the settings apply to existing…
- `list_courses` _(read)_ — Lists the courses the user can view, most recently created first, optionally filtered by `student_id`, `teacher_id` (mutually exclusive) and `course_states`.…
- `replace_course` _(write)_ — Replaces a course with the supplied field values (full update); `name` and `owner_id` are required, and `levels` is the one field kept when omitted. Use…
- `update_course` _(write)_ — Updates only the provided fields of a course and returns the updated course. Fails if the course is not modifiable or the title contains a URL. NOTE: this…
- `update_grading_period_settings` _(write)_ — Adds, removes or modifies grading periods in a course's grading period settings. Both the requesting user and the course owner must be licensed to modify…
- `create_course_work` _(write)_ — Creates course work (assignment, short-answer or multiple-choice question) in a course and returns it. The item is tied to the OAuth client's project, so later…
- `delete_course_work` _(destructive)_ — DESTRUCTIVE — REQUIRES EXPLICIT USER CONFIRMATION BEFORE CALLING. Permanently deletes a course work item. This action is irreversible — the item and its…
- `get_course_work` _(read)_ — Retrieves one course work item by ID and returns its title, work type, state, due date, max points, materials, assignee mode and topic.
- `list_course_work` _(read)_ — Lists course work in a course, filtered by `course_work_states` and ordered by `order_by`. Students only see PUBLISHED items; teachers and domain admins see…
- `modify_course_work_assignees` _(write)_ — Changes the assignee mode of a course work item (all students or specific students) and adds or removes individual students, then returns the item. Only a…
- `update_course_work` _(write)_ — Updates the provided fields of a course work item and returns it. Must be called with an OAuth client from the project that created the item. NOTE: this…
- `create_course_work_material` _(write)_ — Creates a course work material (a classwork item that carries materials but no grade) in a course and returns it. Attachments must be visible to the creator.
- `delete_course_work_material` _(destructive)_ — DESTRUCTIVE — REQUIRES EXPLICIT USER CONFIRMATION BEFORE CALLING. Permanently deletes a course work material. This action is irreversible — the material item…
- `get_course_work_material` _(read)_ — Retrieves one course work material by ID and returns its title, description, materials, state, topic and assignee settings.
- `list_course_work_materials` _(read)_ — Lists course work materials in a course, filtered by state, linked URL or Drive file ID. Students only see PUBLISHED materials; teachers and domain admins see…
- `update_course_work_material` _(write)_ — Updates the provided fields of a course work material (title, description, materials, state, scheduled time, topic) and returns the updated material. NOTE:…
- `create_guardian_invitation` _(write)_ — Creates a guardian invitation for a student and emails the guardian to confirm; once they accept, the invitation state becomes COMPLETED and a guardian link is…
- `get_guardian_invitation` _(read)_ — Retrieves one guardian invitation by ID and returns its state, invited email address and creation time.
- `list_guardian_invitations` _(read)_ — Lists the guardian invitations of a student, filtered by `invited_email_address` and `states`. Returns invitations plus `nextPageToken` for paging.
- `update_guardian_invitation` _(write)_ — Withdraws a guardian invitation by changing its `state` from PENDING to COMPLETE, the only supported change, and returns the invitation. NOTE: this overwrites…
- `delete_guardian` _(destructive)_ — DESTRUCTIVE — REQUIRES EXPLICIT USER CONFIRMATION BEFORE CALLING. Permanently deletes a guardian link. This action is irreversible — the guardian's access, so…
- `get_guardian` _(read)_ — Retrieves one guardian of a student by guardian ID and returns the guardian's profile and invited email address.
- `list_guardians` _(read)_ — Lists the guardians of a student, optionally filtered by `invited_email_address`. Pass `-` as `student_id` to span every student the user can view guardians…
- `accept_invitation` _(write)_ — Accepts a course invitation, which consumes it and adds the invited user as a teacher or student of the course. Only the invited user can accept; returns the…
- `create_invitation` _(write)_ — Creates an invitation for a user to join a course as student, teacher or owner and returns it. Only one invitation per user and course can exist, so delete and…
- `delete_invitation` _(destructive)_ — DESTRUCTIVE — REQUIRES EXPLICIT USER CONFIRMATION BEFORE CALLING. Permanently deletes a course invitation. This action is irreversible — the pending invitation…
- `get_invitation` _(read)_ — Retrieves one course invitation by ID and returns the invited user, course and role.
- `list_invitations` _(read)_ — Lists course invitations the user can view, filtered by `user_id` and `course_id`; at least one of the two must be provided. Returns invitations plus…
- `create_registration` _(write)_ — Creates a push-notification registration so Classroom sends the given `feed` to a Cloud Pub/Sub topic, and returns the registration with its server-assigned ID…
- `delete_registration` _(destructive)_ — DESTRUCTIVE — REQUIRES EXPLICIT USER CONFIRMATION BEFORE CALLING. Permanently deletes a push-notification registration. This action is irreversible — the…
- `create_rubric` _(write)_ — Creates a rubric on a course work item and returns it. The user and course owner need rubric licensing, and the call must use the OAuth client's project that…
- `delete_rubric` _(destructive)_ — DESTRUCTIVE — REQUIRES EXPLICIT USER CONFIRMATION BEFORE CALLING. Permanently deletes a rubric. This action is irreversible — the rubric and any grading…
- `get_rubric` _(read)_ — Retrieves one rubric of a course work item by ID and returns its criteria, levels and linked spreadsheet.
- `list_rubrics` _(read)_ — Lists the rubrics of a course work item. Returns rubrics plus `nextPageToken` for paging.
- `update_course_work_rubric` _(write)_ — Updates the rubric of a course work item, found by `rubric_id` if given or else the item's only rubric, and returns it. Rubric edits are limited once grading…
- `update_rubric` _(write)_ — Updates a rubric by ID and returns it. Rubric edits are limited once grading has started, and the call must use the OAuth client's project that created the…
- `create_student_group_member` _(write)_ — Adds a student to a student group and returns the membership. Fails with ALREADY_EXISTS if the student is already a member.
- `delete_student_group_member` _(destructive)_ — DESTRUCTIVE — REQUIRES EXPLICIT USER CONFIRMATION BEFORE CALLING. Permanently deletes a student from a student group. This action is irreversible — the…
- `list_student_group_members` _(read)_ — Lists the student members of a student group. Returns members plus `nextPageToken` for paging.
- `create_student_group` _(write)_ — Creates a student group in a course and returns it.
- `delete_student_group` _(destructive)_ — DESTRUCTIVE — REQUIRES EXPLICIT USER CONFIRMATION BEFORE CALLING. Permanently deletes a student group. This action is irreversible — the group and its…
- `list_student_groups` _(read)_ — Lists the student groups of a course. Returns groups plus `nextPageToken` for paging.
- `update_student_group` _(write)_ — Updates the provided fields of a student group (its title) and returns the updated group. NOTE: this overwrites the current field values — the original state…
- `get_student_submission` _(read)_ — Retrieves one student submission by ID and returns its state, grades, late flag, attachments and submission history.
- `list_student_submissions` _(read)_ — Lists student submissions for a course work item, filtered by `states`, `user_id` and `late`. Pass `-` as `course_work_id` to span all course work in the…
- `modify_student_submission_attachments` _(write)_ — Adds attachments to a student submission and returns it. Only works for submissions of ASSIGNMENT course work, and the call must use the OAuth client's project…
- `reclaim_student_submission` _(write)_ — Reclaims a turned-in student submission on behalf of the student who owns it, returning ownership of attached Drive files to the student, and returns the…
- `return_student_submission` _(write)_ — Returns a student submission to the student, transferring ownership of attached Drive files to them, and returns the submission afterwards. It does not copy…
- `turn_in_student_submission` _(write)_ — Turns in a student submission, transferring ownership of attached Drive files to the teacher, and returns the submission afterwards. Only the owning student…
- `update_student_submission` _(write)_ — Updates the provided fields of a student submission, such as `draft_grade` or `assigned_grade`, and returns it. Must use the OAuth client's project that…
- `create_student` _(write)_ — Adds a user as a student of a course and returns the student. Domain admins can add any user in their domain directly; students can add themselves by passing…
- `delete_student` _(destructive)_ — DESTRUCTIVE — REQUIRES EXPLICIT USER CONFIRMATION BEFORE CALLING. Permanently deletes a student from a course. This action is irreversible — the student's…
- `get_student` _(read)_ — Retrieves one student of a course by user ID or email and returns their profile and course membership.
- `list_students` _(read)_ — Lists the students of a course that the user can view. Returns students plus `nextPageToken` for paging.
- `create_teacher` _(write)_ — Adds a user as a teacher of a course and returns the teacher. Only domain admins can add teachers directly; other users must send an invitation with…
- `delete_teacher` _(destructive)_ — DESTRUCTIVE — REQUIRES EXPLICIT USER CONFIRMATION BEFORE CALLING. Permanently deletes a teacher from a course. This action is irreversible — the teacher's…
- `get_teacher` _(read)_ — Retrieves one teacher of a course by user ID or email and returns their profile and course membership.
- `list_teachers` _(read)_ — Lists the teachers of a course that the user can view. Returns teachers plus `nextPageToken` for paging.
- `create_topic` _(write)_ — Creates a topic in a course and returns it. Topic names are case sensitive and the course may reach a topic limit.
- `delete_topic` _(destructive)_ — DESTRUCTIVE — REQUIRES EXPLICIT USER CONFIRMATION BEFORE CALLING. Permanently deletes a course topic. This action is irreversible — the topic (coursework and…
- `get_topic` _(read)_ — Retrieves one topic of a course by ID and returns its name, ID and last update time.
- `list_topics` _(read)_ — Lists the topics of a course that the user can view. Returns topics plus `nextPageToken` for paging.
- `update_topic` _(write)_ — Updates the provided fields of a topic (its name) and returns the updated topic. NOTE: this overwrites the current field values — the original state is not…
- `get_user_profile` _(read)_ — Retrieves the profile of a user by ID, email or `me` and returns their name and, with the matching scopes, email address and photo URL.

---

## Connect

- URL: https://gateway.mewcp.com/personal/mcp
- Transport: Streamable HTTP (remote). Nothing to install.
- Sign-in: OAuth. On first connect the client opens a browser window to sign in
  to MewCP and approve access. No API key.
- Headless clients (SDKs, servers without a browser) send an API key instead:
  `Authorization: Bearer <API_KEY>`, key from https://mewcp.com/dashboard/api-keys

Agents setting themselves up: follow https://mewcp.com/SKILL.md

Step-by-step guide per client:

- Claude Desktop: https://mewcp.com/mcp/google-classroom/connect/claude
- ChatGPT: https://mewcp.com/mcp/google-classroom/connect/chatgpt
- VS Code: https://mewcp.com/mcp/google-classroom/connect/vscode
- Cursor: https://mewcp.com/mcp/google-classroom/connect/cursor
- Codex: https://mewcp.com/mcp/google-classroom/connect/codex
- Claude Code: https://mewcp.com/mcp/google-classroom/connect/claude-code
- OpenCode: https://mewcp.com/mcp/google-classroom/connect/opencode
- OpenClaw: https://mewcp.com/mcp/google-classroom/connect/openclaw
- Antigravity: https://mewcp.com/mcp/google-classroom/connect/antigravity
- Hermes: https://mewcp.com/mcp/google-classroom/connect/hermes
- DeepSeek Harness: https://mewcp.com/mcp/google-classroom/connect/dsh
- Python: https://mewcp.com/mcp/google-classroom/connect/python
- TypeScript: https://mewcp.com/mcp/google-classroom/connect/typescript