Skip to main content
Glama

Canvas MCP Server

by plyght
TOOLS.md12.7 kB
# Canvas MCP Server - Complete Tool Reference ## Overview This document provides detailed information about all 25 tools available in the Canvas MCP Server. ## User & Authentication ### get_current_user Get information about the currently authenticated user. **Parameters:** None **Returns:** User object with profile information **Example Usage:** ``` Get my Canvas user information ``` **Response includes:** - User ID - Name - Email - Avatar URL - Login credentials - Locale --- ## Courses ### list_courses List all courses for the current user. **Parameters:** - `enrollment_state` (optional, string) - Filter by enrollment state - Default: `"active"` - Options: `"active"`, `"completed"`, `"invited"`, `"rejected"` **Returns:** Array of course objects **Example Usage:** ``` Show me all my active courses List all my completed courses ``` **Response includes per course:** - Course ID - Name - Course code - Workflow state - Term information - Start/end dates ### get_course Get detailed information about a specific course. **Parameters:** - `course_id` (required, number) - The ID of the course **Returns:** Course object with detailed information **Example Usage:** ``` Get details for course 12345 ``` --- ## Assignments ### list_assignments List all assignments for a specific course. **Parameters:** - `course_id` (required, number) - The ID of the course **Returns:** Array of assignment objects **Example Usage:** ``` Show me all assignments for course 12345 List homework in my Math class (course 6789) ``` **Response includes per assignment:** - Assignment ID - Name - Description (HTML) - Due date - Points possible - Submission types - HTML URL ### get_assignment Get detailed information about a specific assignment. **Parameters:** - `course_id` (required, number) - The ID of the course - `assignment_id` (required, number) - The ID of the assignment **Returns:** Assignment object with full details **Example Usage:** ``` Get details for assignment 5678 in course 1234 ``` ### get_submission Get submission details for an assignment, including grade and status. **Parameters:** - `course_id` (required, number) - The ID of the course - `assignment_id` (required, number) - The ID of the assignment **Returns:** Submission object with grade information **Example Usage:** ``` Check my submission for assignment 5678 in course 1234 What grade did I get on assignment 5678? ``` **Response includes:** - Submission ID - Grade/Score - Submission date - Workflow state - Late status - Comments - Rubric assessment ### submit_assignment Submit work for an assignment. **Parameters:** - `course_id` (required, number) - The ID of the course - `assignment_id` (required, number) - The ID of the assignment - `submission_type` (required, string) - Type of submission - `"online_text_entry"` - Text submission - `"online_url"` - URL submission - `"online_upload"` - File upload - `body` (optional, string) - Text content for text entries - `url` (optional, string) - URL for URL submissions - `file_ids` (optional, array of numbers) - File IDs for uploads **Returns:** Submission confirmation **Example Usage:** ``` Submit text "My essay content here" for assignment 5678 in course 1234 Submit URL "https://example.com/project" for assignment 5678 ``` --- ## Messaging & Conversations ### list_conversations List all conversations (messages) in the user's inbox. **Parameters:** - `scope` (optional, string) - Filter conversations by scope - Default: `"inbox"` - Options: `"inbox"`, `"unread"`, `"starred"`, `"sent"`, `"archived"` **Returns:** Array of conversation objects **Example Usage:** ``` Show me my Canvas messages List my inbox conversations Show me unread messages List starred conversations Show sent messages ``` **Response includes per conversation:** - Conversation ID - Subject - Workflow state - Last message preview - Message count - Participants ### get_conversation Get full details about a specific conversation thread. This will automatically mark the conversation as read. **Parameters:** - `conversation_id` (required, number) - The ID of the conversation **Returns:** Conversation object with all messages **Example Usage:** ``` Show conversation 9876 Get details of message thread 9876 Read message 9876 ``` ### create_conversation Create a new conversation (send a message). **Parameters:** - `recipients` (required, array of strings) - Recipient user IDs - Format: `["user_123", "user_456"]` - `subject` (required, string) - Message subject - `body` (required, string) - Message body - `course_id` (optional, number) - Course to associate with - `group_conversation` (optional, boolean) - Create as group conversation - Default: `false` - When `true`, all recipients can see each other and reply to all **Returns:** Created conversation object **Example Usage:** ``` Send a message to user_123 with subject "Question" and body "Can you help?" Create conversation with user_456 about homework Send group message to user_123 and user_456 with subject "Team Meeting" ``` ### reply_to_conversation Reply to an existing conversation. **Parameters:** - `conversation_id` (required, number) - The conversation to reply to - `body` (required, string) - Reply message content **Returns:** Updated conversation object **Example Usage:** ``` Reply to conversation 9876 with "Thank you!" ``` ### mark_conversation_read Mark a conversation as read. **Parameters:** - `conversation_id` (required, number) - The ID of the conversation **Returns:** Updated conversation object **Example Usage:** ``` Mark conversation 9876 as read ``` ### mark_conversation_unread Mark a conversation as unread. **Parameters:** - `conversation_id` (required, number) - The ID of the conversation **Returns:** Updated conversation object **Example Usage:** ``` Mark conversation 9876 as unread Keep conversation 9876 unread ``` ### star_conversation Star a conversation for easy access and reference. **Parameters:** - `conversation_id` (required, number) - The ID of the conversation **Returns:** Updated conversation object **Example Usage:** ``` Star conversation 9876 Mark conversation 9876 as important ``` ### unstar_conversation Remove star from a conversation. **Parameters:** - `conversation_id` (required, number) - The ID of the conversation **Returns:** Updated conversation object **Example Usage:** ``` Unstar conversation 9876 Remove star from conversation 9876 ``` ### archive_conversation Archive a conversation to remove it from inbox view. **Parameters:** - `conversation_id` (required, number) - The ID of the conversation **Returns:** Updated conversation object **Example Usage:** ``` Archive conversation 9876 Move conversation 9876 to archive ``` ### delete_conversation Permanently delete a conversation. **Parameters:** - `conversation_id` (required, number) - The ID of the conversation **Returns:** Deletion confirmation **Example Usage:** ``` Delete conversation 9876 Remove conversation 9876 permanently ``` --- ## Calendar & Planning ### list_calendar_events List calendar events within a date range. **Parameters:** - `start_date` (optional, string) - Start date (ISO 8601 format) - `end_date` (optional, string) - End date (ISO 8601 format) **Returns:** Array of calendar event objects **Example Usage:** ``` Show calendar events from 2024-10-01 to 2024-10-31 List events this week ``` **Response includes per event:** - Event ID - Title - Description - Start/end dates - All-day flag - Context code - HTML URL ### get_upcoming_assignments Get upcoming assignments and events. **Parameters:** None **Returns:** Array of upcoming event objects **Example Usage:** ``` What's due soon? Show my upcoming assignments ``` ### list_todos List all todo items across all courses. **Parameters:** None **Returns:** Array of todo items **Example Usage:** ``` Show my Canvas to-do list What tasks do I need to complete? ``` ### list_course_todos List todo items for a specific course. **Parameters:** - `course_id` (required, number) - The ID of the course **Returns:** Array of course-specific todo items **Example Usage:** ``` Show todos for course 1234 What do I need to do for my Math class? ``` --- ## Grades ### get_course_grades Get grades for a specific course. **Parameters:** - `course_id` (required, number) - The ID of the course **Returns:** Enrollment object with grade information **Example Usage:** ``` What's my grade in course 1234? Show grades for my English class ``` **Response includes:** - Current score - Current grade - Final score - Final grade - Grading period scores ### get_all_grades Get grades for all enrolled courses. **Parameters:** None **Returns:** Array of course/grade pairs **Example Usage:** ``` Show all my grades What are my current grades in all classes? ``` --- ## Course Content ### list_course_modules List all modules in a course. **Parameters:** - `course_id` (required, number) - The ID of the course **Returns:** Array of module objects with items **Example Usage:** ``` Show modules for course 1234 List all content in my History class ``` **Response includes per module:** - Module ID - Name - Position - Items (lessons, assignments, etc.) - Completion requirements ### list_announcements List course announcements. **Parameters:** - `course_id` (optional, number) - Filter by course ID **Returns:** Array of announcement objects **Example Usage:** ``` Show all announcements List announcements for course 1234 ``` **Response includes per announcement:** - Title - Message - Posted date - Author - Context --- ## Files ### list_files List files available to the user. **Parameters:** - `course_id` (optional, number) - Filter by course ID **Returns:** Array of file objects **Example Usage:** ``` Show all my files List files in course 1234 ``` **Response includes per file:** - File ID - Display name - Filename - Content type - Size - Created/modified dates - URL ### get_file Get detailed information about a specific file. **Parameters:** - `file_id` (required, number) - The ID of the file **Returns:** File object with download URL **Example Usage:** ``` Get file 5678 Show details for file 5678 ``` --- ## Quizzes ### list_quizzes List all quizzes in a course. **Parameters:** - `course_id` (required, number) - The ID of the course **Returns:** Array of quiz objects **Example Usage:** ``` Show quizzes for course 1234 List all tests in my Science class ``` **Response includes per quiz:** - Quiz ID - Title - Description - Quiz type - Time limit - Question count - Points possible - Due date ### get_quiz_submission Get submission details for a quiz. **Parameters:** - `course_id` (required, number) - The ID of the course - `quiz_id` (required, number) - The ID of the quiz **Returns:** Quiz submission object **Example Usage:** ``` Show my submission for quiz 9876 in course 1234 ``` **Response includes:** - Submission ID - Attempt number - Score - Started/finished times - Workflow state --- ## Social Features ### search_course_users Search for users within a course. **Parameters:** - `course_id` (required, number) - The ID of the course - `search_term` (required, string) - Name or email to search **Returns:** Array of user objects **Example Usage:** ``` Find users named "John" in course 1234 Search for "jane@example.com" in my Math class ``` **Response includes per user:** - User ID - Name - Login ID - Avatar URL - Enrollments --- ## Best Practices ### Error Handling All tools return error information if requests fail: - Authentication errors (401) - Permission errors (403) - Not found errors (404) - Rate limit errors (429) - Server errors (500+) ### Rate Limiting Canvas APIs enforce rate limits: - Default: 3000 requests per hour per token - Some endpoints have stricter limits - Responses include rate limit headers ### Data Freshness - Most data is real-time from Canvas - Some cached data may have slight delays - Grades update after instructor posts them - Calendar events sync from course schedules ### Parameter Formats - **Course IDs**: Numeric, found in Canvas URLs or from `list_courses` - **Assignment IDs**: Numeric, found in URLs or from `list_assignments` - **User IDs**: String format `user_123` for API calls - **Dates**: ISO 8601 format `YYYY-MM-DD` or `YYYY-MM-DDTHH:MM:SSZ` ### Permissions Available features depend on your Canvas role: - **Students**: Most read operations, limited write (submissions, messages) - **Teachers**: Additional grading and content management - **Admins**: Full access depending on token scope Check with your Canvas administrator if you lack expected permissions.

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/plyght/canvas-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server