Canvas LMS MCP. Manage users, courses, and assignments with a single conversation.
Works with every AI agent you already use
…and any MCP-compatible client
Just plug in your AI agents and start using Vinkius.
Canvas LMS MCP Server manages all your course administration, user accounts, and content within Canvas directly through your AI agent.
List courses, create assignments, update student profiles, and manage account roles using natural language commands—no need to click through complex menus.
What your AI agents can do
Create admin
Assigns administrative privileges to a specific user within an account.
Create assignment
Adds a new, graded assignment directly into the course content.
Create conversation
Starts a brand-new message thread within Canvas messaging.
You can list, create, read, update, and delete courses, modules, assignments, quizzes, files, and discussion topics.
Create user profiles, manage account roles, list admins, and retrieve specific student or organizational details.
View a student's activity stream (get_activity_stream), check their 'To Do' items (get_todo), and grade submitted assignments using grade_submission.
List accounts, get sub-accounts for a specific domain, or update organizational details across the institution.
Ask AI about this MCP
Supported MCP Clients
Waiting for input…
Canvas LMS: 45 Tools for Course & User Management
This collection of tools gives your agent access to every administrative function in Canvas—from creating content to managing roles and users.
019e3874create admin
Assigns administrative privileges to a specific user within an account.
019e3874create assignment
Adds a new, graded assignment directly into the course content.
019e3874create conversation
Starts a brand-new message thread within Canvas messaging.
019e3874create course
Sets up and publishes an entirely new course shell in the LMS.
019e3874create discussion topic
Posts a new discussion topic within a specified course area.
019e3874create quiz
Generates and publishes a new quiz instance for the course.
019e3874create role
Defines and sets up a specific user role within an organizational account.
019e3874create sis import
Initiates the process to import student information system (SIS) data into Canvas.
019e3874create user
Creates a brand-new, active user profile account in Canvas.
019e3874delete course
Archives or permanently removes an existing course from the catalog.
019e3874execute graphql
Allows running custom GraphQL queries against the entire Canvas database for specialized data retrieval.
019e3874get account
Retrieves detailed metadata and structure information for a specific institutional account.
019e3874get activity stream
Fetches the current list of actions performed by the user in Canvas.
019e3874get assignment
Pulls all details for a single, existing assignment instance.
019e3874get conversation
Retrieves all message history and metadata from a specific conversation thread.
019e3874get course
Gets the full structure and details for an existing course ID.
019e3874get file
Downloads or views metadata for a specific file within Canvas storage.
019e3874get folder
Retrieves the contents and structure of a specified folder.
019e3874get page
Fetches the full content and metadata for a specific page in a course.
019e3874get quiz
Retrieves all question banks, settings, and results for a given quiz ID.
019e3874get sis import status
Checks if the SIS data import job is still running or if it completed successfully.
019e3874get sub accounts
Lists all affiliated sub-accounts linked to a primary organizational account.
019e3874get todo
Retrieves the user's current list of administrative or academic 'To Do' items.
019e3874get user
Shows detailed profile information and enrollment status for a specific Canvas user ID.
019e3874grade submission
Submits a grade score against a student's assignment attempt.
019e3874list accounts
Shows a list of all institutional accounts connected to the domain.
019e3874list admins
Returns a list of users who currently hold admin privileges in an account.
019e3874list announcements
Retrieves all recent official announcements posted to the course or account.
019e3874list assignments
Shows a list of every assignment associated with an active course.
019e3874list conversations
Retrieves all message threads from the user's general inbox view.
019e3874list courses
Lists every course currently visible to the user in their primary catalog view.
019e3874list discussion topics
Retrieves all active discussion topics for a specific course area.
019e3874list files
Lists the files saved in a given folder or within a course module.
019e3874list folders
Shows all sub-folders contained within a specific directory structure.
019e3874list module items
Retrieves the full list of items (pages, assignments) inside a defined module.
019e3874list modules
Lists all structured modules used to organize content within a course.
019e3874list pages
Retrieves the titles and locations of all pages in a specific course.
019e3874list quizzes
Shows all quizzes that have been created for a given course.
019e3874list roles
Retrieves all defined roles (e.g., TA, Instructor) available in an account.
019e3874list submissions
Lists every submission attempt a student made for a particular assignment.
019e3874submit assignment
Sends a completed file or text entry as a final grade submission for an assignment.
019e3874update account
Modifies general settings and details across the entire Canvas account structure.
019e3874update assignment
Edits the parameters (due date, points, instructions) of an existing assignment.
019e3874update course
Makes changes to the overall settings or structure of a course.
019e3874update user
Modifies specific profile data, names, or permissions for an existing user account.
Choose How to Get Started
Build a custom MCP for your own tools, or connect a ready-made integration from our catalog.
Build Your Own
Turn any API into an MCP. Import a spec, define Agent Skills, or deploy with MCPFusion.
- Import from OpenAPI, Swagger, or YAML specs
- Create Agent Skills with progressive disclosure
- Deploy to edge with MCPFusion framework
- Built in DLP, auth, and compliance on every call
- Real time usage dashboard and cost metering
- Publish to catalog or keep private
Make Your AI Do More
Start with Canvas LMS, then connect any of our 4,700+ other servers whenever your AI needs more. One click, no limits.
- Use this MCP plus 4,700+ others, all in one place
- Add new capabilities to your AI anytime you want
- Every connection is secured and compliant automatically
- Track usage and costs across all your servers
- Works with Claude, ChatGPT, Cursor, and more
- New servers added to the catalog every week
What you can do with this MCP connector
Canvas LMS MCP Server manages everything in your Canvas account directly through your AI agent. You can run admin tasks—the kind that usually takes clicking through a dozen menus—using natural language commands. It's built to handle the full lifecycle of courses, users, and content across institutional accounts.
Course Structure and Content Management
The list_courses tool shows every course visible in your primary catalog view; you can then grab the full structure and details for any specific class using get_course. You don't just read courses, either. You can set up an entirely new course shell with create_course, or archive/remove a whole thing using delete_course.
Need to adjust how old classes run? Use update_course to modify overall settings and structure. The system lets you manage content depth by listing structured modules with list_modules, then fetching the full list of items—pages, assignments—inside a module via list_module_items. You can read specific pages using get_page or grab titles and locations for all pages in a course with list_pages.
For assignments, you've got it covered: you can see every assignment active in a course using list_assignments, pull details for one assignment instance using get_assignment, or create brand-new ones with create_assignment. You'll need to update them sometimes; use update_assignment to change due dates, points, or instructions. When students turn stuff in, you can list all their attempts through list_submissions and submit the final grade score using grade_submission.
Quizzes, Discussions, and Files
When it comes to quizzes, you can see every quiz created for a course using list_quizzes. You'll generate new ones with create_quiz, or retrieve all question banks, settings, and results for an existing one with get_quiz. For discussions, the list_discussion_topics tool retrieves all active topics in a specific area; you can then post a brand-new thread using create_discussion_topic.
You can also check out general messaging. Use list_conversations to see your whole inbox, or get detailed message history and metadata from any single chat thread using get_conversation; remember, you'll start new chats with create_conversation.
The content storage is easy too. You can list files saved in a module or folder using list_files, and view the metadata for a specific file by running get_file. If you need to know what's inside a directory, use get_folder after getting the contents via list_folders.
User Accounts, Roles, and Admin Rights
Managing people is key. The create_user tool builds brand-new user profiles in Canvas. You can update specific profile details—like names or permissions—for any existing account using update_user. To check on a person's record, use get_user to see their detailed profile and enrollment status. For admin work, you don't have to guess; the server lets you list all users who hold admin privileges with list_admins, or assign new admin powers directly using create_admin.
You can define roles—like TA or Instructor—by running create_role and retrieving a full list of available roles using list_roles.
The system also helps you manage the institution's structure. Use list_accounts to see all connected institutional accounts, and if your domain has affiliates, get_sub_accounts lists them for you. You can modify general settings across the entire account framework with update_account, or get detailed metadata about a specific institutional account using get_account.
Data Flow and Progress Tracking
Need to bring in student data? Run create_sis_import to start the process, then check its status—running or done—with get_sis_import_status. You can track what's happening across the board by checking the user's current list of administrative or academic 'To Do' items using get_todo, or fetching a timeline of all actions taken in Canvas via get_activity_stream.
Finally, for highly specialized data retrieval that doesn't fit standard commands, you can run custom GraphQL queries against the whole database using execute_graphql.
How Canvas LMS MCP Works
- 1 Subscribe to the Canvas LMS server and provide your required credentials: the Canvas Domain and Personal Access Token.
- 2 Direct your AI client (Claude, Cursor, etc.) to execute a specific task using natural language (e.g., 'Create a new quiz for Advanced Math').
- 3 The agent invokes the appropriate tool (
create_quiz), sends the data to Canvas, and returns the confirmation or updated record.
The bottom line is that you tell your AI client what administrative action needs doing in Canvas, and it executes the API calls for you.
Who Is Canvas LMS MCP For?
This server is built for people who spend too much time clicking through complex LMS dashboards. It helps administrators who need to provision users across multiple sub-accounts or educators who just want to quickly check assignments without getting lost in the course menu.
Use list_accounts and get_sub_accounts to manage user creation, assign roles (create_role), and update organizational settings for entire departments.
Quickly list courses (list_courses) or create new content like assignments (create_assignment) and quizzes (create_quiz) without manual setup time.
Retrieve student work submissions (list_submissions), check the activity stream, and grade assignments using grade_submission.
What Changes When You Connect
- Speed up grading. Instead of manually checking grades across multiple tabs, run
list_submissionsand then usegrade_submissionto record scores directly from your agent's output. - Automate user onboarding. When a department grows, you don't navigate the console; you just tell your AI client to
create_user, and it handles setting up the profile and initial access. - Control course structure instantly. Need to add a quiz? Use
create_quizinstead of clicking through module settings. You get the quiz published and ready in seconds. - Maintain organizational integrity. If you need to adjust global rules or create new departments, use
list_accounts, thenget_sub_accountsto map out the structure before callingupdate_account. - Get context immediately. Instead of guessing what happened last week, run
get_activity_streamand get a clean summary of recent changes in your account or course.
Real-World Use Cases
Student Enrollment Audit
The administrator needs to confirm which users are active across all departments. They ask the agent to list_accounts first, then use get_sub_accounts on each one to map out every linked department and verify that user accounts exist for everyone who should be enrolled.
Course Update Workflow
A professor realizes the due date for a major project is wrong. Instead of finding the course, navigating to assignments, and editing it, they simply say 'Update Assignment X' and call update_assignment, specifying the new deadline and point value.
Content Gap Analysis
A developer needs to know what materials are in a specific unit. They ask the agent to list_modules for the target course, then use get_page on each module item and list_files to get a complete inventory of existing content.
Onboarding New Staff
A new TA starts. The manager asks the agent to create_user for them, then immediately calls create_role to assign 'TA' status and ensures they get added to the correct course using update_user.
The Tradeoffs
Trying to find a user profile manually
The user logs into Canvas, clicks on 'Users,' filters by department, scrolls through pages of names, and finally finds the ID they needed.
→
Just ask your agent: 'Show me details for User X.' It runs get_user immediately. You get the profile data without any clicking.
Updating course settings piece by piece
The admin needs to change the default grade weight, then update the syllabus page, and finally adjust the main module sequence—all requiring multiple logins and different menus.
→
Use get_course first to check current settings. Then use a single call: 'Update Course Y with these changes.' The agent handles all necessary updates using update_course.
Asking for too much data at once
The user tries to dump the entire database contents by running generic queries, leading to an overwhelming and unstructured mess of records.
→
Use specific tools. If you need submissions, call list_submissions. If you need account structure, use get_sub_accounts. Don't guess; ask for what you know.
When It Fits, When It Doesn't
Use this server when your task involves managing structural data or records (users, courses, assignments) across multiple distinct steps. The key is that the process requires reading current state (get_course, list_courses) and then making a definitive change (create_quiz, update_user). Don't use it if you just need to read unstructured content—for example, reading a long essay submission might require opening the file viewer. For simple viewing tasks like 'What is my current activity?' use get_activity_stream. But if you need to act on that data, this server gives you the tools to do it. If your task can be solved by just browsing the web interface normally, don't bother with an AI agent; stick to the native Canvas site. This is for automation.
Independent Platform Disclaimer: Vinkius is an independent platform and is not affiliated with, endorsed by, sponsored by, verified by, or otherwise authorized by Canvas LMS. All third-party trademarks, logos, and brand names are the property of their respective owners. Their use on this website is strictly for informational purposes to identify service compatibility and interoperability.
VINKIUS INFRASTRUCTURE
Cloud Hosted
Managed infra
V8 Isolated
Sandboxed per request
Zero-Trust Proxy
No stored credentials
DLP Enforced
Policy on every call
GDPR Compliant
EU data residency
Token Compression
~60% cost reduction
Works with Claude, ChatGPT, Cursor, and more
The Model Context Protocol standardizes how applications expose capabilities to LLMs. Instead of operating in isolation, your AI gains direct access to external platforms, live data, and real-world actions through secure, standardized connections.
This server provides 45 capabilities that interface natively with Claude, ChatGPT, Cursor, and any MCP client. No middleware. No custom integration required.
Available Capabilities
Administrative tasks shouldn't require logging into five different tabs.
Today, updating a course can feel like assembling IKEA furniture: you go to 'Courses,' click on the specific class, then find the 'Modules' tab, open that module, and finally hit 'Assignments.' If you need to adjust the syllabus or change user access, you often have to switch between five different menus just to get one small thing done.
With this MCP server, your agent handles the whole sequence. You tell it: 'Change Course X's due date and add a new quiz.' It runs `get_course` for context, calls `update_course`, then executes `create_quiz`. You get the job finished in three seconds, not ten minutes of clicking.
Canvas LMS MCP Server: Managing Course Content
Think about listing assignments. Manually, you navigate to a course, go into 'Assignments,' and then run through every single filter dropdown to see what's active this semester—it’s tedious and prone to human error.
Now, just ask it: 'List all the assignments for Course ID 123.' The agent runs `list_assignments` and spits out a clean list immediately. You don't touch a menu; you get the data.
Common Questions About Canvas LMS MCP
How do I check if my SIS import job is finished using the get_sis_import_status tool? +
You use get_sis_import_status to see the current status. It tells you if the data transfer is 'Running,' or if it's 'Completed.' If it says complete, you know you can proceed with other tools.
Can I create a new course shell using the create_course tool? +
Yes. create_course sets up the entire structure for a brand-new Canvas class. You just need to specify the title and department details when you call it.
What is the best way to update a user profile? Do I use get_user or update_user? +
To see what's currently there, use get_user. To make changes—like fixing a name or changing their permissions—you must call update_user.
Does list_modules show me everything in the course? +
No. list_modules shows you the container structure (Module 1, Module 2). To see the actual items inside those modules, you have to use list_module_items.
If I use `list_roles` or try to run `create_admin`, what level of account permission is required? +
You need 'Administrator' rights on the target account. The system checks your token's scope before allowing any role creation or assignment changes, so always confirm your permissions first.
For retrieving bulk or complex course data, is `list_courses` better than `execute_graphql`? +
execute_graphql gives you maximum flexibility and performance for custom datasets. Use it when simple list calls don't capture all the related metadata you need in one query.
Before calling `update_assignment`, how can I confirm that the assignment exists and is editable? +
You must run get_assignment first. This retrieves the full details, confirming the ID's validity and showing you if the course or account structure has changed since the data was last available.
When using the `grade_submission` tool, what information is required beyond just the submission ID? +
The tool requires a specific user context (the student who submitted it) and the actual grade value you want to apply. You can't just submit an ID; you have to provide the final score.
Can I see my personal upcoming tasks and deadlines? +
Yes! Use the get_todo tool to retrieve your current todo items or get_activity_stream to see recent updates and announcements across your courses.
How do I list all assignments for a specific course? +
Simply provide the Course ID to the list_assignments tool. The agent will return a list of all assignments configured for that specific course environment.
Is it possible to create or update courses through this integration? +
Yes. You can use create_course to instantiate new courses under an account, or update_course to modify names and codes of existing ones.
Use it with your favorite AI tools
Connect this server to Cursor, Claude, VS Code, and more.
More in this category
Kintone
Manage custom business apps, records, and workflows via Kintone.
Blackboard Learn
Manage courses, announcements, attendance, and grades directly from your AI agent via Blackboard Learn.
Trengo
Manage customer conversations across WhatsApp, email, chat, and social from one shared inbox your whole team can use.
You might also like
Transloadit
Manage your media processing pipelines, encode videos, resize images, and oversee your file cloud instantly via an AI agent.
Replicate Alternative
Run ML models via Replicate — generate images, text, audio and video from community models, track predictions and explore collections from any AI agent.
HowLongToBeat
Universal game completion data — get gameplay hours for any video game via AI.