Add one entry to your AI app's MCP config and ask about grades, deadlines and assignments. No tunnel, no passwords, nothing exposed to the internet.
Both editions have the same 209 tools. The difference is where you can use them.
Best if you only need it on one computer.
Best if you want Canvas everywhere.
Your AI app starts the server as a child process and talks to it through a private pipe. Nothing listens on the network.
Higher-level tools answer real questions, not just raw API calls.
What-if grades, needed scores, weighted breakdowns and which assignments matter most.
Week-ahead view, semester snapshot and every missing assignment across all courses in one call.
Text, link and file submissions. You see a preview first, and nothing is sent until you confirm.
Full threads in one request, plus inbox messages to instructors.
You need Node.js 18+ and a Canvas account. There's nothing to download yourself: your AI app fetches the server with npx.
In Canvas, go to Account → Settings → Approved Integrations → + New Access Token. Copy it right away, because Canvas only shows it once.
Open your app's MCP config file (usually under Settings → Developer or MCP servers) and add this entry with your token and school address:
{
"mcpServers": {
"canvas": {
"command": "npx",
"args": ["-y", "canvas-lms-mcp-local"],
"env": {
"CANVAS_API_TOKEN": "your_token_here",
"CANVAS_BASE_URL": "https://yourschool.instructure.com"
}
}
}
}
Then fully quit the app and reopen it. On Windows, use the tray icon → Quit; on macOS, press ⌘Q.
npx -y canvas-lms-mcp-local
Register this command as a stdio MCP server named canvas, with CANVAS_API_TOKEN and CANVAS_BASE_URL set in its environment.
Ask your assistant: “Run test_connection.” Then try “What's due this week?”
Prefer running from source? See the README.
Set these in the env block of your config (or in .env if you run from source). Only the first two are required.
| Variable | Default | Description |
|---|---|---|
CANVAS_API_TOKEN required | — | Your Canvas personal access token |
CANVAS_BASE_URL required | — | Your school's Canvas address |
CANVAS_ALLOW_WRITES | true | false = read-only mode |
CANVAS_PROFILE | full | core = curated subset of tools |
CANVAS_CACHE_TTL | 60 | Response cache time in seconds |
CANVAS_TIMEZONE | system | Time zone for due-date math |
CANVAS_DOWNLOAD_DIR | next to index.js | Where downloads are saved |
Covers everything a student account can reach, plus raw_canvas_request for anything else.
Files, pages, modules, captions, exports
Profile, token expiry, rate limits
Full threads, replies, ratings
Permissions, nicknames, favorites
Submit, comment, rubric results
Messages and recipients
What-if, needed score, impact
Missing work, late policy
Read-only: dates, attempts
Events, office-hours booking
Group workspaces
Rubrics and peer reviews
Week ahead, priorities
Raw requests, diagnostics
Smart and keyword search
The most common fixes.
| Symptom | Fix |
|---|---|
| Canvas tools don't appear | Check that the config is valid JSON and the path is absolute, then fully quit and reopen your AI app |
spawn npx ENOENT | Install Node.js and restart the app. If it still fails, use the full path as command, e.g. "C:/Program Files/nodejs/npx.cmd" |
| The first start is slow | npx downloads the package the first time. Later starts are fast |
| “CANVAS_API_TOKEN is not set” | Add it to the env block of the canvas entry in your config |
| Canvas returns 401 | Your token expired. Create a new one |
| Where are the logs? | In your AI app's MCP log folder. Every line from this server starts with [canvas-mcp] |