Canvas MCP Connector
A small, read-only Model Context Protocol server for Canvas LMS. It exposes a signed-in user's courses, upcoming work, and course assignments as tools that an MCP client can call directly.
No browser extension, dashboard, or database is required. Credentials stay in the local environment and are never written to disk.
Tools
| Tool | Purpose |
|---|---|
canvas_list_courses |
Returns active courses for the current Canvas account. |
canvas_get_upcoming |
Returns upcoming events and deadlines. |
canvas_list_assignments |
Returns assignments for a course ID. |
Setup
Create a Canvas access token in your LMS account, then set the following environment variables:
export CANVAS_BASE_URL="https://canvas.example.edu"
export CANVAS_ACCESS_TOKEN="your_canvas_access_token"
Install and run the server:
python -m pip install -e .
canvas-mcp
MCP client configuration
Use the following command in an MCP-compatible client configuration:
{
"mcpServers": {
"canvas": {
"command": "canvas-mcp",
"env": {
"CANVAS_BASE_URL": "https://canvas.example.edu",
"CANVAS_ACCESS_TOKEN": "your_canvas_access_token"
}
}
}
}
The server communicates over standard input/output using JSON-RPC. It only makes GET requests to Canvas API endpoints.
Development
python -m pip install -e . pytest
python -m pytest -q
Scope
This project is intentionally narrow: it is a local data connector, not a learning-management UI or an automated submission tool. Canvas deployments may expose different API capabilities; verify your institution's policies before use.
License
MIT