canvas-mcp
Connects to Canvas LMS, providing tools to interact with courses, assignments, grades, calendar events, submissions, modules, announcements, todo items, files, pages, and module content.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@canvas-mcpWhat assignments do I have due this week?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
canvas-mcp
A Model Context Protocol (MCP) server that connects your Canvas LMS account to Claude Desktop. Ask Claude natural-language questions about your courses, assignments, grades, files, and more -- all powered by the Canvas REST API.
Features
canvas-mcp exposes 15 tools to Claude Desktop:
Tool | Description |
| List all active enrolled courses |
| Assignments for a specific course with submission status |
| Every assignment across all courses, sorted by due date |
| Assignments due in the next N days (default 7) |
| Upcoming calendar events (next 30 days) |
| Per-assignment submission state (submitted / graded / unsubmitted) |
| Current and final grade plus per-assignment scores |
| Modules with item completion status |
| Recent announcements across all courses |
| Your Canvas to-do list |
| List files uploaded to a course (PDFs, slides, etc.) |
| List wiki/content pages in a course |
| Read the full text of a specific course page |
| Download and parse a file -- full PDF text extraction |
| Read content of all items in a module (lectures, notes, PDFs) |
Related MCP server: Canvas MCP Server
Project Structure
canvas-mcp/
├── src/
│ ├── index.ts # MCP server entry point, tool definitions, and dispatch
│ ├── tools.ts # Tool implementation functions
│ └── canvas-client.ts # Canvas API client: HTTP helpers, pagination, type definitions
├── dist/ # Compiled JavaScript (generated by build)
├── .env # Your credentials (not committed)
├── .gitignore
├── package.json
├── tsconfig.json
└── README.mdPrerequisites
Node.js >= 18
A Canvas LMS API access token
Getting a Canvas API Token
Log in to your Canvas instance (e.g.
https://yourschool.instructure.com)Go to Account > Settings
Scroll to Approved Integrations
Click + New Access Token
Give it a name (e.g. "Claude MCP") and optionally set an expiry
Copy the token -- you will not be able to see it again
Setup
1. Clone the repository
git clone https://github.com/YOUR_USERNAME/canvas-mcp.git
cd canvas-mcp2. Install dependencies
npm install3. Configure environment variables
Create a .env file in the project root:
CANVAS_TOKEN=your_canvas_api_token_here
CANVAS_DOMAIN=yourschool.instructure.comCANVAS_DOMAIN should be just the hostname (no https:// prefix).
4. Build
npm run buildThis compiles the TypeScript source to dist/.
5. Verify (optional)
node dist/index.jsThe server communicates over stdio using the MCP protocol. It will start and wait for input. Press Ctrl+C to exit. If environment variables are missing, you will see a clear error immediately.
Connecting to Claude Desktop
Add the server to your Claude Desktop configuration file.
macOS
Edit ~/Library/Application Support/Claude/claude_desktop_config.json:
{
"mcpServers": {
"canvas": {
"command": "node",
"args": ["/absolute/path/to/canvas-mcp/dist/index.js"],
"env": {
"CANVAS_TOKEN": "your_canvas_token_here",
"CANVAS_DOMAIN": "yourschool.instructure.com"
}
}
}
}Windows
Edit %APPDATA%\Claude\claude_desktop_config.json:
{
"mcpServers": {
"canvas": {
"command": "node",
"args": ["C:\\Users\\YOU\\path\\to\\canvas-mcp\\dist\\index.js"],
"env": {
"CANVAS_TOKEN": "your_canvas_token_here",
"CANVAS_DOMAIN": "yourschool.instructure.com"
}
}
}
}Replace the path with the absolute path to your compiled dist/index.js. After saving, restart Claude Desktop.
Example Prompts
Once connected, try these in Claude Desktop:
Assignment planning
"What assignments do I have due this week?"
"Show me everything due in the next 14 days."
"Build me a study schedule for the next two weeks based on my due dates."
Submission tracking
"Am I missing any submissions?"
"Which assignments haven't I submitted yet in course 12345?"
"Show me all overdue assignments."
Grades
"What's my current grade in my Biology course?"
"Show me all my graded assignments and scores."
"Which course am I doing worst in?"
Course content
"What courses am I enrolled in this semester?"
"What was covered in this week's lectures for course 12345?"
"Read the syllabus PDF from my math course."
"What modules have I completed in course 12345?"
Comprehensive
"Give me a full academic status report -- courses, grades, upcoming work, and missing submissions."
"I have a free weekend. What should I prioritize based on upcoming deadlines and my current grades?"
Development
# Run in dev mode without building (uses ts-node)
npm run dev
# Rebuild after making changes
npm run buildTroubleshooting
Problem | Solution |
| Check your |
| Your token is invalid or expired -- generate a new one |
| You do not have permission to access that resource |
No active courses found | Your enrollment state may differ -- verify in Canvas directly |
Claude does not see the server | Verify the absolute path in your config and restart Claude Desktop |
License
This project does not currently include a license file.
This server cannot be deployed
Maintenance
Related MCP Connectors
- platform7nOAuthtech.p7n
Connect Claude to your Platform7n workspaces — chat, links, and tasks. One-click OAuth.
Connect Claude to Fathom meeting recordings, transcripts, and summaries
WHOOP recovery, strain, sleep and workouts in Claude via official WHOOP OAuth. Free, open source.
AI-powered corporate learning platform — manage courses, users, and insights via Claude.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceConnects Claude to Canvas LMS, enabling students to query their coursework, assignments, grades, deadlines, announcements, and calendar events through natural conversation instead of navigating the Canvas interface.8-
- FlicenseNot gradedqualityDmaintenanceConnects Claude Desktop to Canvas LMS to monitor academic activities like assignments, announcements, and upcoming deadlines. It enables users to track courses and pending tasks through a unified interface using the Canvas REST API.-
- FlicenseNot gradedqualityDmaintenanceConnects Claude AI to your Canvas LMS account, enabling natural language interaction with coursework including assignments, grades, announcements, and calendar.-
- FlicenseNot gradedqualityBmaintenanceConnects Claude to the Canvas LMS REST API, enabling natural language queries about courses, assignments, grades, deadlines, and announcements.1-