- Home
- MCP servers
- Canvas LMS
Canvas LMS
- python
7
GitHub Stars
python
Language
4 months ago
First Indexed
2 months ago
Catalog Refreshed
Documentation & install
Readme and setup notes from the catalogue, plus a client-ready config you can copy for your MCP host.
Installation
Add the following to your MCP client configuration file.
Configuration
View docs{
"mcpServers": {
"ahnopologetic-canvas-lms-mcp": {
"command": "uvx",
"args": [
"canvas-lms-mcp"
],
"env": {
"CANVAS_BASE_URL": "https://your-institution.instructure.com",
"CANVAS_API_TOKEN": "YOUR_CANVAS_API_TOKEN"
}
}
}
}You can access Canvas LMS data through a lightweight MCP server that bridges your Canvas instance with AI tools. This server exposes core Canvas data such as courses, assignments, quizzes, modules, syllabus, and files, enabling you to query and explore your educational data from compatible MCP clients.
How to use
Connect your MCP client to the Canvas LMS MCP Server to start querying data. You can request information about courses, assignments, quizzes, modules, and files, or list planner items within a date range. Use the client’s standard MCP workflows to search, filter, and paginate results. The server runs locally by default and exposes its API through an interactive interface you can access in your browser at the provided docs path.
Typical usage patterns include listing your active courses, fetching a course’s syllabus and modules, listing assignments and quizzes for a course, and listing files in a course or folder. You can also retrieve planner items for a given date range. Use these capabilities to build educational data queries that power your AI workflows or integration projects.
How to install
Prerequisites you need before installation:
- Python 3.13+
- Canvas LMS API token
- uv package manager (recommended)
Choose an installation method from the options below.
Option 1: Install with uvx (Recommended) to run in an isolated environment without permanent installation.
uvx canvas-lms-mcp
Option 2: Install from Source to run locally in a virtual environment.
Clone the project, create a virtual environment, and install dependencies.
# Clone the repository
git clone https://github.com/yourusername/canvas-lms-mcp.git
cd canvas-lms-mcp
# Install uv if you don't have it yet
curl -LsSf https://astral.sh/uv/install.sh | sh
# Create a virtual environment and install dependencies
uv venv
uv pip install -e .
# Alternative traditional method
python -m venv .venv
source .venv/bin/activate # On Windows: .venv\Scripts\activate
pip install -e .
Running the server
Set the required environment variables for Canvas access and run the MCP server.
Start the server using the uv command:
uv run src/canvas_lms_mcp/main.py
If you installed with uvx, you can start the server with the generated shortcut.
canvas-lms-mcp
Configuration
Set the following environment variables before starting the server:
export CANVAS_API_TOKEN="your_canvas_api_token"
export CANVAS_BASE_URL="https://your-institution.instructure.com" # Default: https://canvas.instructure.com
Cursor integration example
If you use Cursor to query Canvas data, add an MCP server entry in your project so Cursor can reach the Canvas LMS MCP Server.
{
"mcpServers": {
"canvas": {
"command": "uvx",
"args": [
"canvas-lms-mcp"
],
"env": {
"CANVAS_API_TOKEN": "your_canvas_api_token",
"CANVAS_BASE_URL": "https://your-institution.instructure.com"
}
}
}
}
Examples of common queries you can make
Ask your MCP client to list courses you are enrolled in, fetch a course’s syllabus, or pull upcoming assignments and quizzes for a given course. You can also retrieve files from a course folder or list planner items for a date range.
Available tools
list_courses
List the courses the authenticated user is enrolled in.
get_course
Retrieve details for a single course by its ID.
get_course_syllabus
Fetch the syllabus for a specific course.
get_course_modules
Retrieve modules for a course.
list_assignments
List assignments for a specific course with filtering and pagination.
get_assignment
Get a single assignment by its ID within a course.
list_quizzes
List quizzes for a specific course.
get_quiz
Fetch a single quiz by ID within a course.
list_files
List files for a course or folder.
list_planner_items
List planner items for the authenticated user within a date range.