canvas-mcp-lite

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.

Category
Visit Server

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_content extracts 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_submissions is the grading queue, grade_submission handles points, pass/fail, letter, and percent grades (and reports partial success when Canvas saves a comment but rejects a grade), and post_grades/hide_grades control when students see results.
  • Course codes or IDs — every course-scoped tool accepts either a numeric course ID or a course_code string (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+.

  1. Install (editable, from the project root):

    python -m venv .venv
    source .venv/bin/activate
    pip install -e .
    
  2. Configure credentials in a .env file next to the package:

    CANVAS_API_URL=https://yourschool.instructure.com/api/v1
    CANVAS_API_TOKEN=your-canvas-access-token
    

    Generate a token in Canvas under Account → Settings → New Access Token. The .env is loaded relative to the package location (not the working directory), because MCP clients launch servers from arbitrary directories.

  3. 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_lite and it uses relative imports — run it through the installed canvas-mcp-lite script, not python 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

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.

Official
Featured
TypeScript
Magic Component Platform (MCP)

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.

Official
Featured
Local
TypeScript
Audiense Insights MCP Server

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.

Official
Featured
Local
TypeScript
VeyraX MCP

VeyraX MCP

Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.

Official
Featured
Local
graphlit-mcp-server

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.

Official
Featured
TypeScript
Kagi MCP Server

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.

Official
Featured
Python
E2B

E2B

Using MCP to run code via e2b.

Official
Featured
Neon Database

Neon Database

MCP server for interacting with Neon Management API and databases

Official
Featured
Exa Search

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.

Official
Featured
Qdrant Server

Qdrant Server

This repository is an example of how to create a MCP server for Qdrant, a vector search engine.

Official
Featured