google-classroom-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| GOOGLE_TOKEN_PATH | No | Absolute path to the OAuth token JSON file. If not set, defaults to 'token.json' in the current directory. | |
| GOOGLE_CREDENTIALS_PATH | No | Absolute path to the OAuth client credentials JSON file. If not set, defaults to 'credentials.json' in the current directory. |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| slides_get_presentationA | Read a Google Slides presentation by ID, including its slide text and structure. |
| classroom_list_coursesA | List all Google Classroom courses. Supports filtering by state (ACTIVE, ARCHIVED, PROVISIONED). Returns one page as {items, nextPageToken}; continue until nextPageToken is null. |
| classroom_search_coursesA | Search courses by name or section (client-side filter, case-insensitive). Returns one page as {items, nextPageToken}; continue until nextPageToken is null. |
| classroom_get_courseA | Get full details of a specific course by ID. |
| classroom_update_courseC | Update course fields (name, section, description, room, state). State can be ACTIVE or ARCHIVED. |
| classroom_get_assignmentA | Get full details of a specific assignment by ID. |
| classroom_list_assignmentsA | List coursework (assignments/questions) for a course. Supports filtering by state. Returns one page as {items, nextPageToken}; continue until nextPageToken is null. |
| classroom_create_assignmentB | Create an assignment or question with optional attachments, due date, and topic. |
| classroom_patch_assignmentA | Update specific fields of an existing assignment using updateMask. |
| classroom_get_topicB | Get details of a specific topic by ID. |
| classroom_list_topicsA | List all topics in a course. Returns one page as {items, nextPageToken}; continue until nextPageToken is null. |
| classroom_create_topicB | Create a new topic/unit in a course. |
| classroom_patch_topicC | Rename or update a topic. |
| classroom_get_materialA | Get full details of a specific course material by ID. |
| classroom_list_materialsA | List all non-graded materials for a course. Returns one page as {items, nextPageToken}; continue until nextPageToken is null. |
| classroom_create_materialB | Create a study material post with optional attachments and topic. |
| classroom_patch_materialC | Update fields of an existing material post. |
| classroom_list_announcementsA | List announcements for a course. Returns one page as {items, nextPageToken}; continue until nextPageToken is null. |
| classroom_post_announcementC | Post an announcement to the course stream. |
| classroom_patch_announcementB | Edit an existing announcement. |
| drive_upload_fileA | Upload a base64-encoded file to Google Drive. Returns the Drive file ID and URL. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 21 tools
Most tools map to a clear resource and action, and the list/search course tools are distinct enough based on their descriptions. The main ambiguity is between update_course and the various patch_* tools, which are not obviously differentiated by name alone.
The set mostly follows a snake_case verb_noun pattern with a classroom_ prefix, and slides_/drive_ for external resources. The inconsistency between update_course, patch_* operations, and post_announcement is noticeable but not chaotic.
At 21 tools, the server is in the 16-25 range that feels heavy. Each Classroom resource has multiple operations and Slides/Drive add extra breadth, but the count is borderline rather than clearly well-scoped.
There are significant lifecycle gaps: no create_course, no get_announcement, and no delete operations for assignments, topics, materials, or announcements. Agents will hit dead ends when trying to remove resources or perform common classroom management workflows.