Canvas LMS MCP Server

MCP server for easy access to education data through your Canvas LMS instance.

Local serverstdioPython

What is the Canvas LMS MCP server?

Canvas LMS MCP server exists for a simple reason — assistants are far more useful when they can act on Canvas LMS directly instead of describing what you should do. MCP server for easy access to education data through your Canvas LMS instance.

What you get

A minimal Canvas LMS MCP (Machine Conversation Protocol) server for easy access to education data through your Canvas LMS instance. This server provides a bridge between AI systems (like Cursor) and Canvas Learning Management System.

  • Courses — List enrolled courses, get course details, syllabus, modules, and module items
  • Assignments — List and get assignments with optional submission status
  • Pages — Get course pages by URL slug
  • Submissions — List your own submissions with grades and feedback
  • Announcements — List announcements across multiple courses
  • Discussions — List topics and view full discussion threads

What the assistant can call

Once Canvas LMS is connected, these are the calls the assistant has available:

  • Prerequisites — The Prerequisites tool exposed by this server
  • Courses — The Courses tool exposed by this server
  • list_courses — Parameters: - page (optional, default=1): Page number (1-indexed) - items_per_page (optional, default=10): Number of items per page
  • get_course — Parameters: - course_id (required): Course ID - include (optional): List of additional data to include
  • get_course_syllabus — The get_course_syllabus tool exposed by this server
  • get_course_modules — Parameters: - course_id (required): Course ID - include (optional): List of additional data to include - per_page (optional, default=100): Number of
  • get_module_items — Parameters: - course_id (required): Course ID - module_id (required): Module ID
  • Assignments — The Assignments tool exposed by this server
  • list_assignments — Parameters: - course_id (required): Course ID - bucket (required): Filter by "past", "overdue", "undated", "ungraded", "unsubmitted", "upcoming", or
  • get_assignment — Parameters: - course_id (required): Course ID - assignment_id (required): Assignment ID
  • list_assignment_groups — List assignment groups for a course (shows grade weighting/categories)
  • Pages — The Pages tool exposed by this server

Setting it up

@smithery/cli on npm is all you need. Most clients run it directly, so configuration is a few lines and a restart.

Configuration and credentials

You will need 2 environment variables: CANVAS_API_TOKEN, CANVAS_BASE_URL. The server will not start without them, which is usually why the tools fail to appear on a first run. Keep credentials in your client's env block or a secrets manager rather than in a file you might commit.

  • Python 3.13+ - Canvas LMS API token - uv package manager (recommended)

Choosing this one

Plenty of planning and project tracking servers cover similar ground. The differences that matter in practice are scope of access and how much setup stands between you and a working tool call. Canvas LMS's toolset — Prerequisites, Courses, list_courses and 11 more — is a fair guide to whether it matches your workflow.

We check each listing at SyncDev against the project's documentation before it goes live — if something here drifts out of date, it is a bug worth reporting.

Before you rely on it

  • It runs with your machine's permissions. That is convenient and also the reason to think about what you point it at before you approve a tool call.
  • With 14 tools registered it takes up a noticeable share of the context window; turn it off in projects that never touch Canvas LMS.
  • Missing credentials fail quietly in some clients — if no tools show up, check the environment block first.
  • MCP clients confirm each tool call by default. Leave that on until you have watched what the canvas lms mcp server does with a few real requests.

Available tools

ToolWhat it does
PrerequisitesThe Prerequisites tool exposed by this server.
CoursesThe Courses tool exposed by this server.
list_coursesParameters: - page (optional, default=1): Page number (1-indexed) - items_per_page (optional, default=10): Number of items per page
get_courseParameters: - course_id (required): Course ID - include (optional): List of additional data to include
get_course_syllabusThe get_course_syllabus tool exposed by this server.
get_course_modulesParameters: - course_id (required): Course ID - include (optional): List of additional data to include - per_page (optional, default=100): Number of items per page
get_module_itemsParameters: - course_id (required): Course ID - module_id (required): Module ID
AssignmentsThe Assignments tool exposed by this server.
list_assignmentsParameters: - course_id (required): Course ID - bucket (required): Filter by "past", "overdue", "undated", "ungraded", "unsubmitted", "upcoming", or "future" - order_by (required): Order by "due_at", "position", or "name
get_assignmentParameters: - course_id (required): Course ID - assignment_id (required): Assignment ID
list_assignment_groupsList assignment groups for a course (shows grade weighting/categories).
PagesThe Pages tool exposed by this server.
get_pageParameters: - course_id (required): Course ID - page_slug (required): Page URL slug (e.g., "syllabus", "course-handbook")
SubmissionsThe Submissions tool exposed by this server.

How to install 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"
            }
        }
    }
}

Configuration as documented by the project. Restart the client after saving.

Configuration

  • Python 3.13+ - Canvas LMS API token - uv package manager (recommended)
VariableDescriptionRequired
CANVAS_API_TOKENCredential the server authenticates with.Yes
CANVAS_BASE_URLEndpoint or connection string the server talks to.Yes

Example prompts to try

  • Use Canvas LMS to Prerequisites.
  • Use Canvas LMS to Courses.
  • Use Canvas LMS to list courses.

Frequently asked questions

It connects Canvas LMS to MCP-compatible AI assistants such as Claude and Cursor, exposing 14 tools (Prerequisites, Courses, list_courses, and more) that the assistant can call on your behalf. Instead of copying data back and forth by hand, the assistant works with Canvas LMS directly.