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) |
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": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| get_assignmentC | 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_syllabusB | Get a course's syllabus. Args: course_id: Course ID Returns: Course syllabus as string |
| get_courseA | Get a single course by ID. Args: course_id: Course ID include: Optional list of additional data to include Returns: Course object |
| get_quizB | Get a single quiz by ID. Args: course_id: Course ID quiz_id: Quiz ID Returns: Quiz object |
| list_assignmentsA | 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_coursesA | 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_filesA | 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_quizzesA | 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_fileB | Get a file by ID. Args: course_id: Course ID file_id: File ID Returns: File object |
| get_pageA | 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_submissionsA | 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_announcementsB | 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_discussionsC | 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_viewB | 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_enrollmentsA | 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_favoritesA | 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
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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