{"name":"io.github.chrischall/canvas-parent-mcp","slug":"chrischall-canvas-parent-mcp","title":null,"description":"Canvas LMS (Instructure) for Claude — courses, grades, assignments, planner, files","url":"https://mcp.market/server/chrischall-canvas-parent-mcp","rating":null,"grade":"B","score":83,"certified":false,"status":"active","category":"other","tags":[],"presence":{"score":28,"stars":0,"forks":0,"downloads_week":499,"last_push_at":"2026-09-17T23:33:16.000Z","license":"MIT"},"uptime":null,"claimed":false,"transport":"npm","callable_via_gateway":false,"default_price_micros":0,"repository":"https://github.com/chrischall/canvas-parent-mcp","website":null,"version":"2.0.0","remotes":[],"packages":[{"registryType":"npm","identifier":"canvas-parent-mcp","version":"2.0.0","transport":{"type":"stdio"},"environmentVariables":[{"description":"Canvas instance base URL, e.g. https://cms.instructure.com","isRequired":true,"format":"string","name":"CANVAS_BASE_URL"},{"description":"Canvas login username/email (recommended) — pair with CANVAS_PASSWORD for auto-login. No SSO/2FA.","format":"string","name":"CANVAS_USERNAME"},{"description":"Canvas password (recommended) — required iff CANVAS_USERNAME is set","format":"string","isSecret":true,"name":"CANVAS_PASSWORD"},{"description":"Canvas personal access token (advanced) — most schools have disabled token creation","format":"string","isSecret":true,"name":"CANVAS_TOKEN"},{"description":"Canvas OAuth client ID (advanced — for SSO accounts that can't use username/password)","format":"string","name":"CANVAS_CLIENT_ID"},{"description":"Canvas OAuth client secret (advanced)","format":"string","isSecret":true,"name":"CANVAS_CLIENT_SECRET"},{"description":"Canvas OAuth refresh token (advanced) — bootstrap via canvas-parent-mcp-qr-login","format":"string","isSecret":true,"name":"CANVAS_REFRESH_TOKEN"},{"description":"Friendly name for the Canvas instance (defaults to the host portion of the base URL)","format":"string","name":"CANVAS_NAME"},{"description":"Set to false to disable the on-disk session cache and re-authenticate on every process start. Defaults to enabled.","format":"string","name":"CANVAS_SESSION_CACHE"},{"description":"Absolute path for the session cache file. Defaults to $MCP_DATA_DIR/.canvas-parent-mcp/session.json.","format":"string","name":"CANVAS_SESSION_FILE"}]}],"tools":[{"name":"canvas_download_file","description":"Download a Canvas file to disk. `url` is the absolute URL from canvas_list_course_files; `destinationPath` is required.","write_action":false,"price_micros":0,"input_schema":null},{"name":"canvas_get_conversation","description":"Get a full Canvas conversation thread with all messages.","write_action":false,"price_micros":0,"input_schema":null},{"name":"canvas_get_course","description":"Get a single Canvas course with its syllabus, teachers, and term.","write_action":false,"price_micros":0,"input_schema":null},{"name":"canvas_get_profile","description":"Get the logged-in user's Canvas profile (id, name, primary_email, login_id, locale, time_zone). Useful first call to confirm credentials.","write_action":false,"price_micros":0,"input_schema":null},{"name":"canvas_get_submission","description":"Get a single submission with rubric assessment and grader comments. userId defaults to 'self'.","write_action":false,"price_micros":0,"input_schema":null},{"name":"canvas_list_announcements","description":"List announcements across one or more courses. `contextCodes` is required (e.g. [\"course_123\"]). Defaults to active-only.","write_action":false,"price_micros":0,"input_schema":null},{"name":"canvas_list_assignments","description":"List a course's assignments (with the user's submission inline). Supports the standard Canvas `bucket` filter.","write_action":false,"price_micros":0,"input_schema":null},{"name":"canvas_list_calendar_events","description":"List Canvas calendar events or assignments across selected contexts (courses/users).","write_action":false,"price_micros":0,"input_schema":null},{"name":"canvas_list_conversations","description":"List Canvas inbox conversations. Optional `scope` (unread/starred/archived/sent) and `filter` (array of context codes).","write_action":false,"price_micros":0,"input_schema":null},{"name":"canvas_list_course_files","description":"List a course's files (metadata only — use canvas_download_file with the `url` field).","write_action":false,"price_micros":0,"input_schema":null},{"name":"canvas_list_courses","description":"List active Canvas courses (with course-level grades, total scores, current grading period scores, and term).","write_action":false,"price_micros":0,"input_schema":null},{"name":"canvas_list_discussion_topics","description":"List discussion topics for a course (read-only).","write_action":false,"price_micros":0,"input_schema":null},{"name":"canvas_list_enrollments","description":"List active student enrollments with per-course grades (current_score, final_score, current_grade, final_grade, current grading period info).","write_action":false,"price_micros":0,"input_schema":null},{"name":"canvas_list_missing_submissions","description":"List past-due unsubmitted assignments for the user (or a linked observee). For an observee, courseIds is required.","write_action":false,"price_micros":0,"input_schema":null},{"name":"canvas_list_observees","description":"List students linked to your Canvas observer account. Returns an empty array for plain student tokens.","write_action":false,"price_micros":0,"input_schema":null},{"name":"canvas_list_planner_items","description":"List planner items (assignments + announcements + planner notes + calendar events) for the user or a linked observee.","write_action":false,"price_micros":0,"input_schema":null},{"name":"canvas_list_recent_submissions","description":"List recently graded submissions in a course. Defaults to a 14-day window for the calling user.","write_action":false,"price_micros":0,"input_schema":null},{"name":"canvas_list_upcoming_events","description":"List the calling user's upcoming events (Canvas's curated next-7-days view).","write_action":false,"price_micros":0,"input_schema":null}],"scan":{"score":83,"grade":"B","scanned_at":"2026-09-19T19:22:05.877Z","report":{"scannerVersion":"0.1.5","scannedAt":"2026-09-19T19:22:05.852Z","components":{"code":{"score":25,"max":25,"notes":["29 source files scanned"]},"reliability":{"score":-1,"max":20,"notes":["no gateway calls yet and no remote to probe"]},"poisoning":{"score":-1,"max":15,"notes":["tools not inspected (local package is not executed); not counted"]},"auth":{"score":6,"max":15,"notes":["static API keys via environment variables"]},"maintenance":{"score":15,"max":15,"notes":["last push 2 days ago"]},"identity":{"score":8,"max":10,"notes":["registry namespace matches repository owner","GitHub account older than a year"]}},"findings":[],"inputs":{"packages":[{"registryType":"npm","identifier":"canvas-parent-mcp","version":"2.0.0","found":true,"license":"MIT","hasInstallScripts":false,"dependencyCount":6,"publishedAt":"2026-09-17T23:35:18.561Z","repositoryUrl":"git+https://github.com/chrischall/canvas-parent-mcp.git","weeklyDownloads":499}],"repo":{"found":true,"owner":"chrischall","repo":"canvas-parent-mcp","archived":false,"pushedAt":"2026-09-17T23:33:16Z","stars":0,"forks":0,"openIssues":0,"ownerType":"User","ownerAvatarUrl":"https://avatars.githubusercontent.com/u/10564245?v=4","ownerCreatedAt":"2015-01-16T16:58:09Z","license":"MIT"},"icon":{"url":null,"source":"none"},"presence":{"stars":0,"forks":0,"downloadsWeek":499,"license":"MIT","lastPushAt":"2026-09-17T23:33:16.000Z","score":28}}}},"grade_history":[{"kind":"downgrade","fromGrade":"A","toGrade":"B","reason":"score 83","createdAt":"2026-09-19T00:28:55.204Z"}],"reviews":[]}