classroom-mcp-server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| CLASSROOM_CONFIG_DIR | No | Directory where configuration and token files are stored. Overrides the default config directory. | ~/.config/classroom-mcp |
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 | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| classroom_list_coursesA | List the Google Classroom courses (classes) the authenticated user is enrolled in or teaches. Args:
Returns: Each course's id, name, section, description heading, room, ownerId, enrollmentCode, and courseState. Use the returned course id with the other tools. |
| classroom_list_topicsA | List all topics (the section headers teachers use to group work) within a course. Teachers often use topics to represent units, subjects, or lessons. Args:
Returns: Each topic's topicId and name. Pass topicId to classroom_list_coursework to filter materials/assignments by topic. |
| classroom_list_courseworkA | List coursework (assignments, questions) in a course, including attached materials, due dates, point values, and the topic each belongs to. Args:
Returns: Each item's id, title, description, workType, state, dueDate, maxPoints, topicId, alternateLink, and materials (attachments). |
| classroom_list_materialsA | List CourseWorkMaterials — posted reading/lesson materials that are NOT assignments. These are what teachers typically use for lessons and resources. Args:
Returns: Each material's id, title, description, state, topicId, alternateLink, and its attachments. |
| classroom_list_announcementsA | List announcements posted to a course stream, including any attachments. Args:
Returns: Each announcement's id, text, state, creationTime, updateTime, alternateLink, and materials. |
| classroom_list_rosterA | List students or teachers enrolled in a course. Args:
Returns: Each person's userId and profile name/email (email only if your scope and the domain permit it). |
| classroom_list_submissionsA | List student submissions for a specific assignment. As a student you'll see your own submission(s); as a teacher you'll see all. Args:
Returns: Each submission's id, userId, state (NEW/CREATED/TURNED_IN/RETURNED/RECLAIMED), late flag, assignedGrade, draftGrade, and attachments. Use the submission id with the turn-in / attachment write tools. |
| classroom_dump_courseA | Fetch a course's full structure in one call: every topic with its coursework and materials nested underneath, anything without a topic grouped separately, and optionally the announcement stream. Each item includes its attachments. This is the fastest way to get a complete picture of a class. Args:
Returns: { course, topics: [{ id, name, coursework[], materials[] }], no_topic: { coursework[], materials[] }, announcements[] }. To read the text of any attachment, pass its driveFile.driveFile.id to drive_fetch_file_content. Very large dumps truncate descriptions; use the per-resource tools for full detail. |
| classroom_turn_in_submissionA | Turn in (submit) a student assignment submission. This hands the work to the teacher and is the equivalent of clicking "Turn in". State must currently be CREATED or NEW. Args:
Returns: Confirmation. NOTE: This changes submission state and is not trivially reversible (use classroom_reclaim_submission to pull it back if still allowed). |
| classroom_reclaim_submissionA | Reclaim a turned-in submission (pull it back to make edits), equivalent to "Unsubmit". Only works if the assignment still allows it and state is TURNED_IN. Args:
Returns: Confirmation. |
| classroom_attach_to_submissionA | Attach a Drive file or link to a student submission BEFORE turning it in. Add attachments first, then call classroom_turn_in_submission. Args:
Returns: Confirmation. |
| classroom_create_topicA | Create a new topic in a course. Requires teacher rights on the course; will fail with a permission error for student accounts. Args:
Returns: The new topic's id and name. |
| classroom_create_announcementA | Post an announcement to a course stream. Requires teacher rights. Args:
Returns: The new announcement's id. |
| drive_fetch_file_contentA | Read the text content of a Google Drive file attached to Classroom coursework, materials, or announcements. Handles each type appropriately:
Args:
Returns: name, mime_type, size, link, and (when readable) content. Long content is truncated to a character limit with a note. Error Handling:
|
| classroom_whoamiA | Show which Google account this server is currently authorized as. Use this to confirm the server is pointed at the Google login that actually holds your classes. If it's the wrong account, delete the cached token (token.json) and run Args:
Returns: the authorized account's email, name, and id. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/ymr-gif/classroom-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server