Google Classroom MCP for students

io.github.AnonymousOnyx22由 GitHub 账号 AnonymousOnyx22 发布v0.1.10更新于 Nov 1, 2026

Google Classroom MCP server for students: read only assignments, due dates, grades, announcements.

已验证STDIO仅桌面效率与工作流沟通与协作

概览

AI 生成的概览

只读的 Google Classroom 服务器,让 AI 助手查看学生的课程、作业、截止日期、未交作业、成绩和公告。

可以做什么
  • 列出在修课程及其 ID,以及某门课的教师
  • 列出作业、即将到期与逾期未交的作业,以及尚未提交的待办清单
  • 查看单个作业的说明、附件、分值与提交状态
  • 汇总已批改作业的成绩与教师评语,并计算达到目标百分比所需分数
  • 读取公告与课程资料,生成包含新公告、新成绩、逾期作业和近期截止的汇总
  • 将即将到来的截止日期导出为 ICS 日历文件
适用场景
适合课程在 Google Classroom 上的学生,用来向 AI 应用询问还有什么要交、哪些已逾期、老师对已批改作业的评语,或需要考多少分才能达到目标成绩。
运行要求
通过 npx 在本地运行,需要 Node 20 或更高版本。需在 Google Cloud 创建项目并启用 Classroom API、创建 OAuth 桌面客户端,再执行一次性登录,得到 GOOGLE_CLIENT_ID、GOOGLE_CLIENT_SECRET 和 GOOGLE_REFRESH_TOKEN 并写入 MCP 配置。可选 CLASSROOM_TIMEZONE;快速测试可用临时 GOOGLE_ACCESS_TOKEN。需要访问 Google 的网络。
安装前请注意
配置中保存 Google 客户端密钥和刷新令牌,应视为敏感信息。访问为只读,凭据只发送给 Google,但 Cloud 应用处于测试模式时 Google 约每 7 天使刷新令牌失效,需重新登录。学校管理员可能封禁第三方应用。成绩仅按分值计算,不考虑教师的权重设置。

安装

在 SourceWeft 中

  1. 打开 控制台中的 Google Classroom MCP for students,将其添加到工作区。
  2. 为需要使用其工具的对话启用该服务。

Desktop only,通过 STDIO。 STDIO 服务会启动本地进程,因此需要 SourceWeft 桌面宿主。

其他 MCP 客户端

参照 仓库 中的启动说明。

README

Google Classroom MCP server for students

[npm version] [MCP] [Smithery] [Glama] [mcp.so]

Ask your AI what's actually left to do in Google Classroom.

bash
npx google-classroom-student-mcp setup

That one command prints the config for your AI app. Details are in Quick start with npx.

This is the Google Classroom MCP server: a free, open source MCP server that lets Claude Desktop, Claude Code, Cursor and other MCP apps read your Classroom classes, assignments, due dates, missing work, grades on returned work with the comments your teachers leave on them, the points you need to reach a target grade, announcements, course materials and a catch up digest. It is read only. It can never turn in, edit or delete anything. Not affiliated with Google.

Free forever. No sign up and no subscription. Your login details only ever go to Google.

Try it now

Ask these right after setup:

  • "What do I still need to turn in?"
  • "What's overdue?"
  • "What's due this week across all my classes?"
  • "What did my teacher say about my work?"
  • "What do I need to score to get a 90?"
  • "What's new since yesterday?"

Sample answer

The third question goes to get_upcoming_due_dates. It reads your classes and prints one line per assignment, soonest first. Here is what an answer looks like:

text
- Essay outline (English) due Fri, Oct 23- Lab write up (Biology) due Fri, Oct 23, 11:59 p.m. UTC- Problem set 4 (Calculus) due Mon, Oct 26

Every line has the assignment title, the class and the due date. Work you already turned in is left out. Pass days_ahead set to 7 to that tool for a week ahead. Classroom keeps due times in UTC, and the server prints them in your own time zone. More sample answers are in Questions students ask.

Quick start with npx

Install the Google Classroom MCP server with npx, then add it to your AI app. Run npx google-classroom-student-mcp setup to print the config blocks below, with the three Google values filled in when they are set in your environment. Pick your app.

