Canvas MCP server
io.github.admin978/canvas-mcp·v0.1.3·4 starsLocal-first MCP server for Canvas LMS. Stdio transport, no third-party broker.
4 stars22 downloads/wk
Reviews
Write oneNobody has reviewed Canvas yet.
If you have run it, two minutes of your experience saves the next person an afternoon.
Canvas tools (10)
write = sends, deletes, buys or postsRead from the package source without running it. The installed server may list more.
get_file_infoGet file metadata including download url.
get_gradesCurrent grades. Per-course if course_id provided, otherwise all enrollments.
get_pageFetch a course wiki page by its url slug.
list_announcementsCourse announcements.
list_assignmentsList assignments in a course. Includes due_at, points, submission status.
list_coursesList enrolled courses. Returns id, name, course_code.
list_modulesCourse modules with items.
planner_itemsPlanner items for the user. ISO dates (YYYY-MM-DD).
todoUser's TODO list (ungraded assignments to look at).
upcoming_eventsUpcoming planner items (assignments, calendar events) across all courses.
Public scan report
scanner v0.1.9 · 2026-09-24 · same rubric, same numbers if you re-run it
- Code scan4 source files scanned25/25
- –Live reliabilityno gateway calls yet and no remote to proben/a
- –Tool poisoningtools not inspected (local package is not executed); not countedn/a
- Auth qualitystatic API keys via environment variables6/15
- Maintenancelast push 63 days ago12/15
- Maintainer identityregistry namespace matches repository owner6/10
How Canvas compares
Against every graded MCP server, from our own scans and uptime checks. Updated after each scan run.
- Safety score
- 75/100
- higher than 45% of 48,255 servers
- Tools
- 10
- the typical server has 7
- Tools that change things
- 0%
- typical: 0%. Fewer write tools means less an agent can break
- GitHub stars
- 4
- more than 82% of 28,688 servers
- Downloads a week
- 22
- more than 8% of 12,191 servers with a package
What its tools let an agent do: 10 read
Install Canvas in Claude Code, Cursor or VS Code
claude mcp add canvas-mcp -- uvx canvas-local-mcp
What the publisher says
From the Canvas repository's README, as published. We do not edit it. Read it on GitHub
Canvas LMS MCP Server (canvas-mcp)
<!-- mcp-name: io.github.admin978/canvas-mcp -->
Ask Claude about your Canvas courses, assignments, deadlines, modules, and grades from one place.
canvas-mcp is a local-first MCP server for Canvas LMS users (students, instructors, and MCP builders). It turns Canvas REST API actions into MCP tools that work from Claude Code, Claude Desktop, and other MCP-compatible clients.
Status: alpha. Single-user, no warranty, API surface may still shift. File issues if it breaks.
Who this is for
- Students who want one view across multiple courses
- Educators who want faster access to assignments, modules, and announcements
- MCP users who want Canvas data in local Claude workflows
What you can ask Claude
- “What assignments are due this week across all my active courses?”
- “Show upcoming events and planner items for next week.”
- “List my current grades by course.”
- “Get the modules (with items) for course 12345.”
- “Show announcements for course 12345.”
- “Fetch the page syllabus from course 12345.”
Quick start
Prerequisite: Python 3.10+.
1) Create a Canvas personal access token
In Canvas: Account → Settings → Approved Integrations → + New Access Token. Copy the token shown (Canvas does not show it again later).
2) Install
From PyPI (recommended):
pip install canvas-local-mcpOr from source:
git clone https://github.com/admin978/canvas-mcp.git && cd canvas-mcp
python3 -m venv .venv && source .venv/bin/activate
pip install -e .3) Configure ~/.canvas.env
curl -fsSL https://raw.githubusercontent.com/admin978/canvas-mcp/main/.canvas.env.example -o ~/.canvas.env
chmod 600 ~/.canvas.env
# edit ~/.canvas.env: set CANVAS_BASE_URL (institution root, no /api/v1)
# and paste the token into CANVAS_TOKENFor token safety guidance (least privilege, file permissions, rotation/revocation, and vulnerability reporting), see SECURITY.md.
4) Register in your MCP client
Claude Code:
claude mcp add canvas-local -- canvas-local-mcpClaude Desktop:
- macOS example path: ~/Library/Application Support/Claude/claudedesktopconfig.json
- Windows example path: %APPDATA%\Claude\claudedesktopconfig.json
- Linux example path: ~/.config/Claude/claudedesktopconfig.json
{
"mcpServers": {
"canvas-local": {
"command": "canvas-local-mcp"
}
}
}Tools exposed
- list_courses
- list_assignments
- list_modules
- list_announcements
- get_page
- getfileinfo
- get_grades
- planner_items
- upcoming_events
- todo
Bulk dump
canvas-local-mcp-dump downloads course files and related content for offline indexing.
canvas-local-mcp-dump # all active courses
canvas-local-mcp-dump 12345 67890 # specific course IDsOutput goes to ./canvas-dump/ by default. Override with CANVASDUMPDIR=/path/to/dir.
Local-first, privacy and token flow
- The server runs locally and uses stdio transport with your MCP client.
- Configuration is read from ~/.canvas.env (CANVASBASEURL, CANVAS_TOKEN).
- Requests go from your local server to the official Canvas API endpoints.
- No external token broker is used in the request path.
- Security guidance and disclosure policy: SECURITY.md.
Demo
No demo GIF is currently committed yet. You can still verify the workflow quickly:
Try these prompts
Shortened. The full README is on GitHub.
Nothing above is checked by us. What we check is on the safety report.
Canvas: common questions
- Is Canvas MCP server safe?
- Mostly: it is graded B (75/100). Read the Canvas safety report
- How do I install Canvas?
- It runs on your machine. Copy the Claude Code, Cursor, VS Code or Claude Desktop config from the install section.
- Does Canvas need an API key?
- Yes. The registry entry asks for
CANVAS_TOKEN. - Is Canvas maintained?
- The last commit was 104 days ago (2026-07-23). The latest release is v0.1.3.
- How does Canvas compare with other MCP servers?
- safety score 75/100 (higher than 45% of 48,255 servers); tools 10 (the typical server has 7); tools that change things 0% (typical: 0%. Fewer write tools means less an agent can break). Full comparison.