Canvas

Provides a comprehensive MCP server for Canvas LMS, enabling student, instructor, and account administration workflows.
  • typescript

66

GitHub Stars

typescript

Language

6 months ago

First Indexed

2 months ago

Catalog Refreshed

Documentation & install

Readme and setup notes from the catalogue, plus a client-ready config you can copy for your MCP host.

Installation

Add the following to your MCP client configuration file.

Configuration

View docs
{
  "mcpServers": {
    "dmontgomery40-mcp-canvas-lms": {
      "command": "npx",
      "args": [
        "-y",
        "canvas-mcp-server"
      ],
      "env": {
        "CANVAS_DOMAIN": "your_school.instructure.com",
        "CANVAS_API_TOKEN": "your_token_here"
      }
    }
  }
}

You can run and interact with the Canvas MCP Server to access student, instructor, and account administration features from Canvas LMS. This server exposes a robust API and tooling to manage courses, users, assignments, reports, and more across accounts and sub-accounts, with strong API patterns and cloud-ready deployment options.

How to use

You interact with the Canvas MCP Server through a client that sends MCP commands. The server supports both local (stdio) and remote (HTTP) configurations. Use the stdio setup when you want to run the MCP server on your machine or CI environment, and use the HTTP setup when you want to point a remote MCP endpoint at an existing server. Typical workflows include creating courses with proper account scoping, managing users across accounts, generating enrollment and activity reports, and querying Canvas data such as courses, assignments, discussions, and grades. When you start the server, supply your Canvas API token and the Canvas domain you will access, then use the client to perform actions like creating courses, enrolling users, generating reports, and listing account resources.

Key use patterns you will perform include: launching the MCP server with your credentials, connecting via an MCP client, issuing commands to list courses, create or update courses with proper account context, manage users, and generate reports for auditing and analytics. You will rely on the server’s robust API behavior: automatic retries, pagination, and clear error handling to ensure reliable interactions with Canvas data across accounts and sub-accounts.

How to install

Prerequisites: you need Node.js with npm or npx, or Docker for containerized runs. You should also obtain a Canvas API token with administrative privileges for account-level operations.

Option 1: Claude Desktop Integration (Recommended MCP Setup) add to your Claude desktop configuration.

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

Option 2: NPM Package Install and Run

# Install globally
npm install -g canvas-mcp-server

# Configure
export CANVAS_API_TOKEN="your_token_here"
export CANVAS_DOMAIN="your_school.instructure.com"

# Run
canvas-mcp-server

Option 3: Docker Run

docker run -d \
  --name canvas-mcp \
  -e CANVAS_API_TOKEN="your_token" \
  -e CANVAS_DOMAIN="school.instructure.com" \
  ghcr.io/dmontgomery40/mcp-canvas-lms:latest

Additional configuration and notes

Getting a Canvas API token involves logging in to Canvas, navigating to Account → Settings, creating a new access token with a description such as “Claude MCP Integration,” and saving the token securely. Account administrators should ensure tokens have the proper administrative privileges for account-level operations.

Empty or missing tokens will prevent the MCP server from performing account-level actions. Health checks and status endpoints help you verify that the server is running and connected to Canvas.

Production deployment supports Docker Compose and Kubernetes. Use Docker Compose to start the full stack locally, or deploy to a Kubernetes cluster with secret management for your API token and domain.

For observability and reliability, you can enable health endpoints and run periodic health checks to confirm connectivity to Canvas and the MCP server health status.

Security and maintenance notes

Store API tokens securely and rotate them regularly. Grant the minimum required privileges for your use cases. Use encrypted secret management in orchestration platforms for production deployments.

Keep your MCP server up to date with the latest release to benefit from new endpoints, fixes, and performance improvements. Run built-in tests and coverage checks during development.

Troubleshooting

Common issues include authentication failures due to invalid API tokens, 404s when referencing resources outside your account scope, and timeouts caused by network problems. Use the health-check command to verify connectivity and status.

Examples of workflows

Create a new course in a specific account, enroll a user, and generate an enrollment report across accounts. Run a sequence of MCP actions to perform day-to-day administration and analytics tasks across Canvas accounts.

Development and testing

Develop locally by cloning the project, installing dependencies, and running tests and linters. Use hot-reload development workflows to iterate on MCP functionality.

Available tools

canvas_health_check

Verify API connectivity to confirm the MCP server can reach Canvas endpoints.

canvas_list_courses

List all courses available to the authenticated user.

canvas_get_course

Retrieve detailed information for a specific course.

canvas_list_assignments

List assignments within a course.

canvas_get_assignment

Get details for a specific assignment.

canvas_submit_assignment

Submit work for an assignment.

canvas_get_submission

Check the status of a submitted assignment.

canvas_list_modules

List modules within a course.

canvas_get_module

Get detailed information about a module.

canvas_list_module_items

List items contained in a module.

canvas_mark_module_item_complete

Mark a module item as complete.

canvas_list_discussion_topics

List discussion topics in a course.

canvas_get_discussion_topic

Get discussion topic details.

canvas_post_to_discussion

Post a message to a discussion topic.

canvas_list_announcements

List course announcements.

canvas_get_user_grades

Retrieve a user’s grades.

canvas_get_course_grades

Retrieve course-wide grades.

canvas_get_dashboard

Get dashboard overview information.

canvas_get_dashboard_cards

Get course cards for the dashboard.

canvas_get_upcoming_assignments

Fetch upcoming assignments and due dates.

canvas_list_calendar_events

List calendar events for a course.

canvas_list_files

List files available in a course.

canvas_get_file

Get details for a file.

canvas_list_folders

List folders in a course directory.

canvas_list_pages

List course pages.

canvas_get_page

Get content of a course page.

canvas_list_conversations

List direct messages or conversations.

canvas_get_conversation

Get details for a conversation.

canvas_create_conversation

Create a new conversation or send a message.

canvas_list_notifications

List course notifications.

canvas_get_syllabus

Retrieve a course syllabus.

canvas_get_user_profile

Fetch a user profile.

canvas_update_user_profile

Update user profile information.

canvas_create_course

Create a new course in an account (requires account_id)

Built by
VeilStrat
AI signals for GTM teams
© 2026 VeilStrat. All rights reserved.All systems operational