Claude Desktop

Add this to claude_desktop_config.json:

json
{  "mcpServers": {    "classroom": {      "command": "npx",      "args": ["-y", "google-classroom-student-mcp"],      "env": {        "GOOGLE_CLIENT_ID": "your-id",        "GOOGLE_CLIENT_SECRET": "your-secret",        "GOOGLE_REFRESH_TOKEN": "paste-from-login"      }    }  }}

Claude Code

Run this one command:

bash
claude mcp add google-classroom-student-mcp \  -e GOOGLE_CLIENT_ID=your-id \  -e GOOGLE_CLIENT_SECRET=your-secret \  -e GOOGLE_REFRESH_TOKEN=paste-from-login \  -- npx -y google-classroom-student-mcp

Or put the same JSON block as Claude Desktop in a .mcp.json file in your project folder, or run claude mcp add-json with it.

Cursor

Put this in .cursor/mcp.json in your project folder, or in ~/.cursor/mcp.json to use it everywhere:

json
{  "mcpServers": {    "classroom": {      "command": "npx",      "args": ["-y", "google-classroom-student-mcp"],      "env": {        "GOOGLE_CLIENT_ID": "your-id",        "GOOGLE_CLIENT_SECRET": "your-secret",        "GOOGLE_REFRESH_TOKEN": "paste-from-login"      }    }  }}

Other MCP apps take the same mcpServers JSON, with command set to npx and args set to ["-y", "google-classroom-student-mcp"].

Setup (about 10 minutes, one time)

Google makes every app ask for its own permission, so you create a small private "app" that only you use.

  1. Go to the Google Cloud console and create a project.
  2. Turn on the Google Classroom API for it (APIs & Services > Library).
  3. Under APIs & Services > OAuth consent screen, set it up as External, and add your own Google account as a test user.
  4. Under Credentials, create an OAuth client ID of type Desktop app. Copy the client ID and secret.
  5. Run the one time sign in:
bash
GOOGLE_CLIENT_ID=your-id GOOGLE_CLIENT_SECRET=your-secret npx google-classroom-student-mcp login

Open the link it prints, approve read only access, and copy the three values it prints.

Optional: set CLASSROOM_TIMEZONE to a time zone name such as America/Toronto. Work with a due date but no due time counts as due at the end of that day in this zone. Without it, the time zone of the computer running the server is used.

  1. Add them to your AI app's MCP config. Run npx google-classroom-student-mcp setup and paste the block for your app, or use one of the formats from the Quick start above.

  2. Restart your AI app and ask "what's due this week?"

Run npx google-classroom-student-mcp doctor any time to check that your setup works.

Quick test without the app setup: set GOOGLE_ACCESS_TOKEN to a token from the OAuth Playground with the Classroom read only scopes. It stops working after about an hour.

Questions students ask

Here are the questions students ask, and the tool that answers each one. The answer comes back in the chat, ready to read.

Your questionToolWhat the answer holds
"What do I still need to turn in?"get_todoEvery assignment you have not handed in, with a link to open it in Classroom
"What does this assignment ask for?"get_assignment_detailsThe teacher's description, the files and links attached to it, its due date, points and your status
"Can you give me my due dates as a calendar file?"export_due_dates_calendarBuild an ICS calendar file of upcoming due dates
"What's overdue?"get_missing_assignmentsWork that was due and is still not handed in
"What's due this week across all my classes?"get_upcoming_due_datesWork that is due soon, soonest first
"What did my teacher say about my work?"get_my_gradesThe comment the teacher left on the graded work, with the score and a link to open it in Classroom
"What do I need to score to get a 90?"get_target_gradeThe points you need on the work that is left to reach that percent in each class
"What did my teachers post lately?"get_announcementsRecent announcements from every class
"What's new since yesterday?"get_whats_newNew announcements, new grades, overdue work and what is due next

Here is what the answers look like.

Sample answer for get_todo

The question "What do I still need to turn in?" goes to get_todo. It prints everything you have not handed in, and it puts the Classroom page of each one under the title so you can open the work itself.

