canvas-control
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| CANVAS_TOKEN | Yes | Your Canvas API token. Required for authentication. | |
| CANVAS_BASE_URL | Yes | The base URL of your Canvas instance, e.g., https://your-school.instructure.com | |
| CANVAS_TIMEZONE | No | Your timezone, e.g., America/Los_Angeles. Defaults to America/New_York if not set. | America/New_York |
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 |
|---|---|
| list_courses | List Canvas courses. By default shows only active enrollments. Args: include_all: If True, include concluded/past courses too. |
| get_upcoming_assignments | Get upcoming assignments that are due within a time window. Args: course_id: Optional course ID to filter. If omitted, checks all active courses. days_ahead: Number of days ahead to look for due dates (default 14). |
| get_announcements | Get recent announcements from Canvas courses. Args: course_id: Optional course ID to filter. If omitted, gets from all active courses. limit: Maximum number of announcements to return (default 10). |
| get_calendar_events | Get calendar events within a time window. Args: course_id: Optional course ID to filter. If omitted, gets events from all contexts. days_ahead: Number of days ahead to look (default 14). |
| get_syllabus | Get the syllabus for a specific course. Args: course_id: The Canvas course ID. |
| get_grades_summary | Get grade summary for enrolled courses. Args: course_id: Optional course ID to filter. If omitted, shows all active courses. |
| get_grades_detailed | Get detailed per-assignment grades for a specific course. Args: course_id: The Canvas course ID. |
| list_course_files | List all files in a Canvas course. Args: course_id: The Canvas course ID. |
| download_file | Download a single file from Canvas by file ID. Args: file_id: The Canvas file ID. destination: Optional local path. Defaults to ~/Downloads/. |
| search_course_files | Search for files in a Canvas course by name, extension, or folder. Use this as a preview step before downloading — show the user what would be downloaded and let them confirm. Args: course_id: The Canvas course ID. query: Case-insensitive substring to match in file display name or filename. file_type: File extension to filter by (e.g. "pdf", "docx"). Leading dot is stripped. folder: Case-insensitive substring to match in the Canvas folder path. |
| download_selected_files | Download a batch of specific Canvas files to a local directory. Skips files that already exist at the destination (safe to re-run). Args: file_ids: List of Canvas file IDs to download (from search_course_files). destination: Local directory path to save files to. ~ is expanded. |
| set_download_path | Save a download path to the config file for future use. Args: destination: Local directory path to persist. ~ is expanded. course_id: Optional course ID. If provided, saves a per-course path. If omitted, saves the global default download path. |
| sync_course_files | Sync (download) all files for a Canvas course to the local filesystem. Behaves like "git pull" for course files — downloads new/changed files and skips unchanged ones. Set force=True to re-download everything. Args: course_id: The Canvas course ID to sync. force: If True, overwrite existing files even if unchanged. sources: Content sources to include. Defaults to all (files, assignments, discussions, pages, modules). destination: Optional local directory path to save files to. ~ is expanded. Overrides the configured course path and default destination. |
| complete_assignment | Complete or submit an assignment in Canvas. When online submission is available and no submission payload is provided,
this tool responds with |
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/tomtranjr/canvas-control'
If you have feedback or need assistance with the MCP directory API, please join our Discord server