home / mcp / canvas lms mcp server

Canvas LMS MCP Server

Provides access to Canvas LMS data through MCP endpoints for courses, assignments, quizzes, syllabus, modules, files, and planner items.

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.