# admin978/canvas-mcp [Health: Active]

**Category:** 🎓 Education  
**Repository:** https://github.com/admin978/canvas-mcp  
**GitHub Stars:** 4  
**Views:** 4  
**Installs:** 0  
**Upvotes:** 0  
**Directory Page:** https://allmcps.com/mcp/admin978-canvas-mcp

## Description
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.

## Tools
Capabilities this server exposes over MCP:

- **list_courses**
- **list_assignments**
- **list_modules**
- **list_announcements**
- **get_page**
- **get_file_info**
- **get_grades**
- **planner_items**
- **upcoming_events**
- **todo**

## Claude Desktop Quick Installation
Install path detected from listing signals. Uses `uvx` (confidence: high):

```json
"mcpServers": {
  "canvas-mcp": {
    "command": "uvx",
    "args": ["canvas-local-mcp"],
    "env": {
      "CANVAS_BASE_URL": "",
      "CANVAS_TOKEN": "",
      "CANVAS_DUMP_DIR": ""
    }
  }
}
```

**Requires environment variables:** `CANVAS_BASE_URL`, `CANVAS_TOKEN`, `CANVAS_DUMP_DIR` — the values above are empty placeholders; fill in real credentials before running (see the repository for what each one is for).

## Documentation

## What admin978/canvas-mcp MCP server does

The admin978/canvas-mcp MCP server exposes selected Canvas LMS data through MCP tools for local AI workflows. It is aimed at students, instructors, and developers who need conversational access to course information without manually browsing each Canvas page.

The available tools cover course discovery, assignments, modules, announcements, pages, file information, grades, planner items, upcoming events, and todo items. Typical requests include finding assignments due across active courses, reviewing current grades, listing next week's events, or fetching a page such as a course syllabus. The listed interface is retrieval-oriented: the provided tools list and fetch Canvas data rather than create or update Canvas records.

A separate command-line utility, `canvas-local-mcp-dump`, downloads course files and related content for offline indexing. It can target all active courses or receive specific course IDs, with output written to `./canvas-dump/` by default.

## How it works

The admin978/canvas-mcp MCP server runs locally and communicates with its MCP client using stdio. When a tool is invoked, the local process sends requests to the official Canvas API endpoints configured for the user’s institution. No external token broker is used in that request path.

Authentication uses a Canvas personal access token. Canvas users create this token under Account, Settings, Approved Integrations, and New Access Token. The server reads the token and the institution’s Canvas base URL from `~/.canvas.env`; the base URL should identify the institution root and omit `/api/v1`.

The project describes itself as alpha software for single-user use. Its API surface may change, so deployments should account for possible revisions.

## Setup and configuration

Python 3.10 or newer is required. The package is published on PyPI as `canvas-local-mcp`, and it can also be installed from a cloned source checkout with an editable install. After installation, create `~/.canvas.env`, restrict its permissions, set `CANVAS_BASE_URL`, and add the Canvas token as `CANVAS_TOKEN`.

Register the executable as an MCP server in the client configuration. For Claude Desktop, the stdio entry uses the `canvas-local-mcp` command. Claude Code can register the same executable with `claude mcp add canvas-local -- canvas-local-mcp`.

The dump utility accepts optional course IDs. Its destination can be changed with `CANVAS_DUMP_DIR`. Token handling guidance in the project covers file permissions, least privilege, rotation, revocation, and vulnerability reporting.

## Tools and capabilities

The admin978/canvas-mcp MCP server provides these tools:

- `list_courses` for course listings
- `list_assignments` for assignment retrieval
- `list_modules` for module data, including module items in the documented example
- `list_announcements` for course announcements
- `get_page` for fetching a page from a course
- `get_file_info` for file metadata
- `get_grades` for current grade information
- `planner_items` for planner data
- `upcoming_events` for forthcoming Canvas events
- `todo` for todo items

The companion dump command supports bulk download of course files and related content for offline indexing, but it is separate from the MCP tool list.

## Limitations and notes

The repository labels the project alpha and provides no warranty. It is designed for a single user, and the API surface can still change. A Canvas personal access token and institution-specific base URL are required; the supplied material does not describe OAuth support or hosted operation. The server is local-first and uses stdio rather than a remote MCP endpoint.

The README documents Claude Code and Claude Desktop registration. It also says the server works with other MCP-compatible clients, but it does not provide client-specific configuration for each one. Tests use a mocked Canvas API and do not require a token, which describes development testing rather than production authentication.

_Full upstream README: https://allmcps.com/mcp/admin978-canvas-mcp/readme_

