Canvas MCP Server V2.0
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| LOG_LEVEL | No | Logging level for the server (e.g., debug). | |
| CANVAS_DOMAIN | Yes | Your Canvas instance domain (e.g., your_school.instructure.com). | |
| MCP_HTTP_HOST | No | Host for streamable-http transport. | 127.0.0.1 |
| MCP_HTTP_PATH | No | URL path for streamable-http transport. | /mcp |
| MCP_HTTP_PORT | No | Port for streamable-http transport. | 3000 |
| MCP_TRANSPORT | No | Transport mode selection: 'stdio' (best for Claude Desktop/Codex/Cursor) or 'streamable-http' (best for local HTTP/containers). | stdio |
| CANVAS_TIMEOUT | No | Timeout duration for Canvas API requests. | |
| CANVAS_API_TOKEN | Yes | Your Canvas API token, generated from Account -> Settings -> Approved Integrations -> + New Access Token. | |
| MCP_HTTP_STATEFUL | No | Whether the HTTP transport should be stateful. | true |
| MCP_HTTP_JSON_RESPONSE | No | Whether the HTTP transport should return JSON responses. | true |
| MCP_HTTP_ALLOWED_ORIGINS | No | Allowed origins for CORS in HTTP transport mode. |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Server capabilities have not been inspected yet.
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| canvas_health_checkB | Check the health and connectivity of the Canvas API |
| canvas_list_coursesC | List all courses for the current user |
| canvas_get_courseC | Get detailed information about a specific course |
| canvas_create_courseC | Create a new course in Canvas |
| canvas_update_courseC | Update an existing course in Canvas |
| canvas_list_assignmentsC | List assignments for a course |
| canvas_get_assignmentC | Get detailed information about a specific assignment |
| canvas_create_assignmentC | Create a new assignment in a Canvas course |
| canvas_update_assignmentC | Update an existing assignment |
| canvas_list_assignment_groupsC | List assignment groups for a course |
| canvas_get_submissionB | Get submission details for an assignment |
| canvas_submit_assignmentC | Submit work for an assignment |
| canvas_submit_gradeB | Submit a grade for a student's assignment (teacher only) |
| canvas_list_filesC | List files in a course or folder |
| canvas_get_fileC | Get information about a specific file |
| canvas_list_foldersC | List folders in a course |
| canvas_list_pagesC | List pages in a course |
| canvas_get_pageB | Get content of a specific page |
| canvas_list_calendar_eventsC | List calendar events |
| canvas_get_upcoming_assignmentsC | Get upcoming assignment due dates |
| canvas_get_dashboardC | Get user's dashboard information |
| canvas_get_dashboard_cardsB | Get dashboard course cards |
| canvas_get_course_gradesC | Get grades for a course |
| canvas_get_user_gradesB | Get all grades for the current user |
| canvas_get_user_profileB | Get current user's profile |
| canvas_update_user_profileC | Update current user's profile |
| canvas_enroll_userC | Enroll a user in a course |
| canvas_list_modulesC | List all modules in a course |
| canvas_get_moduleC | Get details of a specific module |
| canvas_list_module_itemsC | List all items in a module |
| canvas_get_module_itemB | Get details of a specific module item |
| canvas_mark_module_item_completeC | Mark a module item as complete |
| canvas_list_discussion_topicsC | List all discussion topics in a course |
| canvas_get_discussion_topicC | Get details of a specific discussion topic |
| canvas_post_to_discussionC | Post a message to a discussion topic |
| canvas_list_announcementsC | List all announcements in a course |
| canvas_list_quizzesC | List all quizzes in a course |
| canvas_get_quizC | Get details of a specific quiz |
| canvas_create_quizC | Create a new quiz in a course |
| canvas_start_quiz_attemptC | Start a new quiz attempt |
| canvas_list_rubricsC | List rubrics for a course |
| canvas_get_rubricC | Get details of a specific rubric |
| canvas_list_conversationsB | List user's conversations |
| canvas_get_conversationB | Get details of a specific conversation |
| canvas_create_conversationC | Create a new conversation |
| canvas_list_notificationsB | List user's notifications |
| canvas_get_syllabusC | Get course syllabus |
| canvas_get_accountC | Get account details |
| canvas_list_account_coursesC | List courses for an account |
| canvas_list_account_usersC | List users for an account |
| canvas_create_userC | Create a new user in an account |
| canvas_list_sub_accountsC | List sub-accounts for an account |
| canvas_get_account_reportsC | List available reports for an account |
| canvas_create_account_reportC | Generate a report for an account |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 54 tools
Most tools have distinct purposes targeting specific Canvas resources and actions, with clear naming like 'canvas_get_assignment' vs 'canvas_list_assignments'. However, some tools like 'canvas_get_dashboard' and 'canvas_get_dashboard_cards' could potentially overlap in functionality, and there are multiple 'get' tools that might be confused if the agent doesn't carefully read descriptions.
All tools follow a perfect 'canvas_verb_noun' pattern consistently throughout the entire set. The naming convention is uniform with snake_case, clear verbs (create, get, list, update, etc.), and specific nouns, making it highly predictable and readable.
With 54 tools, this is an extremely large set that feels heavy and overwhelming for a typical MCP server. While Canvas is a complex platform, this many tools suggests poor scoping and could lead to confusion or inefficiency in agent usage, as it's well beyond the typical 3-15 tool range for well-scoped servers.
The tool set provides comprehensive coverage of the Canvas LMS domain, including CRUD operations for accounts, courses, assignments, quizzes, users, and more, plus specialized actions like enrollment, grading, and module completion. There are no obvious gaps—it supports full lifecycle management and common workflows.