Command Palette

Search for a command to run...

UnylyUnyly
Browse all

admin978/canvas-mcp

FreeNot checked

Local-first MCP server for Canvas LMS. Stdio transport, no third-party broker, token stays in ~/.canvas.env. Exposes courses, assignments, modules, announcement

GitHubEmbed

About

Local-first MCP server for Canvas LMS. Stdio transport, no third-party broker, token stays in ~/.canvas.env. Exposes courses, assignments, modules, announcements, grades, planner items, upcoming events, todo, and bulk file dump as MCP tools.

README

Local-first MCP server for Canvas LMS. Stdio transport, no network round-trips beyond the official Canvas API.

Status: alpha. Single-user, no warranty, API surface may still shift. File issues if it breaks.

Why

Canvas is built for instructors. As a student you get a fragmented UI, no cross-course search, and notifications that arrive late or never. This server exposes the Canvas REST API as MCP tools so you can drive the LMS from any MCP-compatible client (Claude Code, Claude Desktop, etc.).

Architecture

[client] ──stdio──> [server.py] ──https──> [Canvas API]
  • Token lives in ~/.canvas.env (chmod 600)
  • Server runs locally, no third party in the path
  • Single file, fully auditable

Tools exposed

list_courses, list_assignments, list_modules, list_announcements, get_page, get_file_info, get_grades, planner_items, upcoming_events, todo.

Setup

1. Mint a Canvas personal access token

In Canvas: Account → Settings → Approved Integrations → + New Access Token. Copy the token shown — it is not retrievable afterwards.

2. Install

From PyPI (recommended):

pip install canvas-local-mcp

Or from source:

git clone https://github.com/admin978/canvas-mcp.git && cd canvas-mcp
python3 -m venv .venv && source .venv/bin/activate
pip install -e .

Then create the env file:

curl -fsSL https://raw.githubusercontent.com/admin978/canvas-mcp/main/.canvas.env.example -o ~/.canvas.env
chmod 600 ~/.canvas.env
# edit ~/.canvas.env: set CANVAS_BASE_URL (institution root, no /api/v1)
# and paste the token into CANVAS_TOKEN

3. Register with your MCP client

Claude Code:

claude mcp add canvas-local -- canvas-local-mcp

Claude Desktop (~/Library/Application Support/Claude/claude_desktop_config.json):

{
  "mcpServers": {
    "canvas-local": {
      "command": "canvas-local-mcp"
    }
  }
}

Bulk dump

canvas-local-mcp-dump downloads every file the user has access to (course materials, syllabi). Useful for offline indexing.

canvas-local-mcp-dump              # all active courses
canvas-local-mcp-dump 12345 67890  # specific course IDs

Output goes to ./canvas-dump/ by default. Override with CANVAS_DUMP_DIR=/path/to/dir.

License

MIT — see LICENSE.


Built by AGENTE 404 S.L. · [email protected]

from github.com/admin978/canvas-mcp

Install admin978/canvas-mcp in Claude Desktop, Claude Code & Cursor

Recommended · one command, every IDE
unyly install admin978-canvas-mcp

Installs into Claude Desktop, Claude Code, Cursor & VS Code — handles npx, uvx and build-from-source repos for you.

First time? Get the CLI: curl -fsSL https://unyly.org/install | sh

Or configure manually

Run in your terminal:

claude mcp add admin978-canvas-mcp -- uvx canvas-local-mcp

FAQ

Is admin978/canvas-mcp MCP free?

Yes, admin978/canvas-mcp MCP is free — one-click install via Unyly at no cost.

Does admin978/canvas-mcp need an API key?

No, admin978/canvas-mcp runs without API keys or environment variables.

Is admin978/canvas-mcp hosted or self-hosted?

Self-hosted: the server runs locally on your machine via the install command above.

How do I install admin978/canvas-mcp in Claude Desktop, Claude Code or Cursor?

Open admin978/canvas-mcp on unyly.org, pick your client tab (Claude Desktop, Claude Code, Cursor) and press Install — the config is generated automatically, no JSON editing.

Related MCPs

Compare admin978/canvas-mcp with

Not sure what to pick?

Find your stack in 60 seconds

Author?

Embed badge for your README

Browse similar

All design MCPs