关于 Google Classroom MCP for students
面向 Google Classroom 学生的开源 MCP 服务,让 AI 应用读取课程、作业、成绩和教师评语。所有工具均为只读,并提供目标成绩规划和课程动态汇总。
主要功能
- 01查看待交、逾期和即将截止的作业
- 02读取已返还作业的成绩与教师评语
- 03计算达到目标成绩所需分数
- 04查看公告与课程材料
- 05汇总新成绩、公告和待办事项
适用场景
- 01检查各课程本周要交的作业
- 02了解已评分作业中的教师反馈
- 03规划达到目标百分比所需的分数
- 04快速查看课程近期变化和逾期事项
MCP 相关
作为 MCP 服务向 AI 客户端提供 Google Classroom 只读工具,用于访问课程、作业、成绩、公告和材料;不会提交、编辑或删除内容。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
面向学生的 Google Classroom MCP 服务
问问你的 AI,Google Classroom 里还有哪些事没做。
这是 Google Classroom MCP 服务:一个免费、开源的 MCP 服务,可让 Claude、ChatGPT、Cursor 和其他 AI 应用读取你的 Classroom 课程、作业、截止日期、未完成的作业、已批改作业的成绩及老师留下的评语、达到目标成绩所需的分数、公告、课程资料,以及补课摘要。它是只读的,绝不会提交、编辑或删除任何内容。与 Google 无关。
永久免费。无需注册,也无需订阅。你的登录信息只会发送给 Google。
立即试用
完成设置后,可以直接问:
- “我还有哪些作业没交?”
- “有哪些作业逾期了?”
- “我所有课程本周有哪些作业到期?”
- “老师对我的作业有什么评价?”
- “我需要考多少分才能拿到 90 分?”
- “从昨天起有什么新内容?”
示例回答
第三个问题会调用 get_upcoming_due_dates。它会读取你的课程,并按截止时间从早到晚为每项作业打印一行。回答示例如下:
- 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
每行都包含作业标题、课程和截止日期。已提交的作业不会列出。将 days_ahead 设为 7 并传给该工具,即可查看未来一周的作业。Classroom 使用 UTC 保存截止时间,而服务会按你所在的时区显示。更多示例回答见学生常问的问题。
使用 npx 快速开始
使用 npx 安装 Google Classroom MCP 服务,然后将它添加到你的 AI 应用中。运行 npx google-classroom-student-mcp setup,即可输出下方的配置块;如果环境中已设置三个 Google 值,这些值也会自动填入。选择你的应用。
Claude Desktop
将以下内容添加到 claude_desktop_config.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
运行以下命令:
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
或者,将与 Claude Desktop 相同的 JSON 配置块放入项目文件夹中的 .mcp.json 文件,或使用该配置块运行 claude mcp add-json。
Cursor
将以下内容放入项目文件夹中的 .cursor/mcp.json,或放入 ~/.cursor/mcp.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"
}
}
}
}
其他 MCP 应用也使用相同的 mcpServers JSON,只需将 command 设为 npx,并将 args 设为 ["-y", "google-classroom-student-mcp"]。
设置(约 10 分钟,仅需设置一次)
Google 要求每个应用都单独请求权限,因此你需要创建一个仅供自己使用的小型私有“应用”。
- 前往 Google Cloud 控制台 并创建一个项目。
- 为其启用 Google Classroom API(APIs & Services > Library)。
- 在 APIs & Services > OAuth consent screen 下,将其设置为 External,并将自己的 Google 账号添加为测试用户。
- 在 Credentials 下,创建一个类型为 Desktop app 的 OAuth 客户端 ID。复制客户端 ID 和密钥。
- 运行一次性登录:
GOOGLE_CLIENT_ID=your-id GOOGLE_CLIENT_SECRET=your-secret npx google-classroom-student-mcp login
打开它打印出的链接,批准只读访问权限,然后复制它打印出的三个值。
-
将这些值添加到 AI 应用的 MCP 配置中。运行
npx google-classroom-student-mcp setup并粘贴适用于你应用的代码块,或者使用上方快速入门中的一种格式。 -
重启 AI 应用并询问“这周有哪些作业要交?”
随时运行 npx google-classroom-student-mcp doctor,检查设置是否正常。
无需设置应用即可快速测试:将
GOOGLE_ACCESS_TOKEN设置为一个来自 OAuth Playground 的令牌,并授予 Classroom 只读范围。该令牌约一小时后会失效。
学生常问的问题
以下是学生常问的问题,以及回答每个问题的工具。答案会直接显示在聊天中,方便阅读。
| 你的问题 | 工具 | 答案包含的内容 |
|---|---|---|
| “我还有什么作业没交?” | get_todo | 你尚未提交的所有作业,并附上可在 Classroom 中打开作业的链接 |
| “有哪些作业逾期了?” | get_missing_assignments | 已到截止日期但仍未提交的作业 |
| “我所有课程这周有哪些作业要交?” | get_upcoming_due_dates | 即将到期的作业,按截止时间从近到远排列 |
| “老师对我的作业说了什么?” | get_my_grades | 老师对已评分作业留下的评论,以及分数和可在 Classroom 中打开作业的链接 |
| “我需要考多少分才能达到 90 分?” | get_target_grade | 要在每门课中达到该百分比,你需要在剩余作业中取得的分数 |
| “老师最近发布了什么?” | get_announcements | 所有课程的最新公告 |
| “从昨天到现在有什么新内容?” | get_whats_new | 新公告、新成绩、逾期作业和接下来要交的作业 |
以下是答案示例。
get_todo 的答案示例
对于“我还有什么作业没交?”这个问题,会调用 get_todo。它会列出你尚未提交的所有作业,并在每个作业的标题下方附上 Classroom 页面,方便你打开作业本身。
- 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
已提交的作业不会列出,没有截止日期的作业会排在最后。传入 course_ids 可仅检查指定的几门课程。
get_missing_assignments 的答案示例
对于“有哪些作业逾期了?”这个问题,会调用 get_missing_assignments。它会列出已到截止日期但仍未提交的作业,并按截止日期从近到远排列。
- Chapter 3 questions (Biology) was due Mon, Oct 19
- Lab safety form (English) was due Fri, Oct 9
get_whats_new 的答案示例
对于“从昨天到现在有什么新内容?”这个问题,会调用 get_whats_new。它会生成一份摘要,列出新公告、新成绩、逾期作业和接下来要交的作业。此示例中的时间均为 UTC。
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
传入 since_days 可查看更早的内容,传入 days_ahead 可查看更远期的内容。
工具
所有工具均为只读。
| 工具 | 功能 |
|---|---|
get_my_courses | 你当前的课程及其 ID |
get_todo | 所有分配给你但尚未提交的作业 |
get_upcoming_due_dates | 即将截止的作业,按截止时间从近到远排列 |
get_missing_assignments | 已过截止时间但尚未提交的作业 |
get_assignments | 某门课程的作业、截止时间和状态 |
get_my_grades | 每门课程已返还作业的得分,以及教师留下的评论 |
get_target_grade | 达到目标百分比所需的剩余作业得分 |
get_announcements | 最新公告 |
get_course_materials | 课程中发布的材料 |
get_whats_new | 一份汇总:新公告、新成绩、逾期作业和接下来要截止的作业 |
llms.txt 中也以纯文本列出了相同的工具,每个工具及其说明和所需参数各占一行。该文件随软件包一同提供,因此网站索引和读取纯文本文件的 AI 应用都可以获取它。
get_todo、get_assignments、get_announcements 和 get_course_materials 会在每个条目的标题下打印其 Classroom 页面链接,让 AI 可以直接把作业链接发给学生。get_course_materials 还会打印材料中每个附件的 Drive 链接。Classroom 只会为已发布的条目提供链接。
Google Classroom 没有课程总成绩,因此 get_my_grades 只统计已评分作业的得分,并会注明这一点。
get_my_grades 和 get_whats_new 会在分数下方打印教师批改作业时写下的内容,以及该作业的 Classroom 页面链接。get_my_grades 会在每门课程下列出带有评论的已评分作业。
get_todo、get_upcoming_due_dates、get_missing_assignments、get_my_grades、get_target_grade 和 get_whats_new 都接受可选的课程 ID 列表(course_ids),因此你可以只查询几门课程,而非全部课程。get_upcoming_due_dates 和 get_whats_new 还接受可选的前瞻天数(days_ahead)。get_whats_new 也接受可选的回溯天数(since_days),默认值为 7 天。get_announcements 也接受课程 ID(course_ids)。get_target_grade 需要一个介于 0 到 100 之间的 target_percent,表示你希望达到的课程百分比。
get_target_grade 会汇总已评分作业的得分,以及剩余作业的总分,然后计算你需要获得多少分才能达到 target_percent。有分值但尚未评分的作业会计入剩余作业;教师已返还但尚未评分的作业则不计入。如果达到目标所需的分数高于剩余作业的总分,结果会说明这一点,并给出你仍能达到的最高百分比。服务只能看到每份作业的分值,看不到教师可能采用的任何加权方式,因此会将每一分视为同等分值。
get_whats_new 会汇总近期动态,在一条回复中列出新公告、新成绩及教师留下的评论、逾期作业和接下来要截止的作业。公告在指定时间范围内发布或更新时,会被视为新公告。新成绩的日期取自教师对作业的评论(如果有),否则取自作业的最近修改时间。评论本身会显示在成绩下方。
Google Classroom 与 Brightspace MCP
Google Classroom 和 D2L Brightspace 是不同的平台,因此需要不同的服务。这个服务读取 Google Classroom。Brightspace MCP 读取 D2L Brightspace。以下是它们的对比。
| Google Classroom MCP(本项目) | Brightspace MCP | |
|---|---|---|
| 平台 | Google Classroom,即 Google Workspace for Education 中的平台 | D2L Brightspace,常见于高校 |
| 安装 | npx -y google-classroom-student-mcp setup,会输出供你粘贴到应用中的配置,并在环境中有这三个值时将它们填好 | npx brightspace-d2l-mcp setup,会为你写入配置 |
| 登录 | 你需要在 Google Cloud 控制台创建自己的 OAuth 应用,运行一次登录,然后粘贴客户端 ID、客户端密钥和刷新令牌 | 选择你的学校,然后在浏览器窗口中使用自己的学校账户登录。学校使用的任何登录方式都适用,而且不会存储你的密码 |
| 设置后 | Cloud 应用处于测试模式期间,Google 每 7 天就会让刷新令牌过期,因此你需要不时再次运行登录命令 | 登录状态会静默保持,只有学校要求你重新登录时才会打开浏览器窗口 |
| 学校需要做什么 | 什么都不用。你自己的 Google 账户和 Cloud 项目就足够了,不过学校管理员可以阻止第三方应用 | 什么都不用。它使用你自己的学生账户登录,因此不需要管理员提供 API 密钥 |
| 课程和作业 | 活跃课程,以及每项作业的截止日期、分值、是否已提交和在 Classroom 中打开作业的链接 | 已选课程,以及作业和测验,并显示每项的实际提交状态 |
| 成绩 | 按课程汇总已返还作业的得分,并提供目标成绩工具,告知你剩余作业需要获得多少分。Google Classroom 没有总成绩,因此百分比仅按已评分的作业计算 | 按课程显示成绩明细,包括分数、百分比和教师评论,并提供目标成绩工具,告知你剩余作业需要达到什么成绩 |
| 消息 | 最近的公告,以及一份补看摘要,涵盖新公告、新成绩、逾期作业和接下来到期的事项 | 最近的公告,以及一份补看摘要,还涵盖新批改的作业、未读讨论和你尚未尝试的测验 |
| 课程文件 | 课程中发布的资料,每项资料都有打开链接,附件也都附有 Drive 链接 | 课程模块、文件、链接、教学大纲、作业附件、讨论、班级名单,以及考试和实验课等日历事件。它还可以将课程文件保存到你选择的文件夹,并生成包含截止日期的日历文件 |
| 只读 | 是,绝不会提交、编辑或删除任何内容 | 是,只会读取 Brightspace 中的内容 |
| 价格和许可证 | 永久免费、开源,采用 MIT 许可证 | 开源,采用 MIT 许可证,可在你自己的计算机上运行 |
这两个服务都只能读取内容,因此都不能替你提交作业。如果你的课程在 Google Classroom 中,请安装这个服务。如果你的学校使用 D2L Brightspace,请改为安装 Brightspace MCP。
其他 Brightspace 服务也存在,例如 brightspace-mcp-server 和 brightspace-mcp。作者在 brightspace-mcp.netlify.app/compare 提供了它们的并排对比。
隐私与安全
- 你的凭据保留在自己的计算机上,且只会发送给 Google。
- 本项目不会向任何其他服务器发送数据。
- 仅请求只读权限。你可以随时在 myaccount.google.com/permissions 移除访问权限。
故障排除
| 消息 | 解决方法 |
|---|---|
| 未登录 | 再次运行 login 以获取新的刷新令牌。 |
| 登录失败、已过期或已撤销 | 当你的应用处于测试模式时,Google 会在 7 天后使刷新令牌过期。再次运行 login。 |
| 访问被拒绝 | 学校的 Google 管理员可能会屏蔽第三方应用。请联系管理员或使用个人账号。 |
| 未找到 | 检查请求中的课程或项目 ID。 |
| 请求频率受限 | 请求过多。等待一分钟后重试。 |
| Google 未返回刷新令牌 | 从已连接的应用中移除此应用,然后再次运行 login。 |
开发
npm install
npm run build
npm test
测试会对接虚拟 Google 服务,因此无需账号或网络。其他测试会检查本 README、llms.txt 和 glama.json 中的工具列表是否仍包含每个工具,llms.txt 和 glama.json 中的工具说明是否与代码一致,本 README 和 llms.txt 中的每个示例回答是否与工具实际输出一致,以及版本是否与 package.json 一致。
--version 打印的版本和 MCP 握手发送的版本都来自 package.json,因此只需在该文件中更新版本,别处无需更改。
测试运行器需要 Node 22.12 或更高版本。服务本身可在 Node 20 或更高版本上运行。
更多免费的学生 MCP 服务
这些服务均免费、开源,且在访问你的账号时均为只读。请在完整列表中浏览。
此服务也列于 Smithery、Glama 和 mcp.so 目录中。
| 服务 | 功能 |
|---|---|
| Brightspace MCP | 面向 AI 的 D2L Brightspace。包含实际提交状态的截止日期、成绩、目标成绩计算器和课程文件。 |
| Canvas MCP | 面向 AI 的 Canvas LMS,只读。包含截止日期、未完成作业、成绩和公告。 |
| Moodle MCP | 面向 AI 的 Moodle,只读。包含截止日期、逾期作业、成绩和公告。 |
| GPA Calculator MCP | 面向 AI 的 GPA、成绩换算,以及期末考试所需成绩计算器。可离线使用,无需账号。 |
| Citations MCP | 根据 DOI、ISBN 或手动输入的详细信息生成 APA、MLA 和 Chicago 引用。无需账号。 |
| Study Planner MCP | 考试学习计划、间隔重复日期、番茄钟计划和作业里程碑。可离线使用。 |
| Paper Finder MCP | 通过 OpenAlex 搜索学术论文、查找开放获取版本和相关研究。无需密钥。 |
在两种学校平台之间犹豫不决?请参阅 Google Classroom 与 Brightspace MCP 对比。
许可证
MIT
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。