谷歌课堂MCP服务器
一个MCP(模型上下文协议)服务器,将克劳德连接到你的谷歌课堂帐户,让你通过自然语言查询你的课程、作业、成绩等。
可用工具
| 工具 | 说明 |
|---|---|
list_courses | 列出所有课程,并可选择按州进行筛选 |
get_course | 获取特定课程的详细信息 |
get_assignments | 获取课程中所有已发布的作业 |
list_coursework | 列出带有可选状态筛选的课程中的作业 |
get_coursework | 获取特定任务的详细信息 |
get_assignment_materials | 获取附加到作业的驱动器文件、链接、视频和表单 |
get_upcoming_assignments | 所有活动课程的作业将在接下来的N天(默认值:7)内完成 |
get_missing_assignments | 你尚未提交的逾期作业 |
get_grades | 您在所有活动课程中的成绩 |
calculate_grade | 你的课程总成绩百分比 |
list_submissions | 查看特定作业的提交详细信息 |
list_announcements | 查看课程公告 |
所有访问权限均为 只读。服务器无法在您的Google课堂帐户中创建、修改或删除任何内容。
______________________________________________________________________
设置
先决条件
- Node.js v16或更高版本
- 启用课堂API的谷歌云项目
步骤1--克隆并安装
git clone https://github.com/SalShah20/classroom_mcp.git
cd classroom_mcp
npm install
npm run build步骤2-创建一个谷歌云项目并启用课堂API
- 首选 console.cloud.google.com
- 创建新项目(或选择现有项目)
- 在左侧菜单中,转到 API和服务>库
- 搜索 谷歌课堂API 然后单击 启用
步骤3——创建OAuth 2.0凭据
- 首选 API和服务>凭据
- 点击 创建凭据>OAuth 2.0客户端ID
- 如果系统提示,请先配置OAuth同意屏幕:
- 将用户类型设置为 外部 - 填写应用程序名称(任何东西都可以,例如“课堂MCP”) - 将您的Google帐户电子邮件添加为测试用户
- 返回凭据页面,选择 桌面应用 作为应用程序类型
- 点击 创建那么 下载JSON
- 将下载的文件重命名为
credentials.json并将其放置在项目根文件夹中
步骤4——身份验证
npm run setup-auth这将:
- 阅读你的
credentials.json - 打印URL-- 复制它并在浏览器中打开它
- 使用您的Google帐户登录并单击 允许
- 谷歌将向您显示授权码-- 复制它
- 将代码粘贴回终端,然后按Enter键
关于成功,a .env 文件是在项目根目录中创建的,其中包含您的凭据。在下一步中,您将需要这些值。
未收到刷新令牌? 如果您之前已授权该应用程序,则可能会出现这种情况。首选 myaccount.google.com/permissions,删除应用程序的访问权限,然后运行 npm run setup-auth 再一次。步骤5--将服务器添加到Claude Desktop
打开您的Claude Desktop配置文件:
- 视窗:
%APPDATA%\Claude\claude_desktop_config.json - macOS:
~/Library/Application Support/Claude/claude_desktop_config.json
添加以下条目(更新路径和凭据值):
{
"mcpServers": {
"google-classroom": {
"command": "node",
"args": ["C:/path/to/classroom_mcp/dist/index.js"],
"env": {
"GOOGLE_CLIENT_ID": "your_client_id",
"GOOGLE_CLIENT_SECRET": "your_client_secret",
"GOOGLE_REFRESH_TOKEN": "your_refresh_token"
}
}
}
}要找到你的价值观,请打开 .env 在步骤4中创建的文件——它包含所有三个具有匹配名称的值。
重新启动克劳德桌面 保存配置后。
______________________________________________________________________
验证它是否有效
重新启动Claude Desktop后,尝试询问Claude:
- “列出我的所有谷歌课堂课程”
- “这周我有什么作业要做?”
- “我有没有遗漏的作业?”
- “给我看我历史课的成绩”
- “我的生物学总成绩百分比是多少?”
- “第5章作业附有哪些材料?”
______________________________________________________________________
Google API范围
服务器请求以下只读作用域:
| 范围 | 它允许什么 |
|---|---|
classroom.courses.readonly | 查看您的课程 |
classroom.course-work.readonly | 查看作业和课程作业 |
classroom.student-submissions.me.readonly | 查看您自己的提交和成绩 |
classroom.announcements.readonly | 查看课程公告 |
classroom.courseworkmaterials.readonly | 查看课程作业附带的材料 |
classroom.topics.readonly | 查看课程主题 |
没有请求写入范围。服务器无法修改您的Google课堂帐户中的任何数据。
______________________________________________________________________
在本地运行(不带Claude Desktop)
# Build
npm run build
# Run the server directly (reads credentials from .env automatically)
npm start______________________________________________________________________
项目结构
classroom_mcp/
├── src/
│ ├── index.ts # Main server — all tools are defined here
│ └── setup-auth.ts # Interactive authentication setup
├── dist/ # Compiled output (generated by npm run build)
├── credentials.json # Your Google OAuth credentials (not committed to git)
├── .env # Your tokens after running setup-auth (not committed to git)
├── tokens.json # Legacy token file for backward compatibility (not committed to git)
├── package.json
├── tsconfig.json
└── README.md______________________________________________________________________
API 参考
课程
list_courses(courseStates?, teacherId?, studentId?)--列出课程,可选择按状态过滤(ACTIVE、ARCHIVED等)get_course(courseId)--获取一门课程的完整详细信息
作业
get_assignments(courseId)--列出课程中所有已发布的作业,包括标题、截止日期、最高分数和类型list_coursework(courseId, courseWorkStates?)--列出课程中的作业,可选择按状态筛选(已发布、草稿、已删除)get_coursework(courseId, courseWorkId)--获取特定任务的完整详细信息get_assignment_materials(courseId, courseWorkId)--获取所有附加材料(驱动器文件、链接、YouTube视频、谷歌表单)get_upcoming_assignments(days?)--下一期作业到期days所有活动课程的天数,按截止日期排序。默认为7天get_missing_assignments()--所有活动课程中未提交的逾期作业
成绩和提交
get_grades()--您在所有活动课程中的每项作业的成绩,包括assignedGrade,maxPoints,state,以及dueDatecalculate_grade(courseId)--一门课程的总成绩百分比加上每项作业的细分list_submissions(courseId, courseWorkId)--您自己为特定任务提交的详细信息
公告
list_announcements(courseId, announcementStates?)--列表公告
______________________________________________________________________
故障排除
credentials.json not found 确保文件位于项目根目录中(与 package.json),不在子文件夹中。
No refresh token received 在以下位置撤销应用程序的现有访问权限 myaccount.google.com/permissions,然后重新运行 npm run setup-auth.
Google Classroom API not initialized 服务器找不到凭据。确保 env Claude Desktop配置中的块具有所有三个值(GOOGLE_CLIENT_ID, GOOGLE_CLIENT_SECRET, GOOGLE_REFRESH_TOKEN).
服务器未出现在Claude Desktop中
- 检查中的文件路径
args指向dist/index.js并使用正确的绝对路径 - 确保你跑了
npm run build所以dist/index.js存在 - 编辑配置后完全重新启动Claude Desktop
构建错误
npm run clean
npm install
npm run build______________________________________________________________________
安全说明
- 所有作用域都是只读的——服务器无法修改您的课堂数据
- 使用存储的刷新令牌自动刷新访问令牌
- 刷新令牌存储在您的本地计算机上,从不存储在远程服务器上
