minerva-mcp
Click on "Deploy 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., "@minerva-mcpshow my upcoming deadlines for the next 7 days"
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.
minerva-mcp
English | 简体中文
An unofficial, read-only MCP server for the University of Leeds' Minerva (Blackboard Learn Ultra) and Gradescope. It follows the approach of campus-cli. You sign in yourself in a real browser window, and the server reuses that session. Minerva data comes from the Blackboard REST API. Gradescope data comes from its web pages, because Gradescope has no API for students.
Security
You type your password and MFA code into an Edge or Chrome window yourself. The scripts never see them.
Sessions are saved in
~/.minerva-mcp/session.jsonand~/.minerva-mcp/gradescope-session.json. The browser profile is in~/.minerva-mcp/browser-profile. None of these are inside the project folder.The clients send only GET requests, and only to
minerva.leeds.ac.ukandwww.gradescope.com. When a file download redirects to Blackboard's file host, the session cookie is dropped. Nothing is ever submitted on your behalf.There is no telemetry.
Related MCP server: mun-d2l-mcp
Usage
Run these commands inside this folder:
npm install
npm run login # opens a browser; sign in to Minerva and the window closes itself
npm run login:gradescope # sign in to Gradescope (School Credentials → University of Leeds, or open any Gradescope link from Minerva)
npm run check # prints your name and current coursesA Blackboard session usually expires after a few hours. When it does, run npm run login again. If Gradescope expires, run npm run login:gradescope. The browser profile keeps Microsoft's "Stay signed in" state, so later logins usually don't ask for your password again.
Add to Claude Code
claude mcp add minerva --scope user -- node "<absolute path to this folder>/src/server.js"Or add it as JSON config, either in Claude Desktop's claude_desktop_config.json or in a project's .mcp.json:
{
"mcpServers": {
"minerva": { "command": "node", "args": ["<absolute path>/src/server.js"] }
}
}Tools
Tool | What it does |
| Check whether you're signed in and when the session expires |
| Show the signed-in user |
| List your courses, optionally filtered by code or name |
| Announcements for a course |
| Course outline and folder contents |
| Full text of one content item, plus its attachments |
| Download an attachment to |
| Gradebook: due dates, submission status, scores and feedback |
| Items due in the next N days across all current courses |
| Calendar events |
| GET any |
| Check whether you're signed in to Gradescope |
| Your Gradescope courses by term, newest first |
| Assignments in a course: submission status, score, release, due and late-due dates |
| One submission in detail: total score, per-question scores, rubric items, comments and autograder results |
| Gradescope assignments due this term in the next N days |
Environment variables
MINERVA_BROWSER: the browser channel used for login (msedgeorchrome). Edge is tried first by default.MINERVA_MCP_HOME: the session folder. Defaults to~/.minerva-mcp.MINERVA_DOWNLOAD_DIR: the download folder. Defaults to~/Downloads/minerva.
Known limitations
Tested with a student account on 2026-10-16. Courses, announcements, outlines, attachment downloads, gradebook, deadlines and calendar all work. The gradebook only has entries for graded items; items that haven't been graded yet show
graded: false.Minerva only knows the due date of a Gradescope assignment. For its submission status and score, use the
gradescope_*tools.In both the Minerva and Gradescope tools,
courseIdaccepts a short module code such asCOMP3620and matches the most recent course with that code.The Gradescope support works by parsing web pages, so a Gradescope redesign may require updating the parser.
Content inside third-party LTI tools such as Turnitin and Panopto is not available.
Please use this responsibly and follow the University's IT policies.
Contributing
See CONTRIBUTING.md. main is protected: changes go through pull requests and must pass CI (npm test). To report a security issue, see SECURITY.md.
License
This server cannot be deployed
Maintenance
Related MCP Connectors
Manage your Canvas coursework with quick access to courses, assignments, and grades. Track upcomin…
Unofficial NTNU course data: search, timetables, grades, course info, and exam logistics.
Search university course materials, your flashcards, quizzes, streak and quota. All tools read-only.
Read Lessonspace sessions, recordings, transcripts, spaces and users; launch spaces, edit sessions.
Related MCP Servers
- AlicenseAqualityAmaintenanceGives Claude, Codex, Cursor and any other MCP client read access to your courses, content, files, grades, deadlines, announcements and discussions, using your own browser session.3132 npm1MIT
- AlicenseNot gradedqualityBmaintenanceProvides local, read-only access to Memorial University's Brightspace D2L courses, enabling students to view content, grades, assignments, quizzes, announcements, and deadlines through natural language.Apache 2.0
- AlicenseNot gradedqualityAmaintenanceEnables natural-language queries across multiple schools' Canvas and Blackboard accounts for courses, notifications, assignments, grades, feedback, and schedules, with read-only access and local todo/calendar export.7MIT
- AlicenseNot gradedqualityAmaintenanceEnables AI assistants to read courses, upcoming deadlines, assignment details, grades, announcements, modules, files, inbox, and timetable from U of T Quercus and ACORN through read-only tools.1MIT