text
0 due today, 2 overdue- Lab safety form (English) due Fri, Oct 9  link: https://classroom.google.com/c/English/course/1/courseWork/w2- Chapter 3 questions (Biology) due Mon, Oct 19  link: https://classroom.google.com/c/Biology/course/2/courseWork/w4- Essay outline (English) due Fri, Oct 23  link: https://classroom.google.com/c/English/course/1/courseWork/w1- Lab write up (Biology) due Fri, Oct 23, 11:59 p.m. UTC  link: https://classroom.google.com/c/Biology/course/2/courseWork/w3- Problem set 4 (Calculus) due Mon, Oct 26  link: https://classroom.google.com/c/Calculus/course/3/courseWork/w5

The first line counts what is due today and what is overdue. Work you already turned in is left out, and work with no due date goes last. Pass course_ids to check a few classes only. You can also pass course_name, for example Biology, to pick a class by part of its name without looking up its ID first.

Sample answer for get_missing_assignments

The question "What's overdue?" goes to get_missing_assignments. It prints the work that was due and is still not handed in, the most recent due date first.

text
- Chapter 3 questions (Biology) was due Mon, Oct 19- Lab safety form (English) was due Fri, Oct 9

Sample answer for get_whats_new

The question "What's new since yesterday?" goes to get_whats_new. It prints one digest with new announcements, new grades, overdue work and what is due next. The times in this sample are in UTC.

text
New announcements (last 7 days)- Biology (Wed, Oct 21, 8:00 a.m. UTC) Field trip permission slip due Friday- English (Tue, Oct 20, 9:00 a.m. UTC) Bring your textbook
New grades (last 7 days)- Midterm review (Calculus) graded 88/100 on Tue, Oct 20, 3:00 p.m. UTC  teacher said: Good work on the analysis. Watch the units on question 3.  link: https://classroom.google.com/c/Calculus/course/3/courseWork/w6
Overdue work- Chapter 3 questions (Biology) was due Mon, Oct 19- Lab safety form (English) was due Fri, Oct 9
Due next (14 days)- Essay outline (English) due Fri, Oct 23- Lab write up (Biology) due Fri, Oct 23, 11:59 p.m. UTC- Problem set 4 (Calculus) due Mon, Oct 26

Pass since_days to look further back and days_ahead to look further ahead.

Tools

All tools are read only.

ToolWhat it does
get_my_coursesYour active classes and their IDs
get_todoEverything assigned that you haven't turned in
export_due_dates_calendarBuild an ICS calendar file of upcoming due dates
get_upcoming_due_datesWork due soon, soonest first
get_missing_assignmentsPast due work you haven't turned in
get_assignmentsAssignments for a class with due dates and status
get_assignment_detailsEverything about one assignment: description, attachments, due date, points and status
get_submission_statusDid your teacher get your work: turned in time, late flag, grade and the teacher's comment for one assignment
get_my_gradesPoints earned on returned work for each class, with the comment the teacher left
get_target_gradePoints needed on the work left to reach a target percent
get_announcementsRecent announcements
get_course_materialsMaterials posted in a class
get_course_teachersTeachers of a class with their email when Classroom shares it
get_whats_newOne catch up digest: new announcements, new grades, overdue work and what is due next

The same list is in plain text in llms.txt, one line per tool with its description and the arguments it takes. That file ships with the package, so site indexes and AI apps that read plain text files can pick it up.

get_todo, get_assignments, get_assignment_details, get_announcements and get_course_materials print the Classroom page of each item under the title, so the AI can hand the student a direct link to the work. get_course_materials also prints the Drive link of every file attached to a material. Classroom sends a link only for published items.

Google Classroom has no overall course grade, so get_my_grades adds up graded work only and says so. When a class weights its work by grading category, it also prints a weighted percent, using only the categories that have graded work. get_target_grade still uses plain points.

get_my_grades and get_whats_new print what the teacher wrote when they returned the work, under the score, with the Classroom page of the work. get_my_grades lists the graded work that has a comment under each class.

