YL

yuanpeng-li/gradescope-mcp

开发工具

本页由 AI 翻译,技术细节请以原文为准。 查看原文

8 stars 9 forks 质量 76 趋势 24MIT

MCP server enabling AI assistants to interact with Gradescope — 34 tools for course management, batch grading, rubric CRUD, and smart reading strategies

概览

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 every write behind a preview and an explicit confirmation step. This repository also includes a reusable skill at skills/gradescope-assisted-grading/SKILL.md for human-approved grading workflows. - 39 MCP tools (24 read-only, 11 that write to Gradescope, 4 that only write to the private local cache) - 3 MCP resources (1 static resource, 2 URI templates) - 7 MCP prompts - Python 3.10+ - MCP Python SDK v2 (mcp>=2.2, =1.8.1 - Package manager: uv - Offline test suite: uv run pytest -q (the current count is recorded in DEVLOG.

README

以下为原文 README 节选,完整内容请查看原文。

Gradescope MCP Server

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 every write behind a preview and an explicit confirmation step.

This repository also includes a reusable skill at skills/gradescope-assisted-grading/SKILL.md for human-approved grading workflows.

Current Status

  • 39 MCP tools (24 read-only, 11 that write to Gradescope, 4 that only write to the private local cache)
  • 3 MCP resources (1 static resource, 2 URI templates)
  • 7 MCP prompts
  • Python 3.10+
  • MCP Python SDK v2 (mcp>=2.2,=1.8.1
  • Package manager: uv
  • Offline test suite: uv run pytest -q (the current count is recorded in DEVLOG.md)

What The Project Provides

Read-oriented workflows

  • Course discovery and assignment listing
  • Assignment outline parsing for online and scanned-PDF assignments
  • Roster inspection with a custom HTML parser
  • Submission listing for multiple assignment types
  • Grading progress, rubric context, answer groups, regrades, and statistics
  • Workflow helpers that write grading artifacts, answer-key snapshots and page images to a private per-user cache (see Local cache; the tools print the real path)

Write-oriented workflows

  • Uploading submissions
  • Setting student extensions
  • Modifying assignment dates
  • Renaming assignments
  • Changing a programming assignment’s autograder Docker image
  • Applying grades, one at a time or in batches
  • Creating, updating, and deleting rubric items
  • Batch grading answer groups

Every tool that writes to Gradescope returns a preview unless it is called with confirm_write=True. See Write safety.

Tool Inventory

The Kind column matches the tool annotations clients see: read-only (readOnlyHint), write (changes Gradescope data; destructiveHint, has confirm_write), or local cache (reads Gradescope, writes files only to the private local cache).

Courses And Assignments

Tool Kind Description
tool_list_courses read-only List all courses grouped by role (instructor vs student)
tool_get_assignments read-only List a course’s assignments with dates; status and grade for student accounts (N/A for staff)
tool_get_assignment_details read-only One assignment’s name and dates (status and grade for student accounts)
tool_upload_submission write Upload local files as a new submission from the logged-in account (path restrictions and success check below)

Instructor / TA Management

Tool Kind Description
在 GitHub 查看完整 README

安装

npx @modelcontextprotocol/inspector uv run python -m gradescope_mcp
新手?先看 mcpskill.org 教程 →

配置

{ "mcpServers": { "gradescope": { "command": "uv", "args": [ "run", "--directory", "/path/to/gradescope-mcp", "python", "-m", "gradescope_mcp" ], "env": { "GRADESCOPE_EMAIL": "[email protected]", "GRADESCOPE_PASSWORD": "your_password" } } } }