Canvas LMS
Links AI tools to Canvas school dashboards.
Canvas API MCP Server
Connect Claude to your Canvas LMS. Ask natural questions like "What assignments do I have due this week?" or "What's my current grade in Biology?" and get real answers pulled directly from your Canvas account.
Works with Claude Desktop and Claude Code (the CLI).
Quick Install
Requires: Node.js 18+, Git, and a Canvas personal access token (how to get one)
git clone https://github.com/Kdude43ver/Canvas-API-MCP.git
cd Canvas-API-MCP
bash install.sh
The install script will:
- Install dependencies and build the project
- Ask for your Canvas URL and API token
- Add the server to Claude Code and/or Claude Desktop automatically
Manual Setup
1. Get your Canvas API token
- Log into your Canvas instance (e.g.
https://yourschool.instructure.com) - Click your profile picture → Account → Settings
- Scroll down to Approved Integrations
- Click + New Access Token
- Name it (e.g.
Claude MCP) and click Generate Token - Copy the token now — Canvas will never show it again
2. Clone and build
git clone https://github.com/Kdude43ver/Canvas-API-MCP.git
cd Canvas-API-MCP
npm install
npm run build
3. Create your .env file
cp .env.example .env
Edit .env:
CANVAS_TOKEN=your_token_here
CANVAS_BASE_URL=https://yourschool.instructure.com
4. Add to Claude Code
claude mcp add canvas \
-e CANVAS_TOKEN=your_token_here \
-e CANVAS_BASE_URL=https://yourschool.instructure.com \
-- node /absolute/path/to/Canvas-API-MCP/dist/index.js
Replace /absolute/path/to/Canvas-API-MCP with the actual path (run pwd inside the repo to get it).
5. Add to Claude Desktop
Edit ~/.config/claude/claude_desktop_config.json on Linux/Mac, or %APPDATA%\Claude\claude_desktop_config.json on Windows. Create the file if it doesn't exist.
{
"mcpServers": {
"canvas": {
"command": "node",
"args": ["/absolute/path/to/Canvas-API-MCP/dist/index.js"],
"env": {
"CANVAS_TOKEN": "your_token_here",
"CANVAS_BASE_URL": "https://yourschool.instructure.com"
}
}
}
}
Restart Claude Desktop after saving. You should see a hammer icon in the chat interface indicating tools are available.
Available Tools
| Tool | What it does |
|---|---|
list_courses | List all your active courses |
get_course | Full details for a course (including syllabus) |
list_assignments | All assignments for a course with due dates and point values |
get_assignment | Full assignment details including description |
list_upcoming_assignments | Assignments due in the next N days across all your courses |
get_grades | Your current and final grade for a course |
list_submissions | Submission status for every assignment in a course |
list_announcements | Recent announcements for a course |
list_discussions | Discussion topics for a course |
list_calendar_events | Upcoming events and due dates in a date range |
list_files | Files available in a course with download links |
Example Prompts
Once installed, try asking Claude:
- "What assignments do I have due in the next 3 days?"
- "List all my courses this semester."
- "What's my current grade in each class?"
- "Are there any announcements in my CS class?"
- "Show me the discussion topics for course 12345."
- "What files are available in my Biology course?"
- "What's on my calendar this week?"
Verifying It Works (MCP Inspector)
Before adding to Claude, you can test the server directly:
npx @modelcontextprotocol/inspector node dist/index.js
Set CANVAS_TOKEN and CANVAS_BASE_URL in the Environment Variables section of the inspector, then call list_courses to confirm you get real data back.
Troubleshooting
"No courses found" or empty results
- Double-check your
CANVAS_BASE_URL— it should be your school's Canvas URL, notcanvas.instructure.com - Make sure your token was copied correctly (no extra spaces)
- Try generating a fresh token
Claude Desktop doesn't show Canvas tools
- Confirm the path in
claude_desktop_config.jsonis the absolute path todist/index.js - Make sure you ran
npm run buildand thatdist/index.jsexists - Restart Claude Desktop fully (quit from the system tray, not just close the window)
Claude Code can't find the server
- Run
claude mcp listto see registered servers - Run
claude mcp remove canvasthen re-add it if something looks wrong
403 errors from Canvas
- Your token may have expired — generate a new one in Canvas Settings
- Some Canvas instances restrict API access; contact your school's IT department
Security
- Your Canvas token is stored only in your local
.envfile (which is git-ignored) and/or your local Claude config files - The token gives read access to everything your Canvas account can see — treat it like a password
- To revoke access: go to Canvas → Account → Settings → Approved Integrations → delete the token
- Never share your
.envfile or commit it to version control
Development
# Install deps
npm install
# Build (uses esbuild, outputs to dist/)
npm run build
# Run directly (requires .env file)
node dist/index.js
# Dev mode with ts-node
npm run dev
The source is organized as:
src/
├── index.ts # Entry point — loads env, starts server
├── server.ts # McpServer setup, registers all tools
├── canvas-client.ts # Axios wrapper: auth headers, pagination, rate-limit backoff
└── tools/
├── courses.ts # list_courses, get_course
├── assignments.ts # list_assignments, get_assignment, list_upcoming_assignments
├── grades.ts # get_grades, list_submissions
├── announcements.ts # list_announcements
├── discussions.ts # list_discussions
├── calendar.ts # list_calendar_events
└── files.ts # list_files
관련 서버
Bright Data
스폰서Discover, extract, and interact with the web - one interface powering automated access across the public internet.
Stepstone
Fetches job listings from Stepstone.de based on keywords and location parameters.
MCP Web Scraper
A production-ready web scraping platform with ML-powered automation, browser automation via Playwright, and persistent caching.
MCP LLMS.txt Explorer
Explore and analyze websites that have implemented the llms.txt standard.
Driflyte
The Driflyte MCP Server exposes tools that allow AI assistants to query and retrieve topic-specific knowledge from recursively crawled and indexed web pages.
Documentation Crawler
Crawl websites to generate Markdown documentation and make it searchable through an MCP server.
Playwright MCP
Automate web interactions and perform web scraping tasks using the Playwright framework.
MCP NPX Fetch
Fetch and transform web content into various formats like HTML, JSON, Markdown, or Plain Text.
Amazon MCP Server
Scrapes and searches for products on Amazon.
Oxylabs AI Studio
AI tools for web scraping, crawling, browser control, and web search via the Oxylabs AI Studio API.
scrape-do-mcp
MCP Server for Scrape.do - Web Scraping & Google Search with anti-bot bypass