@rishblob/canvas-mcp-server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| CANVAS_BASE_URL | No | Canvas host URL (example: https://school.instructure.com). | https://houstonisd.instructure.com |
| CANVAS_API_TOKEN | Yes | Canvas bearer token for API authentication. |
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
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| list_coursesA | List all courses for the current user. Optionally filter by enrollment type and course state. |
| get_courseA | Get detailed information about a specific Canvas course, including syllabus, term, teachers, and student count. |
| list_studentsB | List all students enrolled in a specific Canvas course, including their email and enrollment details. |
| get_course_settingsB | Get the settings for a specific Canvas course. |
| list_assignmentsB | List assignments for a Canvas course |
| get_assignmentA | Get details of a specific Canvas assignment |
| create_assignmentC | Create a new assignment in a Canvas course |
| update_assignmentB | Update an existing assignment in a Canvas course |
| list_submissionsB | List submissions for a Canvas assignment |
| get_submissionB | Get a specific student submission for a Canvas assignment |
| grade_submissionC | Grade a student submission for a Canvas assignment |
| get_user_profileA | Get the current user's profile |
| get_userB | Get a specific user's profile |
| list_course_usersC | List users in a course |
| list_announcementsB | List announcements for a course |
| create_announcementB | Create an announcement in a course |
| list_modulesC | List modules in a course |
| get_moduleC | Get a specific module |
| list_module_itemsB | List items in a module |
| list_discussionsC | List discussion topics in a course |
| get_discussionC | Get a specific discussion topic |
| create_discussionB | Create a discussion topic |
| list_discussion_entriesB | List entries (replies) in a discussion |
| list_calendar_eventsC | List calendar events |
| create_calendar_eventD | Create a calendar event |
| list_filesC | List files in a course |
| get_fileC | Get file details |
| list_foldersA | List folders in a course |
| list_pagesB | List wiki pages in a course |
| get_pageC | Get a specific wiki page |
| create_pageC | Create a wiki page |
| update_pageC | Update a wiki page |
| list_enrollmentsC | List enrollments in a course |
| get_user_enrollmentsC | List enrollments for a user |
| list_conversationsA | List conversations for the current user |
| get_conversationB | Get a specific conversation |
| create_conversationC | Send a new message |
| list_todo_itemsA | List the current user's todo items |
| search_coursesB | Search for courses across the account |
| get_course_activity_streamB | Get recent activity for a course |
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 40 tools
Each tool targets a distinct Canvas resource and action, such as list vs get vs create for courses, assignments, discussions, and pages. Even similar tools like list_students and list_course_users are differentiated by student-only versus all users. No two tools appear to do the same thing.
Tool names uniformly follow a verb_noun snake_case pattern (list_*, get_*, create_*, update_*, grade_*, search_*). The resource name is consistently placed after the verb, making the API highly predictable.
At 40 tools, the surface is quite large and exceeds the 25+ threshold for a coherent set. While Canvas has many resource types, the count feels heavy and may overwhelm agents compared with a more focused subset.
Core workflows like listing courses, assignments, submissions, and grading are covered, and many resources have list/get/create actions. However, most resource types lack update/delete operations (e.g., announcements, calendar events, discussions, modules, files), leaving notable lifecycle gaps.