get_todo, export_due_dates_calendar, get_upcoming_due_dates, get_missing_assignments, get_my_grades, get_target_grade and get_whats_new accept an optional list of course IDs (course_ids), so you can ask about a few classes only instead of all of them. get_upcoming_due_dates and get_whats_new also accept an optional number of days to look ahead (days_ahead). get_announcements and get_whats_new also accept an optional number of days to look back (since_days), which defaults to 7 days in the digest and means no date filter in announcements. get_announcements and get_course_teachers accept course IDs (course_ids) too. get_course_teachers also accepts course_name. get_target_grade takes a required target_percent from 0 to 100, which is the class percent you want.

get_target_grade adds up the points earned on graded work and the points the work that is left is worth. It then works out how many of those points you need to reach target_percent. Work counts as left when it has points and no grade yet, and work the teacher already returned without a grade is left out. If the target needs more points than the work left is worth, the answer says so and gives the best percent you can still reach. The server only sees the points on each piece of work, not any weighting the teacher may use, so the answer counts every point the same.

get_whats_new is the catch up digest. It prints new announcements, new grades with the comment the teacher left, overdue work and what is due next in one answer. An announcement counts as new when it was posted or changed inside the window. The date of a new grade comes from the teacher's comment on the work when there is one, otherwise from the last change to the assignment. The comment itself is printed under the grade.

Google Classroom vs Brightspace MCP

Google Classroom and D2L Brightspace are different platforms, so they need different servers. This one reads Google Classroom. The Brightspace MCP reads D2L Brightspace. Here is how they line up.

Google Classroom MCP (this one)Brightspace MCP
PlatformGoogle Classroom, the one inside Google Workspace for EducationD2L Brightspace, common in colleges and universities
Installnpx -y google-classroom-student-mcp setup, which prints the config for your app to paste, with the three values filled in when they are in your environmentnpx brightspace-d2l-mcp setup, which writes the config for you
Sign inYou make your own OAuth app in the Google Cloud console, run one time sign in, then paste the client ID, the client secret and the refresh tokenYou pick your school and sign in with your own school account in a browser window. Any sign in method your school uses works, and your password is never stored
After setupWhile your Cloud app is in testing mode, Google expires the refresh token every 7 days, so you run the login command again now and thenIt stays signed in quietly, and a browser window only opens when your school asks you to sign in again
What your school has to doNothing. Your own Google account and your own Cloud project are enough, though a school admin can block third party appsNothing. It uses your own student sign in, so no API key from an administrator is needed
Classes and workActive classes, then every assignment with its due date, its points, whether you turned it in and a link to open it in ClassroomEnrolled courses, then assignments and quizzes with the real submission status of each one
GradesPoints earned on returned work, added up per class, plus a target grade tool that says how many points you need on the work that is left. Google Classroom has no overall grade, so the percentage is only over graded workGrade breakdown per course with points, percentages and instructor comments, plus a target grade tool that tells you what you need on the work that is left
NewsRecent announcements, and a catch up digest with new announcements, new grades, overdue work and what is due nextRecent announcements, and a catch up digest that also covers newly marked work, unread discussions and quizzes you have not tried yet
Course filesMaterials posted in a class, each with a link to open it and the Drive link of every attached fileCourse modules, files, links, the syllabus, the files attached to an assignment, discussions, class lists and calendar events such as exams and labs. It can also save a course file to a folder you pick and build a calendar file of your deadlines
Read onlyYes, it can never turn in, edit or delete anythingYes, it only reads from Brightspace
Price and licenseFree forever, open source, MIT licenseOpen source, MIT license, and it runs on your own computer

Both servers only read, so neither one can hand in your work for you. If your classes are in Google Classroom, install this one. If your school runs D2L Brightspace, install the Brightspace MCP instead.

Other Brightspace servers exist too, such as brightspace-mcp-server and brightspace-mcp. The author keeps a side by side comparison of them at brightspace-mcp.netlify.app/compare.

Privacy and security

  • Your credentials stay on your computer and are only sent to Google.
  • Nothing is sent to any other server by this project.
  • Only read only permissions are requested. Remove access any time at myaccount.google.com/permissions.

Troubleshooting

