← Back to directory
C

Canvas MCP Server

Community
A comprehensive MCP server for Canvas LMS with student, instructor, and account administration functionality.
Category
Other #198 of 230
Stars
★ 103 Popular
Transport
stdio (local process) · Streamable HTTP
Runtime
Node.js · Docker
Credentials
API key / credential required
Last commit
Tools
53
40FMRS · D

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.

Strongest · Setup experience 10/20 Weakest · Reliability 6/20

Reliability
6/20
Security and permissions
6/20
Maintenance
10/20
Documentation
8/20
Setup experience
10/20
Why each score
Reliability 6/20
Evidence only from README claims 50+ tools and v2.2.0, but no actual source code, tests, or CI configs are provided. Cannot verify that tools exist or that init handshake works. README mentions fixes (e.g., account_id) but no test evidence. Behavior tests are claimed but not shown. Therefore, reliability is low due to lack of verifiable execution evidence.
Security and permissions 6/20
README includes a security disclosure and history, indicating awareness. But requires API token, and code may lack least privilege or confirmation for dangerous ops. README advises scoped tokens but no code evidence. There is a disclosure of a broken access control issue, but no details. No direct red flags, but without source audit, risks unknown.
Maintenance 10/20
Repo appears active with 102 stars, 4 open issues, and not archived. README shows version 2.3.0 and release history. However, no LICENSE file is present despite README claiming MIT. Dependency updates or security response channel not clear, but activity and versioning are decent.
Documentation 8/20
README is comprehensive with install, auth, tool list, examples, and troubleshooting. But lacks detailed parameter docs and limitations. Example conversations and workflows are provided, but no API rate limits or cost. Documentation is good overall, though some info may be outdated (version inconsistency).
Setup experience 10/20
README provides multiple install methods: npx, npm, Docker, plus Claude Desktop config example. Setup steps are clear, env vars specified. Docker and Kubernetes examples exist, but no verification of actual configs. Quick start is simple but requires API token. Since not executed, setup max 15, but docs give enough info.

Static review · not runListed 2026-08-07

Read the FMRS scoring method →

Fit and risk

What it can accessUses the networkChanges third-party account data

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

Setup

Before you start

Runtime:Node.js · Docker

CANVAS_API_TOKEN requiredsecret Canvas API access token, generated in Canvas under Account → Settings → Approved Integrations → + New Access Token.
CANVAS_DOMAIN required Your Canvas domain, e.g. your_school.instructure.com.
Other optional settings (9)
MCP_TRANSPORT optional Transport mode: stdio or streamable-http; stdio is the default.
MCP_HTTP_HOST optional Host for streamable-http mode, defaults to 127.0.0.1.
MCP_HTTP_PORT optional Port for streamable-http mode, defaults to 3000.
MCP_HTTP_PATH optional HTTP endpoint path, defaults to /mcp.
MCP_HTTP_STATEFUL optional Enables stateful HTTP sessions.
MCP_HTTP_JSON_RESPONSE optional Enables JSON responses over HTTP.
MCP_HTTP_ALLOWED_ORIGINS optional Allowed CORS origins list.
CANVAS_TIMEOUT optional API request timeout; increase it if you hit timeouts.
LOG_LEVEL optional Log verbosity; set to debug for debug logging.
  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"
      }
    }
  }
}

Shown for Claude Desktop. Other clients may use a different file or key (VS Code uses "servers") — the configurator below converts it.

.vscode/mcp.json
{
  "servers": {
    "canvas-mcp-server": {
      "command": "npx",
      "args": [
        "-y",
        "canvas-mcp-server"
      ],
      "env": {
        "CANVAS_API_TOKEN": "your_token_here",
        "CANVAS_DOMAIN": "your_school.instructure.com"
      }
    }
  }
}

Goes in your project's .vscode/mcp.json (VS Code uses a "servers" key).

Terminal
claude mcp add canvas-mcp-server -e CANVAS_API_TOKEN=your_token_here -e CANVAS_DOMAIN=your_school.instructure.com -- npx -y canvas-mcp-server

Run it in a terminal; replace any <…> placeholders with your own values first.

Check that it works

Confirm that canvas_health_check and canvas_list_courses appear in the client's tool list, then run canvas_health_check to prove the Canvas API connection works.

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

Things to try

Once connected, you can ask your AI assistant things like:

  • What assignments do I have due this week?
  • Help me submit my essay for English 101 Assignment 3
  • What's my current grade in Biology?
  • Create a new course called Advanced Biology in account 123

Tools 53

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

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 Desktop
Codex
Cursor

Listed from the project's documentation, not tested by this site.

Overview

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.

Similar servers

BioMCP 75 · B

One binary. One grammar. Evidence from the biomedical sources you already trust.

★ 654 · Tools 11 Compare with this →

Source revision c0646ba10ac2 Data synced 2026-10-12 Read the FMRS scoring method