canvas-mcp-lite
Enables AI assistants to act as teaching assistants for Canvas LMS, allowing them to browse courses, read student submissions (including PDF/DOCX), grade with rubrics, post announcements, manage modules and pages, and more.
README
canvas-mcp-lite
A lean, instructor-focused MCP server for Canvas LMS, built with FastMCP. It lets an AI assistant act as a teaching assistant against your Canvas instance: browsing courses, reading student submissions (including PDF/DOCX file uploads), grading with rubrics, posting announcements, managing modules and pages, and more.
Tools
64 tools across 11 Canvas domains, organized by risk level:
| Group | Count | Examples |
|---|---|---|
| Read | 32 | list_courses, list_ungraded_submissions, list_missing_submissions, get_submission_content, list_quiz_submissions, get_student_analytics |
| Write | 23 | create_assignment, grade_submission, grade_with_rubric, post_grades, create_announcement, send_message, upload_course_file |
| Delete | 9 | delete_assignment, delete_page, bulk_delete_announcements |
Highlights:
- Read what students actually submitted —
get_submission_contentextracts text from uploaded PDFs, DOCX files, and plain text (plus typed text entries, URLs, and discussion submissions) and includes the submission comment thread, so grading tools work from real content. - A real grading workflow —
list_ungraded_submissionsis the grading queue,grade_submissionhandles points, pass/fail, letter, and percent grades (and reports partial success when Canvas saves a comment but rejects a grade), andpost_grades/hide_gradescontrol when students see results. - Course codes or IDs — every course-scoped tool accepts either a numeric course ID or a
course_codestring (resolved with a short-TTL cache). - Safe by default — assignments and pages are created unpublished unless you say otherwise; destructive tools are clearly marked.
- LLM-friendly output — every tool returns formatted, readable text rather than raw JSON.
Setup
Requires Python 3.10+.
-
Install (editable, from the project root):
python -m venv .venv source .venv/bin/activate pip install -e . -
Configure credentials in a
.envfile next to the package:CANVAS_API_URL=https://yourschool.instructure.com/api/v1 CANVAS_API_TOKEN=your-canvas-access-tokenGenerate a token in Canvas under Account → Settings → New Access Token. The
.envis loaded relative to the package location (not the working directory), because MCP clients launch servers from arbitrary directories. -
Run via the console script:
canvas-mcp-lite
Using with Claude
Register it as an stdio MCP server. For Claude Code:
claude mcp add canvas -- /path/to/.venv/bin/canvas-mcp-lite
Or in a Claude Desktop / MCP client config:
{
"mcpServers": {
"canvas": {
"command": "/path/to/.venv/bin/canvas-mcp-lite"
}
}
}
Project layout
canvas_mcp_lite/
server.py FastMCP entry point; registers READ/WRITE/DELETE tool lists
client.py Async Canvas API client: auth, pagination, retry, errors
util.py Course code → ID resolution (cached), date formatting
tools/ One module per domain: courses, assignments, grading,
modules_pages, announcements, discussions, files, quizzes,
messaging, peer_review, analytics
Notes
- The package name is
canvas_mcp_liteand it uses relative imports — run it through the installedcanvas-mcp-litescript, notpython server.py. - File downloads for text extraction are capped at 25MB; scanned/image-only PDFs return a notice instead of text.
- Canvas API errors surface with status code and URL; transient timeouts are retried with backoff.
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.