canvas-mcp-lite
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
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
} |
| logging | {} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| extensions | {
"io.modelcontextprotocol/ui": {}
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| list_coursesA | List all courses the authenticated user is enrolled in or teaches. |
| get_course_detailsB | Get details for one course (code, name, dates, time zone, role). |
| get_syllabusA | Get the course's Syllabus body (Settings > Course Details > Syllabus). |
| get_front_pageA | Get the course's front page (homepage) title and body. |
| list_usersA | List users in a course by enrollment type (student, teacher, ta, observer, designer). |
| list_sectionsC | List sections in a course with student counts. |
| list_modulesA | List modules in a course with publish status and item counts. |
| get_course_structureC | Get the full module/item tree for a course in one call. |
| list_pagesB | List wiki pages in a course with publish status and last-updated time. |
| get_page_contentB | Get the full body of a specific wiki page by its URL slug. |
| list_assignmentsB | List assignments in a course with due dates and points. |
| get_assignment_detailsC | Get full details for one assignment, including description. |
| list_submissionsC | List submissions for an assignment with grade/submission status. |
| get_submission_contentA | Pull what a student actually submitted for an assignment — extracts readable text from uploaded files (PDF/DOCX/text), or returns the typed text / URL for other submission types. Also includes the submission comment thread (students often paste links there). Use this before grade_submission or grade_with_rubric so you're grading the real content. |
| list_ungraded_submissionsA | The grading queue: every submitted-but-ungraded submission in a course, grouped by assignment. Start here for 'what do I need to grade?' |
| list_missing_submissionsA | List students with missing (past-due, not submitted) work across all assignments in a course, grouped by assignment. Use for 'who hasn't turned in X?' |
| list_announcementsA | List announcements in a course, correctly distinguishing posted vs delay-scheduled. |
| list_discussion_topicsB | List discussion topics (excluding announcements) in a course. |
| get_discussion_topic_detailsB | Get full details and message body for one discussion topic. |
| list_discussion_entriesA | List top-level entries (posts) in a discussion topic, with reply counts. |
| list_course_filesC | List files uploaded to a course. |
| read_course_fileA | Fetch a course file's content and return extracted text. Supports PDF, DOCX, and plain text. Find file_id via list_course_files. |
| list_quizzesA | List classic quizzes in a course with due dates and points. Does not include New Quizzes. |
| get_quiz_detailsB | Get details for one classic quiz, including question count and time limit. |
| list_quiz_submissionsC | List student submissions for a classic quiz with scores and completion status. |
| list_rubricsC | List rubrics available in a course. |
| get_rubricA | Get a rubric's criteria, point values, and rating levels — needed to build a grade_with_rubric call. |
| list_conversationsA | List your Canvas Inbox conversations. scope: inbox, unread, starred, sent, archived. |
| get_conversation_detailsB | Get the full message thread for one conversation. |
| list_peer_reviewsB | List peer review assignments (who's reviewing whom) for an assignment. |
| get_assignment_analyticsA | Get score distribution and on-time/late/missing rates for every assignment in a course. |
| get_student_analyticsB | Get per-student engagement summary (page views, participations, on-time/late/missing) for a course. |
| create_announcementA | Create an announcement. Pass delayed_post_at (ISO-8601) to schedule it instead of posting now. |
| update_announcementB | Update an existing announcement's title, message, and/or scheduled post date. |
| create_discussion_topicC | Create a new (non-announcement) discussion topic. |
| post_discussion_entryB | Post a new top-level entry in a discussion topic. |
| reply_to_discussion_entryC | Reply to a specific entry in a discussion topic. |
| create_pageB | Create a new wiki page. Defaults to unpublished (draft) unless published=True. |
| edit_page_contentB | Replace a page's title and/or body. Only fields you pass are changed. |
| update_page_settingsC | Publish or unpublish a page. |
| create_moduleC | Create a new module (starts unpublished). |
| update_moduleC | Rename, publish/unpublish, or reposition a module. |
| add_module_itemA | Add an item to a module. item_type: File, Page, Discussion, Assignment, Quiz, SubHeader, ExternalUrl, ExternalTool. Page items need page_url; most others need content_id; ExternalUrl needs external_url. |
| update_module_itemB | Rename, publish/unpublish, reposition, or re-indent a module item. |
| create_assignmentB | Create an assignment. due_at is ISO-8601 (e.g. 2026-10-09T23:59:59-04:00). Defaults to unpublished. submission_types is a comma-separated string, e.g. "online_upload,online_text_entry" or "on_paper". |
| update_assignmentA | Update an assignment's name, description, points, due date, published state, and/or peer review settings. peer_reviews=True must be set before assign_peer_review will work on this assignment. |
| grade_submissionA | Post a grade and/or comment for one student's submission on one assignment. Use score for points-based assignments. Use grade for other grading types: 'complete'/'incomplete' (pass_fail), a letter like 'A-' (letter_grade), or '85%' (percent). Set excuse=True to mark the assignment excused for this student instead of scoring it. |
| bulk_grade_submissionsA | Post grades for many students at once on one assignment. grades: {user_id: score, ...}. Same optional comment applied to every submission. This is a single high-blast-radius call — double check the grades dict before calling. |
| grade_with_rubricB | Grade a submission using a rubric already associated with the assignment. criterion_scores: {criterion_id: points, ...} — get criterion_ids from get_rubric. criterion_comments: optional {criterion_id: comment text, ...}. |
| create_rubricA | Create a rubric. criteria_json is a JSON array string, each item: {"description": str, "points": number, "ratings": [{"description": str, "points": number}, ...]} Example: '[{"description": "Content", "points": 30, "ratings": [{"description": "Excellent", "points": 30}, {"description": "Weak", "points": 10}]}]' Pass associate_with_assignment_id to attach it to an assignment for grading immediately. |
| post_gradesA | Release hidden ("muted") grades on an assignment so students can see them. graded_only=True (default) posts only submissions that have been graded. Students are notified when grades post — use deliberately, not as a test. |
| hide_gradesB | Hide an assignment's grades from students (the inverse of post_grades). |
| send_messageA | Send a Canvas Inbox message to one or more users. recipient_user_ids is a comma-separated list of Canvas user IDs (get IDs from list_users). Set group_conversation=True to send one message all recipients can see/reply to together; otherwise each recipient gets a separate 1:1 conversation. |
| assign_peer_reviewA | Assign reviewer_user_id to peer-review reviewee_user_id's submission on this assignment. The assignment must have peer_reviews=True set first (see update_assignment). |
| upload_course_fileB | Upload a local file (from this machine) into a course's Files. folder_path is the destination folder within the course (e.g. "Week 1"), defaults to the course's root. |
| delete_pageB | Permanently delete a wiki page. This cannot be undone. |
| delete_moduleA | Permanently delete a module and all its items (the items themselves, e.g. pages, are not deleted). This cannot be undone. |
| delete_assignmentA | Permanently delete an assignment and its submissions/grades. This cannot be undone. |
| delete_announcementC | Permanently delete an announcement. This cannot be undone. |
| bulk_delete_announcementsA | Delete multiple announcements at once. announcement_ids is a comma-separated list of IDs (get them from list_announcements first). This cannot be undone. |
| delete_discussion_topicA | Permanently delete a discussion topic (or announcement — they share the same endpoint). This cannot be undone. |
| delete_rubricA | Permanently delete a rubric. This cannot be undone. |
| delete_course_fileA | Permanently delete a course file. This cannot be undone. |
| delete_peer_reviewC | Remove a previously assigned peer review. |
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/vkumar04/canvas-mcp-lite'
If you have feedback or need assistance with the MCP directory API, please join our Discord server