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?

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

Configuration and credentials

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

More MCP options

Compare MCP servers by category, or browse hosted MCP servers if you prefer an endpoint over a local process.

Maintainer setup documentation.

Recorded tools

Check the linked publisher documentation and your connected client's tool list. Names and availability can vary with the server version and account permissions.

ToolWhat it does
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_syllabus
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
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).
get_pageParameters: - course_id (required): Course ID - page_slug (required): Page URL slug (e.g., "syllabus", "course-handbook")

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

MCP server for easy access to education data through your Canvas LMS instance. Confirm the tools offered by your installed version in the connected client. Tool availability and permissions depend on the server and account configuration.