canvas-viewer-mcp
Provides read-only access to Canvas LMS coursework, including assignments hidden from the dashboard, with details such as due dates, submission state, module position, publication state, and associated assignment bodies, files, discussions, and announcements.
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., "@canvas-viewer-mcpFind assignments missing due dates in my Canvas courses"
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.
canvas-viewer-mcp
A read-only MCP server that exposes Canvas LMS coursework to an AI assistant — including the assignments the Canvas dashboard hides from you.
Why this exists
The Canvas dashboard and the /api/v1/planner/items endpoint behind it are both
views over one field: due_at. That works right up until an instructor stops
maintaining due dates — and then coursework silently disappears from your
dashboard. It isn't marked late or flagged. It simply isn't there.
This server refuses to trust due_at alone. It enumerates coursework with no
date filter and reports every item it finds, carrying the fields that reveal
what is actually going on: due_at, unlock_at, lock_at, submission state,
module position, publication state, and updated_at. Assignments with no due
date are reported like any other, because here their absence of a date is the
whole point.
The server reports; it does not conclude. There is no bucketing, no
staleness heuristic, and no guess at what is "really" due. Instructors who
don't maintain due_at usually still say "due Friday" in the assignment text
or an announcement, so the server also exposes assignment bodies, files,
discussions, and announcements — the evidence — and leaves the reading of it
to the model that asked.
This is a deliberate split. Classification logic frozen into a server is wrong in ways you cannot see from the outside, and this is a tool whose entire purpose is to stop things going missing.
Related MCP server: Canvas LMS MCP Server
Scope
Strictly read-only. There are no write paths in the codebase — not disabled, absent. It cannot submit work, post to a discussion, or alter your Canvas account.
Status
Under construction. See PLAN.md for the build stages.
Configuration
See .env.example. The Canvas API token is never read from inside
the repository; supply it via CANVAS_TOKEN, a CANVAS_TOKEN_FILE path (how the
container receives it), or ~/.config/canvas-viewer-mcp/token.
Generate a token in Canvas under Account → Settings → Approved Integrations → "+ New Access Token". It grants full access to your Canvas account, so treat it like a password.
License
MIT
This server cannot be deployed
Maintenance
Related MCP Connectors
Read-only access to Epivo's live course catalogue for AI agents.
Connect your Moodle to AI assistants: courses, content, grading and reports from the chat.
- HAVNOAuthapp.havnre
Read-only AI access to HAVN properties, leads, tasks, files, media, and analytics.
- OpenOakOAuthorg.openoak
Secure AI access to OpenOak tasks, notes, and Kanban boards.
Related MCP Servers
- FlicenseAqualityNot gradedmaintenanceEnables interaction with Canvas LMS courses and assignments directly from your LLM, allowing you to retrieve, search, and summarize course information, check due dates, and access assignment details without leaving your AI assistant.4111 npm-
- AlicenseAqualityCmaintenanceEnables AI systems to interact with Canvas Learning Management System data, allowing users to access courses, assignments, quizzes, planner items, files, and syllabi through natural language queries.227MIT
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants to access Canvas LMS course content, including assignments, modules, announcements, and files, to help students manage their coursework.7 npmISC
- FlicenseAqualityCmaintenanceProvides read-only access to Canvas LMS, enabling users to view active courses, grades, and upcoming assignments through natural language queries.2-