Skip to main content
Glama
smrik

canvas-mcp-server

by smrik

Canvas MCP Server

Automatically pull Canvas LMS course materials into Obsidian instead of manually downloading and organizing them.

Why This Exists

Canvas LMS is great for courses, but managing materials requires constant downloads and folder organization. Canvas MCP Server bridges the gap: use an AI assistant to sync course files, assignments, grades, and announcements directly into your Obsidian vault, organized by course and module.

Related MCP server: Canvas MCP

Quick Example

# Your AI assistant runs these MCP tools:
list_courses()                              # → Find course ID
discover_course_files("123")                # → Preview all files/structure
download_course("123", "My Course")         # → Sync everything to Obsidian

# Result: Obsidian vault/Canvas/My Course/Modules/Week 1/lecture.pdf (downloaded)

Status

Dormant — Not actively maintained. Provided as-is for reference.

Available Tools

Discovery: list_courses, discover_course_files, get_course_modules Download: download_file, download_module, download_course, sync_course_files Info: get_course_assignments, get_course_announcements, get_course_grades, get_upcoming_events Jobs: get_job_status, list_jobs (for background operations)

Gotchas

Auth Token Setup

  • Get from Canvas: Account Settings → Approved Integrations → New Access Token

  • Token is required; server won't run without it

Rate Limits

  • Canvas API allows ~3000 requests/hour

  • Use background=True on large downloads to avoid timeout

File Access Issues

  • Server uses 4-strategy fallback (global scope → public URL → course scope → user scope) to work around permission restrictions

  • Students with limited Canvas API access still work in most cases

  • Rare: if all 4 fail, manually download from Canvas web UI

Setup

Configuration

Environment variables or .env file:

CANVAS_BASE_URL=https://your-canvas-instance.edu
CANVAS_API_TOKEN=<your-token>
OBSIDIAN_VAULT_PATH=C:\path\to\your\vault
CANVAS_FOLDER=Canvas  # subfolder in vault (default: Canvas)
PORT=8080

Quick Start

pip install -r requirements.txt
python canvas_server.py

Docker

docker build -t canvas-mcp-server .
docker run -e CANVAS_BASE_URL=... -e CANVAS_API_TOKEN=... \
  -v /path/to/obsidian:/obsidian canvas-mcp-server

Tech Stack

  • Python 3.11, FastMCP, httpx, python-dotenv, Docker

License

See CLAUDE.md for notes.

Screenshots

TODO (Patrik): add screenshots here.

F
license - not found
-
quality - not tested
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/smrik/canvas-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server