canvaslmsmcpkit
v2.1.1
Published
The MCP for Canvas LMS — connect any AI agent to Canvas. Deadlines, grades, submissions, files, and announcements over your own personal access token.
Maintainers
Readme
canvaslmsmcp
The MCP for Canvas LMS. Connect any AI agent (Claude, Cursor, VS Code, Windsurf, Codex) to Canvas over your own personal access token. Monitor deadlines and grades, submit your work, download materials, and read your inbox — no browser, no scraping.
Live at canvaslmsmcp.com.
Why this one
Most Canvas integrations are thin REST wrappers with one tool per endpoint. This ships composite, agent-first tools that answer the questions you actually ask:
term_snapshot— your entire active term (every course, assignment, due date, submission state, and live grade) in one GraphQL round-trip, not dozens of REST calls.pass_status— for each course, whether you have a passing grade banked yet (requires ≥1 graded submission). The moment it flips, an end-of-term fail can't sink you.whats_due— smart deadline triage across all courses, merged from the planner feed + missing submissions, taggedoverdue / today / soon / this-week.submit_assignment— submit text, a URL, or a file (full 3-step upload) with automatic pre-flight checks on the lock window and submission type.download_course_materials— bulk-pull every file in a course to a local folder for exam cram.
Plus grades, assignments, files, modules, announcements, inbox, discussions, and a raw graphql passthrough. Rate-limit-aware, pagination handled, role-scoped.
Quickstart
1. Get a Canvas API token
Canvas → Account → Settings → Approved Integrations → + New Access Token. Copy it.
2. Add to your MCP client
{
"mcpServers": {
"canvas": {
"command": "npx",
"args": ["-y", "canvaslmsmcp"],
"env": {
"CANVAS_API_TOKEN": "your-token",
"CANVAS_BASE_URL": "https://school.instructure.com",
"CANVAS_ROLE": "student"
}
}
}
}CANVAS_BASE_URL is your institution origin only — no /api/v1. CANVAS_ROLE (student / teacher / all) filters the exposed tools; omit for all.
3. Ask your agent
“What’s due this week?” · “Have I banked a pass in every class?” · “Download all CS 101 slides to ~/cram” · “Submit paper.pdf to Assignment 3.”
Tools
| Tool | What it does |
|---|---|
| term_snapshot | ★ Whole term in one GraphQL call |
| pass_status | ★ Banked-pass detection per course |
| whats_due | ★ Smart cross-course deadline triage |
| submit_assignment | ★ Submit text/URL/file with pre-flight checks |
| download_course_materials | ★ Bulk-download a course's files |
| list_courses / get_course | Enrollments; syllabus + external-tool detection |
| get_grades | current + final score per course |
| list_assignments / get_assignment / get_submission | Assignment + submission detail |
| list_missing_submissions | Past-due, unsubmitted |
| list_modules / list_files / download_file | Course materials |
| list_announcements / inbox / send_message / post_discussion_reply | Communication |
| list_calendar_events / create_calendar_event | Calendar |
| mark_planner_complete / add_submission_comment | State |
| graphql / rate_limit_status / whoami | Power / diagnostics |
Run npx canvaslmsmcp --help for the full list.
CLI
npx canvaslmsmcp --help # list tools + config snippet
npx canvaslmsmcp --version
CANVAS_API_TOKEN=... CANVAS_BASE_URL=https://school.instructure.com npx canvaslmsmcpSecurity
Runs entirely on your own personal access token, scoped to your own permissions — it cannot reach other users, admin data, or exam answer keys (Canvas enforces this server-side). Treat the token like a password; revoke it anytime at Canvas → Settings.
Telemetry
This package sends anonymized, opt-out usage pings so the maintainer can see which tools matter and catch breakage. Each ping is a cumulative snapshot: a random install id, package version, MCP client name, CANVAS_ROLE, a SHA-256 hash of your Canvas host, your node + OS, and per-tool call counts. It never sends your token, your actual host, grades, assignments, messages, or any course content.
Opt out completely:
CANVAS_MCP_TELEMETRY=0 # or DO_NOT_TRACK=1License
MIT © Gabriele Muratori. Not affiliated with Instructure.
