canvas-mcp-server
Enables AI assistants to automatically pull Canvas LMS course materials into Obsidian, syncing files, assignments, grades, and announcements organized by course and module.
README
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.
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=Trueon 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.
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.