MessageFix
Not signed inRun login again to get a new refresh token.
Sign in failed, expired or revokedWhile your app is in testing mode, Google expires refresh tokens after 7 days. Run login again.
Access deniedYour school's Google admin may block third party apps. Ask your admin or use a personal account.
Not foundCheck the course or item ID in your request.
Rate limitedToo many requests. Wait a minute and try again.
Google did not return a refresh tokenRemove the app from your connected apps and run login again.

Development

bash
npm installnpm run buildnpm test

Tests run against a fake Google server, so they need no account or network. Other tests check that the tool table in this README, llms.txt and glama.json still list every tool, that the tool descriptions in llms.txt and glama.json match the code, that every sample answer in this README and in llms.txt matches what the tool really prints, and that the version matches package.json.

The version that --version prints and the MCP handshake sends comes from package.json, so bump the version there and nowhere else.

The test runner needs Node 22.12 or newer. The server itself runs on Node 20 or newer.

More free student MCP servers

All free, open source and read only where they touch your accounts. Browse the full list at brightspacemcp.com/more-mcps.

This server is also listed in the Smithery, Glama and mcp.so directories.

ServerWhat it does
Brightspace MCPD2L Brightspace for AI. Due dates with real submission status, grades, a target grade calculator and course files.
Canvas MCPCanvas LMS for AI, read only. Due dates, missing work, grades and announcements.
Moodle MCPMoodle for AI, read only. Due dates, overdue work, grades and announcements.
GPA Calculator MCPGPA, grade conversion and the grade you need on the final, for AI. Works offline, no account.
Citations MCPAPA, MLA and Chicago citations from a DOI, an ISBN or typed details. No account.
Study Planner MCPExam study schedules, spaced repetition dates, pomodoro plans and assignment milestones. Works offline.
Paper Finder MCPSearch scholarly papers, find open access copies and related work through OpenAlex. No key needed.
BibTeX Reference Manager MCPClean, convert, dedupe and lint BibTeX, RIS and CSL JSON reference lists, and make cite keys. Works offline.
Open Textbook Finder MCPFind free legal copies of textbooks on OpenStax, DOAB and Open Library, look up editions by ISBN and suggest cheaper older ones.
STEM Calculator MCPChemistry and physics homework math: molar mass, balancing equations, grams to moles, unit conversion and significant figures. Works offline.
Essay Stats MCPOffline writing metrics for essays. Word and page counts, readability scores, passive voice, repeated openers, filler words, long sentences and word limit checks, so students can check their work against assignment requirements. No account, no network.
Syllabus to Calendar MCPSyllabus to calendar MCP server. Extract dates from syllabus text, build an ics calendar, expand recurring classes and merge calendars. Works offline, no account.
Job Application Tracker MCPJob application tracker MCP server. Track internships, jobs, interviews and deadlines offline, see what is coming up, and export your list as CSV or Markdown. No account and no API keys.

Picking between the two school platforms? See Google Classroom vs Brightspace MCP.

License

MIT

来源:README.md,提交 eff536b

工具

0
SourceWeft 曾在隔离沙箱中以无凭据方式启动该软件包一次,以列出其工具,但未能完成:服务器未能启动。

版本历史

9
  1. v0.1.10最新Nov 1, 2026
  2. v0.1.9Oct 30, 2026
  3. v0.1.8Oct 29, 2026
  4. v0.1.6Oct 25, 2026
  5. v0.1.5Oct 23, 2026
  6. v0.1.4Oct 21, 2026
  7. v0.1.3Oct 20, 2026
  8. v0.1.1Oct 16, 2026
  9. v0.1.0Oct 14, 2026

评分

已满足适用检查项的 50%

该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。

  • 近 30 天内可连通25 分

    请保持端点能够响应 MCP 握手;SourceWeft 每 30 天探测一次。

  • 已声明认证方式10 分

    请在注册中心条目中声明凭据请求头,或保持端点能够响应探测,以便判定其认证方式。

  • 已列出工具15 分

    请让服务器在无凭据时响应 tools/list,或发布可在沙箱中无凭据启动的软件包。

  • 描述必需15 分
  • 图标10 分
  • 文档15 分
  • 许可证10 分