Now liveThe Skillselion MCP - thousands of ranked skills, loaded into your agent mid-task. No install.Get it →
admin978 avatar

Canvas Mcp

  • 4 repo stars
  • Updated July 23, 2026
  • admin978/canvas-mcp

io.github.admin978/canvas-mcp is a MCP server that connects AI agents to Canvas LMS locally over stdio using your institution URL and access token.

About

io.github.admin978/canvas-mcp is a local-first Model Context Protocol server that exposes Canvas LMS to AI coding agents over stdio. developers and small edu teams install it when they want agents to list courses, manage assignments, or draft instructor-facing workflows against their own Instructure tenant instead of pasting API docs into every chat. Configuration is explicit: you supply your institution root URL and a personal access token from Account → Settings → Approved Integrations. Because traffic stays on your machine via stdio, you avoid routing academic data through a hosted MCP proxy—useful for privacy-conscious course tooling and internal admin assistants. It is an integration layer, not a replacement for Canvas UI or full LMS migration projects.

  • Local-first stdio MCP—no third-party MCP broker between your machine and Canvas
  • PyPI package canvas-local-mcp v0.1.1 with stdio transport
  • Requires institution CANVAS_BASE_URL (root URL, no /api/v1) and personal CANVAS_TOKEN
  • Suited to edu SaaS, tutoring bots, and course-ops automation from Claude Code or Cursor

Canvas Mcp by the numbers

  • Data as of Jul 24, 2026 (Skillselion catalog sync)
terminal
claude mcp add --env CANVAS_BASE_URL=YOUR_CANVAS_BASE_URL --env CANVAS_TOKEN=YOUR_CANVAS_TOKEN canvas-local-mcp -- uvx canvas-local-mcp

Add your badge

Show developers this MCP server is listed on Skillselion. Paste this into your README.

Listed on Skillselion
repo stars4
Packagecanvas-local-mcp
TransportSTDIO
AuthRequired
Last updatedJuly 23, 2026
Repositoryadmin978/canvas-mcp

What it does

Let your coding agent read and update Canvas LMS courses, assignments, and enrollment data without building custom API glue.

Who is it for?

Best when you're shipping edu agents, course ops scripts, or LMS-backed SaaS and already have Canvas API tokens.

Skip if: Skip if you're without Canvas, or anyone and needs a hosted multi-tenant LMS product without self-managed tokens.

What you get

After install, your agent can query and act on Canvas data through MCP tools while credentials stay on your local runtime.

  • Registered local Canvas MCP server in your agent
  • Agent-callable Canvas LMS operations via MCP tools

By the numbers

  • Server version 0.1.1 on PyPI identifier canvas-local-mcp
  • Stdio transport only; no remote broker in server schema
README.md

canvas-mcp

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. · admin@agente404.com

Recommended MCP Servers

How it compares

MCP integration for Canvas LMS, not a standalone learning platform or browser automation skill.

FAQ

Who is io.github.admin978/canvas-mcp for?

Developers and developers who use Claude Code, Cursor, or similar agents and need programmatic Canvas LMS access on their own machine.

When should I use io.github.admin978/canvas-mcp?

Use it during build when you are wiring course data, assignments, or instructor workflows into an agent or internal tool against a real Canvas tenant.

How do I add io.github.admin978/canvas-mcp to my agent?

Install the PyPI package canvas-local-mcp, set CANVAS_BASE_URL and CANVAS_TOKEN, register the stdio MCP server in Claude Code or Cursor, then invoke Canvas tools from the agent.

Developer Toolsintegrationsdocs

This week in AI coding

Five minutes, every Monday - the tools, releases and tactics for developers.

unsubscribe anytime.