MCP server for Canvas LMS (Instructure) — read courses, grades, assignments, announcements, planner items, and conversations; download course files. Mirrors the parent/observer scope of the sibling infinitecampus-mcp.
Add to .mcp.json in your project or ~/.claude/mcp.json:
{
"mcpServers": {
"canvas": {
"command": "npx",
"args": ["-y", "canvas-parent-mcp"],
"env": {
"CANVAS_BASE_URL": "https://cms.instructure.com"
}
}
}
}
With the fetchproxy extension installed and a signed-in Canvas tab, that's enough — the MCP reads your session cookies at startup. Add CANVAS_TOKEN, CANVAS_CLIENT_*/CANVAS_REFRESH_TOKEN, or CANVAS_USERNAME/CANVAS_PASSWORD to the env block if you'd rather use one of those modes.
git clone https://github.com/chrischall/canvas-parent-mcp
cd canvas-parent-mcp
npm install && npm run build
fetchproxy fallback (recommended, zero-config). Set only CANVAS_BASE_URL. Install the fetchproxy browser extension, sign into your Canvas instance once. The MCP reads canvas_session + pseudonym_credentials cookies from your tab at startup; all API calls go directly from Node after that. Works with any auth flow (SSO/SAML/2FA included).
CANVAS_TOKEN. Most institutions have disabled this for non-admins.CANVAS_CLIENT_ID, CANVAS_CLIENT_SECRET, CANVAS_REFRESH_TOKEN. Bootstrap via canvas-parent-mcp-qr-login.CANVAS_USERNAME + CANVAS_PASSWORD. Direct Canvas accounts only (no SSO/2FA). Brittle.Precedence when multiple are set: CANVAS_TOKEN > username/password > OAuth > fetchproxy. Set CANVAS_DISABLE_FETCHPROXY=1 to opt out of the fallback.
canvas_)canvas_get_profile — your Canvas profilecanvas_list_observees — students linked to your observer accountcanvas_list_courses — your active courses with gradescanvas_get_course(courseId) — course detail with syllabus + teacherscanvas_list_assignments(courseId) — assignments in a coursecanvas_list_missing_submissions — past-due unsubmitted workcanvas_get_submission(courseId, assignmentId) — your submission with comments + rubriccanvas_list_recent_submissions(courseId) — recently graded submissions (default 14d)canvas_list_enrollments — per-course gradescanvas_list_calendar_events — calendar events / assignmentscanvas_list_upcoming_events — server-curated next 7 dayscanvas_list_planner_items — unified to-do feedcanvas_list_announcements(contextCodes) — course announcementscanvas_list_conversations — inboxcanvas_get_conversation(id) — full conversation threadcanvas_list_discussion_topics(courseId) — course discussion topicscanvas_list_course_files(courseId) — file metadatacanvas_download_file(url, destinationPath) — download a file to diskCANVAS_NAME if you want a friendly label other than the host portion of the base URL.observeeId parameter (defaults to self) — useful when an observer is checking on a linked student.共 3 个版本