← Back to directory
C

Canvas MCP Server

Community
A comprehensive MCP server for Canvas LMS with student, instructor, and account administration functionality.
GitHub source repository ↗
★ 103 Stars Category · Other Popular Source revision c0646ba10ac2
40FMRS · D
Reliability
6/20
Security and permissions
6/20
Maintenance
10/20
Documentation
8/20
Setup experience
10/20

The Canvas MCP Server offers extensive Canvas LMS integration with multiple deployment options and transport modes. It covers a wide range of functionality from student to admin, and is actively maintained. However, it is an independent project without official support, so users must manage tokens carefully and be aware of security risks.

Read the FMRS scoring method →

The Canvas MCP Server is a Model Context Protocol (MCP) server for interacting with the Canvas LMS API, offering over 50 tools covering courses, assignments, enrollments, grades, and account-level management. It supports stdio and streamable-http transports and can be deployed via npx, npm, or Docker. It is designed for students, instructors, and administrators. This server is independent and not affiliated with or endorsed by Instructure.

Tools

canvas_health_check
Check API connectivity
canvas_list_courses
List all your courses
canvas_get_course
Get detailed course info
canvas_list_assignments
List course assignments
canvas_get_assignment
Get assignment details
canvas_submit_assignment
Submit assignment work
canvas_get_submission
Check submission status
canvas_list_modules
List course modules
canvas_get_module
Get module details
canvas_list_module_items
List items in a module
canvas_mark_module_item_complete
Mark items complete
canvas_list_discussion_topics
List discussion topics
canvas_get_discussion_topic
Get discussion details
canvas_post_to_discussion
Post to discussions
canvas_list_announcements
List course announcements
canvas_get_user_grades
Get your grades
canvas_get_course_grades
Get course-specific grades
canvas_get_dashboard
Get dashboard info
canvas_get_dashboard_cards
Get course cards
canvas_get_upcoming_assignments
Get due dates
canvas_list_calendar_events
List calendar events
canvas_list_files
List course files
canvas_get_file
Get file details
canvas_list_folders
List course folders
canvas_list_pages
List course pages
canvas_get_page
Get page content
canvas_list_conversations
List messages
canvas_get_conversation
Get conversation details
canvas_create_conversation
Send messages
canvas_list_notifications
List notifications
canvas_get_syllabus
Get course syllabus
canvas_get_user_profile
Get user profile
canvas_update_user_profile
Update profile
canvas_create_course
Create new courses
canvas_update_course
Update course settings
canvas_create_assignment
Create assignments
canvas_update_assignment
Update assignments
canvas_list_assignment_groups
List assignment groups
canvas_submit_grade
Grade submissions
canvas_enroll_user
Enroll students
canvas_list_quizzes
List course quizzes
canvas_get_quiz
Get quiz details
canvas_create_quiz
Create quizzes
canvas_start_quiz_attempt
Start quiz attempts
canvas_list_rubrics
List course rubrics
canvas_get_rubric
Get rubric details
canvas_get_account
Get account details
canvas_list_account_courses
List courses in an account
canvas_list_account_users
List users in an account
canvas_create_user
Create new users in accounts
canvas_list_sub_accounts
List sub-accounts
canvas_get_account_reports
List available reports
canvas_create_account_report
Generate account reports

Setup

  1. Obtain a Canvas API token: Log into Canvas → Account → Settings → Approved Integrations → New Access Token. 2. For Claude Desktop: Add the provided JSON configuration to claude_desktop_config.json, setting CANVAS_API_TOKEN and CANVAS_DOMAIN. 3. Alternatively, install globally via npm: npm install -g canvas-mcp-server, then set environment variables and run canvas-mcp-server. 4. Or use Docker: run the provided docker run command with appropriate environment variables and transport mode.
claude_desktop_config.json
{
  "mcpServers": {
    "canvas-mcp-server": {
      "command": "npx",
      "args": [
        "-y",
        "canvas-mcp-server"
      ],
      "env": {
        "CANVAS_API_TOKEN": "your_token_here",
        "CANVAS_DOMAIN": "your_school.instructure.com"
      }
    }
  }
}

Fit and risk

Best for

  • Students who want to interact with Canvas through an AI assistant
  • Instructors looking to automate course management and grading
  • Administrators needing account-level oversight and reporting

Not for

  • Users seeking official support from Instructure
  • Use cases requiring instant mobile access or offline functionality (not yet implemented)
  • Environments with extremely high token security requirements and where administrative privileges cannot be granted

Required permissions

  • Requires CANVAS_API_TOKEN with appropriate permissions: student, instructor, or admin
  • Account-level operations require administrative privileges
  • The server may read and modify courses, assignments, grades, users, and account data

Risks and side effects

  • API token leakage could lead to unauthorized access
  • Large number of tools may overload context windows, reducing efficiency
  • Prompt injection risk: tool outputs may contain malicious instructions; enforce least privilege
  • Unofficial server, not supported, may not meet institutional security policies

Troubleshooting

  1. 401 Unauthorized: Check API token and permissions
  2. 404 Not Found: Verify course/assignment IDs and access rights
  3. \"Page not found\" on course creation: Ensure using v2.2.0+ and include account_id parameter
  4. Timeout: Increase CANVAS_TIMEOUT or check network connectivity

Use cases

Students can check upcoming assignments, submit work, view grades, and participate in discussions.
Instructors can create courses and assignments, grade submissions, and enroll students.
Administrators can manage accounts, users, courses, and generate reports.

Supported clients

Claude DesktopFull support
CodexFull support
CursorFull support