loading…
Search for a command to run...
loading…
An MCP server that enables AI assistants to interact with Gradescope for course management, grading workflows, and regrade reviews. It provides instructors and
An MCP server that enables AI assistants to interact with Gradescope for course management, grading workflows, and regrade reviews. It provides instructors and TAs with tools for assignment management, individual or batch grading, and rubric manipulation.
An MCP (Model Context Protocol) server for Gradescope that exposes course management, grading, regrade review, statistics, and AI-assisted grading workflows to MCP clients.
The server is designed for instructors and TAs who want to use AI agents with real Gradescope data while keeping write operations gated behind explicit confirmation.
This repository also includes a reusable local skill at
skills/gradescope-assisted-grading/SKILL.md for human-approved grading
workflows.
uv/tmp/gradescope-mcpAll write-capable tools are preview-first and require confirm_write=True
before any mutation is executed.
| Tool | Description | Access |
|---|---|---|
tool_list_courses |
List all courses grouped by role | All |
tool_get_assignments |
List assignments for a course | All |
tool_get_assignment_details |
Get one assignment's details | All |
tool_upload_submission |
Upload files to an assignment | All |
| Tool | Description |
|---|---|
tool_get_course_roster |
Full roster grouped by role |
tool_get_extensions |
View assignment extensions |
tool_set_extension |
Add or update one student's extension |
tool_modify_assignment_dates |
Change release / due / late-due dates |
tool_rename_assignment |
Rename an assignment |
tool_get_assignment_submissions |
List assignment submissions |
tool_get_student_submission |
Read one student's submission content |
tool_get_assignment_graders |
View graders for a question |
| Tool | Description |
|---|---|
tool_get_assignment_outline |
Question hierarchy, IDs, weights, prompt text |
tool_export_assignment_scores |
Assignment score export and summary |
tool_get_grading_progress |
Per-question grading dashboard |
tool_get_submission_grading_context |
Full grading context for a question submission |
tool_get_question_rubric |
Rubric inspection without a submission ID |
tool_list_question_submissions |
List Question Submission IDs, filterable by grade state |
tool_get_next_ungraded |
Navigate to the next ungraded question submission |
| Tool | Description |
|---|---|
tool_apply_grade |
Apply rubric items, comments, and point adjustments |
tool_create_rubric_item |
Create a rubric item |
tool_update_rubric_item |
Update a rubric item |
tool_delete_rubric_item |
Delete a rubric item |
| Tool | Description |
|---|---|
tool_prepare_grading_artifact |
Save a question-specific grading artifact to /tmp/gradescope-mcp |
tool_assess_submission_readiness |
Estimate whether auto-grading is safe enough to attempt |
tool_cache_relevant_pages |
Download crop and nearby pages to /tmp/gradescope-mcp |
tool_prepare_answer_key |
Save assignment-wide answer-key notes to /tmp/gradescope-mcp |
tool_smart_read_submission |
Return a crop-first reading plan |
| Tool | Description |
|---|---|
tool_get_answer_groups |
List AI-clustered answer groups |
tool_get_answer_group_detail |
Inspect one answer group |
tool_grade_answer_group |
Batch-grade one answer group |
| Tool | Description |
|---|---|
tool_get_regrade_requests |
List regrade requests |
tool_get_regrade_detail |
Inspect one regrade request |
| Tool | Description |
|---|---|
tool_get_assignment_statistics |
Assignment-level and per-question statistics |
| URI | Description |
|---|---|
gradescope://courses |
Current course list |
gradescope://courses/{course_id}/assignments |
Assignment list for a course |
gradescope://courses/{course_id}/roster |
Roster for a course |
| Prompt | Description |
|---|---|
summarize_course_progress |
Summarize assignment status in a course |
manage_extensions_workflow |
Guide extension-management work |
check_submission_stats |
Summarize assignment submission status |
generate_rubric_from_outline |
Draft a rubric from assignment structure |
grade_submission_with_rubric |
Walk through grading one student's work |
review_regrade_requests |
Review pending regrade requests |
auto_grade_question |
Run a confidence-gated grading workflow for one question |
src/gradescope_mcp/__main__.py: loads .env, configures logging, runs the
FastMCP serversrc/gradescope_mcp/server.py: registers all tools, resources, and promptssrc/gradescope_mcp/auth.py: maintains a singleton GSConnectionGRADESCOPE_EMAIL and GRADESCOPE_PASSWORD.env is loaded automatically when starting with python -m gradescope_mcptools/courses.py: course listing and roster parsingtools/assignments.py: assignment listing and assignment write operationstools/submissions.py: uploads, submission listing, grader discoverytools/extensions.py: extension reads and writestools/grading.py: outline parsing, score exports, grading progresstools/grading_ops.py: grading context, writes, rubric CRUD, navigationtools/grading_workflow.py: /tmp/gradescope-mcp artifacts, answer keys, readiness, page
caching, smart readingtools/answer_groups.py: AI-assisted answer-group inspection and batch writestools/regrades.py: regrade listing and detail inspectiontools/statistics.py: assignment statisticstools/safety.py: preview-first confirmation helpers for mutationsconfirm_write=Falseconfirm_write=Truetool_grade_answer_group can affect many submissions at once and needs extra
caretool_get_assignment_submissions returns assignment-level Global Submission
IDstool_list_question_submissions, tool_get_next_ungraded, or grading
context tools to get the correct IDspositive or negative scoringgit clone https://github.com/Yuanpeng-Li/gradescope-mcp.git
cd gradescope-mcp
cp .env.example .env
Then edit .env with your Gradescope credentials.
uv run python -m gradescope_mcp
Example client configuration:
{
"mcpServers": {
"gradescope": {
"command": "uv",
"args": [
"run",
"--directory",
"/path/to/gradescope-mcp",
"python",
"-m",
"gradescope_mcp"
],
"env": {
"GRADESCOPE_EMAIL": "[email protected]",
"GRADESCOPE_PASSWORD": "your_password"
}
}
}
}
npx @modelcontextprotocol/inspector uv run python -m gradescope_mcp
uv run pytest -q
The repository includes one project-local skill:
gradescope-assisted-gradingIt is intended for:
mkdir -p /tmp/gradescope-mcp/skills
ln -s "$(pwd)/skills/gradescope-assisted-grading" /tmp/gradescope-mcp/skills/gradescope-assisted-grading
If you prefer copying:
mkdir -p /tmp/gradescope-mcp/skills
cp -R skills/gradescope-assisted-grading /tmp/gradescope-mcp/skills/
ls /tmp/gradescope-mcp/skills/gradescope-assisted-grading
cat /tmp/gradescope-mcp/skills/gradescope-assisted-grading/SKILL.md
Invoke it from a client with:
Use the gradescope-assisted-grading skill$gradescope-assisted-gradinggradescope-mcp/
├── .env.example
├── AGENT.md
├── DEVLOG.md
├── OPERATIONS_LOGS/
│ └── RECORDS.md
├── README.md
├── pyproject.toml
├── skills/
│ └── gradescope-assisted-grading/
│ └── SKILL.md
├── src/
│ └── gradescope_mcp/
│ ├── __init__.py
│ ├── __main__.py
│ ├── auth.py
│ ├── server.py
│ └── tools/
│ ├── __init__.py
│ ├── answer_groups.py
│ ├── assignments.py
│ ├── courses.py
│ ├── extensions.py
│ ├── grading.py
│ ├── grading_ops.py
│ ├── grading_workflow.py
│ ├── regrades.py
│ ├── safety.py
│ ├── statistics.py
│ └── submissions.py
└── tests/
├── test_answer_groups.py
├── test_assignments_and_grading_ops.py
├── test_extensions_and_answer_key.py
├── test_grading_workflow.py
└── test_write_safety.py
AGENT.md summarizes the current architecture and maintenance expectationsDEVLOG.md records the implementation historyOPERATIONS_LOGS/RECORDS.md is the mutation log template for real-account
testingДобавь это в claude_desktop_config.json и перезапусти Claude Desktop.
{
"mcpServers": {
"gradescope-mcp-server": {
"command": "npx",
"args": []
}
}
}