Classroom Browser MCP
# Classroom Browser MCP
A local, read-only MCP server for Google Classroom accounts that cannot grant OAuth access to the official Classroom API. It automates the same Classroom web pages you can already open and stores the browser session only in a dedicated local profile.
This is specifically for users who cannot use Google Cloud Platform (for any reason) or use their google account to sign in to *unauthorised* services (specifically students under DETNSW).
## What it exposes
- `classroom_auth_status`
- `classroom_find_assessment` - searches Classwork and Stream posts, expands matching items, and reads attached PDFs/Google Docs
- `classroom_search_activity` - searches posts and Classwork, expands comments, and distinguishes direct teacher replies from related teacher-posted resources
- `classroom_list_courses`
- `classroom_list_classwork`
- `classroom_get_classwork`
- `classroom_search_classwork`
There are deliberately no submission, comment, upload, or deletion tools.
## Setup
```powershell
npm install
npm run login
```
An Edge window opens. Sign in with the school account, verify Classroom loads, and close the window. Then build the server:
```powershell
npm run build
npm run verify
npm run verify -- "Assessment Task 4 Advanced"
```
Add it to an MCP client using this command (replace the path if needed):
```json
{
"mcpServers": {
"google-classroom": {
"command": "node",
"args": ["D:\\classroom-mcp\\dist\\server.js"]
}
}
}
```
## Configuration
Environment variables are optional:
| Variable | Default | Purpose |
| --- | --- | --- |
| `CLASSROOM_PROFILE_DIR` | `~/.classroom-browser-mcp` | Dedicated browser profile location |
| `CLASSROOM_BROWSER_CHANNEL` | `msedge` | Playwright browser channel, such as `chrome` or `msedge` |
| `CLASSROOM_BROWSER_EXECUTABLE` | unset | Exact browser executable path; overrides the channel |
| `CLASSROOM_LOCALE` | `en-AU` | Browser locale |
## Limits and privacy
This is UI automation, not an undocumented Google API. It can break when Classroom changes its page structure, and your school's policies still apply. The browser profile contains session cookies, so keep it private. Credentials are entered directly into Google's page and are never read or stored by this project.
MCP calls are always headless. Only `npm run login` opens a visible window for the one-time Google sign-in.
Only use it with an account and coursework you are authorized to access. If the school explicitly forbids browser automation, do not use it without permission.
TDQS
Scored across 7 tools
Each tool has a clearly distinct purpose: listing courses, checking auth, listing classwork, getting specific classwork, searching classwork titles, finding assessments with details, and searching activity for teacher replies. There is no overlap.
All tools follow a consistent 'classroom_verb_noun' pattern (e.g., classroom_list_courses, classroom_get_classwork, classroom_search_activity). Naming is predictable and clear.
With 7 tools, the set is well-scoped for a Classroom browsing assistant. Each tool covers a distinct operation without being too few or too many.
The tool set provides full coverage for browsing Google Classroom: authentication, course listing, classwork retrieval and search, assessment lookups, and activity search for teacher interactions. No obvious gaps for the stated purpose.