mcp-classroom
Allows reading courses, assignments, submissions, and attachments; checking submission states and grades; and with Playwright automation, attaching files, turning in, and unsubmitting submissions.
Allows uploading local files to Google Drive and listing files in Drive.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@mcp-classroomList my courses and recent assignments"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
mcp-classroom
MCP server for Google Classroom — read assignments, check submission states, upload files to Drive, and view attached files. Pairs with a Claude Code skill + Playwright for browser automation to work around Google Workspace write restrictions.
What it can do
Feature | How |
List courses | MCP |
List & get assignments | MCP (slim response — no heavy file metadata) |
Check submission state & grade | MCP |
List files attached to a submission | MCP |
Upload file to Google Drive | MCP |
Attach file to submission | Playwright (API blocked by Workspace admins) |
Turn in / Mark as done | Playwright (API blocked by Workspace admins) |
Unsubmit (reclaim) | Playwright (API blocked by Workspace admins) |
Why Playwright? Google Workspace for Education admins can restrict third-party apps from modifying student submissions via the API (
@ProjectPermissionDenied). Playwright automates the browser instead, bypassing that restriction entirely.
Related MCP server: Google Classroom MCP
Requirements
Python 3.11+
Node.js (for
playwright-cli)A Google Cloud project with the Classroom API and Drive API enabled
1. Google Cloud Console setup
1.1 Create a project
Go to console.cloud.google.com
Create a new project (e.g.
mcp-classroom)
1.2 Enable APIs
In APIs & Services → Library, enable:
Google Classroom API
Google Drive API
1.3 Configure OAuth consent screen
Go to APIs & Services → OAuth consent screen
User type: External
Fill in app name, support email, developer email
Add scopes:
https://www.googleapis.com/auth/classroom.courses.readonly https://www.googleapis.com/auth/classroom.coursework.me https://www.googleapis.com/auth/classroom.coursework.students https://www.googleapis.com/auth/classroom.student-submissions.me.readonly https://www.googleapis.com/auth/classroom.rosters.readonly https://www.googleapis.com/auth/classroom.announcements.readonly https://www.googleapis.com/auth/drive.file https://www.googleapis.com/auth/drive.readonlyAdd your Google account as a test user
Publishing status: you can leave it in Testing while developing, or publish to Production to avoid the unverified app warning
1.4 Create OAuth credentials
Go to APIs & Services → Credentials
Click Create Credentials → OAuth client ID
Application type: Desktop app
Download the JSON file
Rename it to
client_secret_<...>.jsonand place it in the project root (next topyproject.toml)
2. Install the MCP server
# Clone the repo
git clone https://github.com/your-username/mcp-classroom.git
cd mcp-classroom
# Install Python dependencies
pip install -e .First run — authenticate
mcp-classroomA browser window will open asking you to authorize the app with your Google account. After approval, a token.json is saved locally (gitignored).
3. Register with Claude Code
Add the server to your Claude Code MCP config (~/.claude/claude.json or via claude mcp add):
{
"mcpServers": {
"google-classroom": {
"command": "mcp-classroom",
"args": []
}
}
}Or if running from source:
{
"mcpServers": {
"google-classroom": {
"command": "python",
"args": ["-m", "src.server"],
"cwd": "/absolute/path/to/mcp-classroom"
}
}
}4. Install Playwright (for browser automation)
npm install -g playwright-cli
npx playwright install chromiumSave your Google session (one time)
playwright-cli open --browser=chrome https://accounts.google.com/signin
# Log in manually in the browser window
playwright-cli state-save ~/classroom-auth.json
playwright-cli close5. Install the Claude Code skill (optional but recommended)
The skill tells Claude how to use the MCP + Playwright together without you having to explain the workflow every time.
Copy
skill/SKILL.mdto your Claude skills directory:~/.claude/skills/google-classroom/SKILL.mdEdit the skill file and fill in your own course IDs and assignment IDs (run
list_coursesandlist_courseworkonce to get them).Update the auth state path inside the skill to match where you saved
classroom-auth.json.Reload plugins in Claude Code:
/reload-plugins
Available MCP tools
Tool | Description |
| List active courses (slim: id, name, section, state) |
| Get full details of a course |
| List assignments (slim: id, title, state, dueDate) |
| Get assignment details + description (no teacher file attachments) |
| List your submissions — state, grade, attachment count |
| Get one submission's details |
| List titles and Drive IDs of files you've attached |
| Upload a local file to Google Drive |
| Search files in your Drive |
| Attach a Drive file to a submission (may be blocked by Workspace) |
| Attach a URL to a submission (may be blocked by Workspace) |
| Remove an attachment (may be blocked by Workspace) |
| Turn in a submission (may be blocked by Workspace) |
| Unsubmit a submission (may be blocked by Workspace) |
| List course announcements |
| List students in a course |
| List teachers in a course |
Tools marked "may be blocked by Workspace" return
403 @ProjectPermissionDeniedon institutional Google Workspace accounts. Use Playwright automation instead for those operations.
File structure
mcp-classroom/
├── src/
│ ├── server.py # MCP tool definitions
│ ├── classroom.py # Classroom API calls
│ ├── drive.py # Drive API calls
│ └── auth.py # OAuth flow + scopes
├── skill/
│ └── SKILL.md # Claude Code skill template
├── tests/
├── pyproject.toml
├── requirements.txt
└── README.mdGitignored (never commit these)
token.json— your OAuth tokenclient_secret_*.json— your OAuth client credentials
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
- 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/Cambar-Solutions/mcp-classroom'
If you have feedback or need assistance with the MCP directory API, please join our Discord server