- Home
- MCP servers
- Canvas
Canvas
- python
69
GitHub Stars
python
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.
The Canvas MCP Server lets AI agents securely access Canvas LMS data and perform common classroom tasks through natural language prompts. It provides a scalable, extensible interface with 90+ tools and 8 agent-ready workflows, enabling students, educators, and learning designers to interact with Canvas as part of their AI-assisted workflows.
How to use
Connect to the server using an MCP-compatible client such as Claude Desktop, Cursor, Windsurf, or Claude Code, then start asking questions and issuing actions in natural language. You can retrieve course information, view assignments and grades, manage discussions and announcements, and perform bulk operations like grading or content updates. You have two main deployment options: use the hosted MCP server for quick testing and student-facing work, or run a local MCP server for FERPA-compliant workflows and full control over data.
How to install
Prerequisites: you need Python 3.10 or newer and a Canvas API token with access to your institution’s Canvas instance. You also need an MCP client to connect to the server.
# (1) Create and activate a virtual environment
python3 -m venv .venv
. .venv/bin/activate
# (2) Install the Canvas MCP Server package in editable mode
pip install -e .
# (3) Copy the environment template and customize credentials
cp env.template .env
# Edit .env to set CANVAS_API_TOKEN and CANVAS_API_URL
Optional: set up local environment variables for FERPA compliance and security as needed (see security sections for details). After configuring, you can run and test the server locally using the standard startup flow.
# (4) Start the MCP server locally
canvas-mcp-server
# (5) Test the server configuration
canvas-mcp-server --test
# (6) View the active configuration
canvas-mcp-server --config
Additional sections
Hosted server access provides a convenient way to try Canvas MCP without installing anything. To use the hosted server, provide your Canvas token and Canvas URL to your MCP client as HTTP headers when connecting to the URL https://mcp.illinihunt.org/mcp.
Security and privacy are built-in by default. Tool execution runs in a sandbox, and sensitive data can be anonymized for educator workflows. If you plan to work with FERPA-protected data, consider running a local installation to ensure data stays within your institution’s environment.
Troubleshooting tips: verify the environment file (.env) has the required CANVAS_API_TOKEN and CANVAS_API_URL, check the virtual environment is activated, and confirm the canvas-mcp-server binary is accessible in your PATH. If authentication fails, recheck token permissions in Canvas and ensure token scope matches your needs.
Available tools
canvas-week-plan
Students receive a weekly planner of due dates, submission statuses, grades, and peer reviews.
canvas-morning-check
Educators get a course health dashboard highlighting submission rates, at-risk students, and deadlines.
canvas-bulk-grading
Educators perform grading workflows with a decision tree and optional code execution safeguards.
canvas-peer-review-manager
Educators manage the full peer-review pipeline with analytics, reminders, and reports.
canvas-discussion-facilitator
Facilitate discussions by browsing posts, monitoring participation, and replying.
canvas-course-qc
Learning Designers run a pre-semester quality audit covering structure, content, publishing, and completeness.
canvas-accessibility-auditor
Learning Designers perform WCAG scans, generate prioritized reports, and guide remediation.
canvas-course-builder
Learning Designers scaffold courses from specs, templates, or existing courses.
list_courses
List all enrolled courses and provide summaries.
get_course_details
Fetch course information including syllabus and content.
list_pages
List course pages and their content.
get_page_content
Read the content of a specific course page.
list_modules
List modules within a course.
list_module_items
List items contained in a module.
list_discussion_topics
List discussion topics for a course.
list_discussion_entries
List posts within a discussion.
post_discussion_entry
Add a new discussion post.
reply_to_discussion_entry
Reply to an existing discussion post.
get_course_structure
Return the full module→items tree as JSON for a course.
scan_course_content_accessibility
Run WCAG accessibility checks on course content.
fetch_ufixit_report
Fetch institutional accessibility reports.
parse_ufixit_violations
Extract structured accessibility violations from reports.
format_accessibility_summary
Produce a readable summary of accessibility issues.
search_canvas_tools
Discover available code/API operations for bulk tasks.
execute_typescript
Run TypeScript code for token-efficient bulk operations.
bulk_grade_submissions
Batch-grade multiple submissions with a grading function.
create_assignment
Create a new assignment in a course.
update_assignment
Update details of an existing assignment.
list_submissions
List student submissions for an assignment.
get_assignment_analytics
Show analytics for an assignment or quiz.
send_conversation
Message students or groups within a course.
create_announcement
Post announcements to a course.
create_module
Create a new course module.
update_module
Modify settings of an existing module.
add_module_item
Add content to a module.
delete_module
Remove a module from a course.
create_page
Create a new course page.
edit_page_content
Update the content of a page.
update_page_settings
Publish or unpublish pages in a course.
bulk_update_pages
Apply batch operations to multiple pages.
upload_course_file
Upload a local file to a course.