
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)
claude mcp add --env CANVAS_BASE_URL=YOUR_CANVAS_BASE_URL --env CANVAS_TOKEN=YOUR_CANVAS_TOKEN canvas-local-mcp -- uvx canvas-local-mcpAdd your badge
Show developers this MCP server is listed on Skillselion. Paste this into your README.
| repo stars | ★ 4 |
|---|---|
| Package | canvas-local-mcp |
| Transport | STDIO |
| Auth | Required |
| Last updated | July 23, 2026 |
| Repository | admin978/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.