Canvas MCP Server

by avarant

238 downloads
Not rated
GitHub

About

A Canvas Model Context Protocol (MCP) server implemented in Python that exposes Canvas API functionalities as MCP tools using the canvas-lms-sdk. It is intended for users who want to programmatically interact with their Canvas LMS instance via MCP-compatible clients.

Details

Author
avarant
Downloads
238
Categories
Other

- Fetches active courses for the current user
- Retrieves assignments for a specific course ID
- Checks calendar due dates for specified context codes
- Lists upcoming calendar events and assignments
- Returns detailed information for a given course ID

Setting up with Highlight

This MCP is not yet compatible with Highlight’s one-click setup. However, you can still use it with Highlight by following these steps:

  1. Download and install Highlight from highlightai.com/download
  2. Navigate to the plugins tab and select "Add Custom Plugin"
  3. Configure the plugin with the settings below
    Plugin Name Canvas MCP Server
    Command (node, npx, python, etc.)

    Please refer to the README for specific instructions on how to obtain API keys or other required environment variables.

  4. Enable "Start Automatically" if you want the plugin to start when Highlight launches

From the repository

Set the CANVAS_API_URL and CANVAS_API_KEY environment variables with your Canvas credentials, install dependencies using uv (or pip) from the required repositories, then run python main.py. The server will start and listen for MCP client connections.

Claude Desktop / Cursor

Paste into your MCP client config file to install this server.

{
    "mcpServers": {
        "canvas mcp server": {
            "canvas-mcp-server": {
                "command": "uv",
                "args": [
                    "pip",
                    "install",
                    "-r",
                    "requirements.txt",
                    "#",
                    "Assuming",
                    "a",
                    "requirements.txt",
                    "might",
                    "be",
                    "added",
                    "later"
                ]
            }
        }
    }
}

McpServers

{
    "canvas-mcp-server": {
        "command": "uv",
        "args": [
            "pip",
            "install",
            "-r",
            "requirements.txt",
            "#",
            "Assuming",
            "a",
            "requirements.txt",
            "might",
            "be",
            "added",
            "later"
        ]
    }
}

Canvas MCP Server

A Canvas Model Context Protocol (MCP) server implemented in Python using the canvas-lms-sdk. This server exposes Canvas API functionalities as MCP tools.

Prerequisites

Python 3.8+
uv (for installation, though pip can also be used)
Canvas API Credentials:
An API URL for your Canvas instance (e.g., https://<your-institution>.instructure.com)
An API Key generated from your Canvas account.

Setup

1. Clone the repository (if you haven't already):

    git clone <repository-url>
cd canvas-mcp-server

2. Set Environment Variables:
Export your Canvas API URL and Key as environment variables. Replace <your-canvas-api-url> and <your-canvas-api-key> with your actual credentials.

    export CANVAS_API_URL="<your-canvas-api-url>"
export CANVAS_API_KEY="<your-canvas-api-key>"

Note: For production environments, consider more secure ways to manage secrets.

3. Install Dependencies:
Use uv to install the required packages, including the canvas-lms-sdk:

    uv pip install -r requirements.txt # Assuming a requirements.txt might be added later
uv pip install "git+https://github.com/avarant/canvas-lms-sdk.git#subdirectory=generated_python_sdk"
uv pip install "mcp-sdk"

Alternatively, if you prefer pip:
    # pip install -r requirements.txt 
pip install "git+https://github.com/avarant/canvas-lms-sdk.git#subdirectory=generated_python_sdk"
pip install "mcp-sdk"

Running the Server

Once the setup is complete and environment variables are set, run the server:

python main.py

The server will start and print messages indicating it's running and using the configured Canvas URL. It will listen for MCP client connections.

Available Tools

The server currently provides the following tools:

get_active_courses: Fetches the list of active courses for the current user.
get_assignments_for_course: Fetches the list of assignments for a specific course ID.
get_calendar_due_dates: Fetches calendar events (assignments) for specified context codes (defaults to user).
get_upcoming_assignments: Fetches upcoming calendar events (including assignments) for the user.
get_class_information: Fetches detailed information for a specific course ID.

No reviews yet — be the first

Sign in to leave a review

Use Google, GitHub, or an email account so ratings stay tied to real people.

Email sign in

No reviews posted yet.