- Home
- MCP servers
- Canvas
Canvas
- 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)