
Security News
Meet Socket at Black Hat Europe and BSides London 2025
Socket is heading to London! Stop by our booth or schedule a meeting to see what we've been working on.
canvas-lms-mcp
Advanced tools
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.
To install Canvas LMS Server for Claude Desktop automatically via Smithery:
npx -y @smithery/cli install @ahnopologetic/canvas-lms-mcp --client claude
uv package manager (recommended)The easiest way to install and run canvas-lms-mcp is using uvx:
uvx canvas-lms-mcp
This will run the server in an isolated environment without installing it permanently.
To install the tool permanently:
uv tool install canvas-lms-mcp
Clone the repository:
git clone https://github.com/yourusername/canvas-lms-mcp.git
cd canvas-lms-mcp
Install with uv:
# 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 .
Alternatively, use traditional methods:
python -m venv .venv
source .venv/bin/activate # On Windows: .venv\Scripts\activate
pip install -e .
Set the following environment variables:
export CANVAS_API_TOKEN="your_canvas_api_token"
export CANVAS_BASE_URL="https://your-institution.instructure.com" # Default: https://canvas.instructure.com
You can get your Canvas API token from your Canvas account settings.
Start the server with uv:
uv run src/canvas_lms_mcp/main.py
If installed with uvx tool:
canvas-lms-mcp
By default, the server runs on http://localhost:8000. You can use the FastMCP interface at http://localhost:8000/docs to interact with the API.
The server provides the following tools for interacting with Canvas LMS:
list_coursesList courses that the user is actively enrolled in.
Parameters:
page (optional, default=1): Page number (1-indexed)items_per_page (optional, default=10): Number of items per pageget_courseGet a single course by ID.
Parameters:
course_id (required): Course IDinclude (optional): List of additional data to includeget_course_syllabusGet a course's syllabus.
Parameters:
course_id (required): Course IDget_course_modulesGet modules for a course.
Parameters:
course_id (required): Course IDinclude (optional): List of additional data to includelist_assignmentsList assignments for a course.
Parameters:
course_id (required): Course IDbucket (required): Filter assignments by ("past", "overdue", "undated", "ungraded", "unsubmitted", "upcoming", "future")order_by (required): Field to order assignments by ("due_at", "position", "name")page (optional, default=1): Page number (1-indexed)items_per_page (optional, default=10): Number of items per pageget_assignmentGet a single assignment by ID.
Parameters:
course_id (required): Course IDassignment_id (required): Assignment IDlist_quizzesList quizzes for a course.
Parameters:
course_id (required): Course IDinclude (optional): List of additional data to includepage (optional, default=1): Page number (1-indexed)items_per_page (optional, default=10): Number of items per pageget_quizGet a single quiz by ID.
Parameters:
course_id (required): Course IDquiz_id (required): Quiz IDlist_filesList files for a course or folder.
Parameters:
course_id (optional): Course IDfolder_id (optional): Folder IDinclude (optional): List of additional data to includepage (optional, default=1): Page number (1-indexed)items_per_page (optional, default=10): Number of items per pagelist_planner_itemsList planner items for the authenticated user.
Parameters:
start_date (required): Start date in ISO 8601 formatend_date (required): End date in ISO 8601 formatcontext_codes (optional): List of context codes (e.g., ["course_123"])page (optional, default=1): Page number (1-indexed)items_per_page (optional, default=10): Number of items per pageCursor is an AI-powered IDE that can interact with the Canvas LMS MCP server to provide education data directly within your development environment.
Install the Cursor IDE from https://cursor.sh/
Create a .cursor/mcp.json file in your project directory with the following content:
{
"mcpServers": {
"canvas": {
"command": "uvx",
"args": [
"canvas-lms-mcp"
],
"env": {
"CANVAS_API_TOKEN": "your_canvas_api_token",
"CANVAS_BASE_URL": "https://your-institution.instructure.com"
}
}
}
}
Replace:
your_canvas_api_token with your actual Canvas API tokenyour-institution.instructure.com with your Canvas institution URLRestart Cursor for the changes to take effect.
You can also integrate a time server for timezone-related queries by adding a "time" server to your mcp.json:
"time": {
"command": "uvx",
"args": [
"mcp-server-time",
"--local-timezone=America/New_York"
]
}
This allows you to use time-related functions with your Canvas data.
Once connected, you can ask Cursor AI about your Canvas data:
Example conversation:
YOU: What assignments do I have due soon?
CURSOR: I'll check your upcoming assignments.
Based on your Canvas data, here are your upcoming assignments:
- "Final Project" for CS101 due on December 10, 2023
- "Lab Report #5" for BIOL200 due on December 7, 2023
- "Research Paper" for ENGL301 due on December 15, 2023
For detailed development instructions, please see the DEVELOPMENT.md file.
This project is licensed under the MIT License - see the LICENSE file for details.
FAQs
Minimal Canvas LMS MCP server for easy access to education
We found that canvas-lms-mcp demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Security News
Socket is heading to London! Stop by our booth or schedule a meeting to see what we've been working on.

Security News
OWASP’s 2025 Top 10 introduces Software Supply Chain Failures as a new category, reflecting rising concern over dependency and build system risks.

Research
/Security News
Socket researchers discovered nine malicious NuGet packages that use time-delayed payloads to crash applications and corrupt industrial control systems.