google-classroom-student-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| GOOGLE_CLIENT_ID | No | OAuth client ID of your Google Cloud Desktop app OAuth client, copied from the Credentials page. | |
| GOOGLE_ACCESS_TOKEN | No | Quick test alternative: an access token from the OAuth Playground with the Classroom read only scopes. It stops working after about an hour. | |
| GOOGLE_CLIENT_SECRET | No | OAuth client secret of your Google Cloud Desktop app OAuth client, copied from the Credentials page. | |
| GOOGLE_REFRESH_TOKEN | No | Refresh token printed by the one time `npx google-classroom-student-mcp login` sign in. |
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 |
|---|---|
| get_my_coursesA | List the student's active Google Classroom classes with their IDs. Use this when the user asks 'What classes am I in?' or needs a course ID to pass to another tool. |
| get_todoA | Everything assigned that the student has not turned in yet, each with a link to open it in Classroom. Pass course_ids to limit it, or leave empty for all active classes. Use this when the user asks 'What do I still have to do?' or 'What's left to turn in across all my classes?' |
| export_due_dates_calendarA | Build an ICS calendar file of upcoming due dates so they can be imported into a calendar app. Pass course_ids to limit it, or leave empty for all active classes. Use this when the user asks 'Can you give me my due dates as a calendar file?' |
| get_upcoming_due_datesA | Work that is due soon and not turned in, soonest first. Pass course_ids or days_ahead to narrow it, or leave both empty. Use this when the user asks 'What's due this week across all my classes?' or 'What's coming up?' |
| get_missing_assignmentsA | Past due work that has not been turned in. Pass course_ids to limit it, or leave empty for all active classes. Use this when the user asks 'What's overdue?' or 'What am I behind on?' |
| get_assignmentsA | Assignments for one class, picked by course_id or course_name, with due dates and status, each with a link to open it in Classroom. Use this when the user asks 'What's due in this class?' or wants every assignment and its points for a single class. |
| get_assignment_detailsA | Everything about one assignment: what the teacher wrote in the description, the files and links attached to it, its due date, points and your status. Pass the course ID and the assignment ID. Use this when the user asks 'What does this assignment ask for?' or 'What do I need to turn in?' about one specific assignment. |
| get_submission_statusA | Did my teacher get my work? For one assignment, shows whether it is turned in, when it was turned in, whether it was late, the grade if it was returned and the comment the teacher left. Pass the course ID and the assignment ID. Use this when the user asks 'Did my teacher get my work?' or 'Was my assignment marked late?' |
| get_my_gradesA | Grades on returned work for each class, with the comment the teacher left on the work. Google Classroom has no overall grade, so this adds up graded work only, and adds a weighted percent when the class uses grading categories with weights. Pass course_ids to limit it, or leave empty for all active classes. Use this when the user asks 'How am I doing in my classes?' or 'What grades have I gotten back?' |
| get_target_gradeA | Points needed on the work that is left to reach a target percent in each class. Adds up the points earned on graded work and the points the work left is worth, then says how many of those points you still need. target_percent is the percent you want, from 0 to 100. Pass course_ids to limit it, or leave empty for all active classes. Use this when the user asks 'What do I need to score to get a 90?' or 'Can I still get an A in this class?' |
| get_announcementsA | Recent announcements, each with a link to open it in Classroom. Pass course_ids or since_days to limit how far back they go, or leave empty for all active classes. Use this when the user asks 'Did my teacher post anything new?' or 'What did my teacher announce?' |
| get_course_materialsA | Posted materials for one class, picked by course_id or course_name, grouped by topic with the Drive link of every attached file. Use this when the user asks 'What materials did my teacher post?' or 'What did we cover in unit 3?' or wants the readings, slides and handouts for one class. |
| get_course_teachersA | Teachers of your classes with their email addresses when Classroom shares them. Pass course_id for one class, or course_ids or course_name for several, and each class gets its own list. With none of them it covers all active classes. Use this when the user asks 'Who teaches this class?' or 'How do I email my teacher?' |
| get_whats_newA | One catch up digest for every class: new announcements, newly graded work with the comment the teacher left, overdue work and what is due next. Pass course_ids to limit it, since_days for how far back to look and days_ahead for how far ahead to look. Use this when the user asks 'What's new since yesterday?' or 'What changed in my classes?' |
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 14 tools
Most tools target clearly distinct slices of data (courses, grades, announcements, materials, teachers), and descriptions carefully explain the 'what do I still have to do' vs 'what's due soon' vs 'what's overdue' split. The tightest overlap is get_submission_status vs get_assignment_details, since the latter also reports the student's status, and get_whats_new aggregates several other tools' outputs — an agent may hesitate between the specific and the aggregate.
Every tool is snake_case with a predictable verb_noun shape (get_my_courses, get_todo, get_missing_assignments, get_course_teachers), and the single non-get verb (export_due_dates_calendar) describes a genuinely different action. Scope qualifiers like get_my_* vs get_course_* are used consistently.
14 tools sits in the sweet spot and each one maps to a distinct student question (what am I in, what's due, what's late, what did I get, what's new, who teaches me). The aggregate tools (get_whats_new, export_due_dates_calendar) earn their place as conveniences rather than duplicating surface for its own sake.
Read-only student workflows are well covered end-to-end: discovery of courses, per-class and cross-class assignment views, submission detail, grades, target-grade math, materials, announcements, and teacher contact. Gaps are minor but real — no way to fetch attachment/drive file contents, no archived-course access, and no write/submit operations if the server is intended to grow beyond read-only.