Canvas LMS MCP Server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| CANVAS_BASE_URL | No | The base URL of your Canvas institution (e.g., https://your-institution.instructure.com) | https://canvas.instructure.com |
| CANVAS_API_TOKEN | Yes | Your Canvas API token (can be obtained from your Canvas account settings) |
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| get_assignmentB | Get a single assignment by ID. Args: course_id: Course ID assignment_id: Assignment ID Returns: Assignment object |
| get_course_modulesC | Get modules for a course. Args: course_id: Course ID include: Optional list of additional data to include per_page: Number of items per page Returns: List of Module objects |
| get_course_syllabusC | Get a course's syllabus. Args: course_id: Course ID Returns: Course syllabus as string |
| get_courseB | Get a single course by ID. Args: course_id: Course ID include: Optional list of additional data to include Returns: Course object |
| get_quizC | Get a single quiz by ID. Args: course_id: Course ID quiz_id: Quiz ID Returns: Quiz object |
| list_assignmentsB | List assignments for a course. Args: course_id: Course ID bucket: Bucket to filter assignments by (past, overdue, undated, ungraded, unsubmitted, upcoming, future) order_by: Field to order assignments by (due_at, position, name) include: Optional list of additional data to include (e.g., ["submission"] to see grade status) page: Page number (1-indexed) items_per_page: Number of items per page Returns: PaginatedResponse containing assignments |
| list_coursesB | List courses that the user is actively enrolled in. Args: page: Page number (1-indexed) items_per_page: Number of items per page Returns: PaginatedResponse containing courses |
| list_filesC | List files for a course or folder. Args: course_id: Optional Course ID folder_id: Optional Folder ID include: Optional list of additional data to include page: Page number (1-indexed) items_per_page: Number of items per page Returns: PaginatedResponse[File] |
| list_planner_itemsB | List planner items for the authenticated user. Args: start_date: start date in ISO 8601 format end_date: end date in ISO 8601 format context_codes: list of context codes (e.g., ["course_123"]) page: Page number (1-indexed) items_per_page: Number of items per page Returns: PaginatedResponse[PlannerItem] |
| list_quizzesB | List quizzes for a course. Args: course_id: Course ID include: Optional list of additional data to include page: Page number (1-indexed) items_per_page: Number of items per page Returns: PaginatedResponse containing quizzes |
| get_module_itemsC | Get items for a module. Args: course_id: Course ID module_id: Module ID |
| get_fileC | Get a file by ID. Args: course_id: Course ID file_id: File ID Returns: File object |
| get_pageB | Get a single page by its URL slug. Args: course_id: Course ID page_slug: Page URL slug (e.g., "kurshandbok", "examination") Returns: Page object with title, body (HTML), and metadata |
| list_submissionsB | List the current user's submissions for a course, including grades and feedback. Args: course_id: Course ID include: Optional list of additional data (e.g., ["assignment", "submission_comments"]) page: Page number (1-indexed) items_per_page: Number of items per page Returns: PaginatedResponse containing submissions with grades and comments |
| list_announcementsC | List announcements for one or more courses. Args: course_ids: List of course IDs to fetch announcements for page: Page number (1-indexed) items_per_page: Number of items per page Returns: PaginatedResponse containing announcements |
| list_discussionsB | List discussion topics for a course. Args: course_id: Course ID page: Page number (1-indexed) items_per_page: Number of items per page Returns: PaginatedResponse containing discussion topics |
| get_discussion_viewC | Get the full view of a discussion topic including all replies. Args: course_id: Course ID discussion_id: Discussion topic ID Returns: Full discussion view with participants and all entries |
| list_calendar_eventsB | List calendar events for courses. Args: context_codes: List of context codes (e.g., ["course_4538"]) start_date: Optional start date in ISO 8601 format end_date: Optional end date in ISO 8601 format page: Page number (1-indexed) items_per_page: Number of items per page Returns: PaginatedResponse containing calendar events |
| get_enrollmentsB | Get the current user's enrollments including grades. Returns: Dict with enrollment items including course IDs and grade data |
| list_assignment_groupsC | List assignment groups for a course (shows grade weighting/categories). Args: course_id: Course ID Returns: Dict with assignment group items |
| get_tabsC | Get available tabs/navigation items for a course. Args: course_id: Course ID Returns: Dict with tab items showing available course sections |
| list_favoritesB | List the current user's favorite courses. Returns: Dict with favorite course items |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/ahnopologetic/canvas-lms-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server