Canvas MCP
Provides tools for interacting with Canvas LMS, enabling AI agents to query courses, assignments, grades, modules, quizzes, announcements, discussions, calendar events, and user profile.
Integration with Instructure's Canvas LMS platform, providing access to educational data such as courses, assignments, grades, and modules.
Click on "Install 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 are 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 local MCP (Model Context Protocol) server for Canvas LMS. Query your courses, assignments, grades, modules, and more from any MCP-compatible AI client — Claude Desktop, Cursor, VS Code Copilot, and others.
Your API key stays on your machine. Unlike hosted MCP servers that require you to hand over your Canvas credentials, this server runs locally and communicates directly with your Canvas instance.
Architecture
graph TB
subgraph "MCP Clients"
Claude["Claude Desktop"]
Cursor["Cursor / VS Code"]
Other["Other MCP Clients"]
end
subgraph "Your Machine (Local)"
Server["Canvas MCP Server<br/>Node.js + TypeScript"]
ENV["Environment Variables<br/>CANVAS_API_KEY"]
end
subgraph "Canvas LMS Tools"
Courses["list_courses"]
Assignments["get_assignments<br/>get_upcoming_assignments"]
Grades["get_grades<br/>get_submission_status"]
Content["get_modules<br/>get_announcements<br/>get_discussions"]
Calendar["get_calendar_events<br/>get_todo_items<br/>get_quizzes"]
Profile["get_user_profile"]
end
subgraph "Canvas Instance"
API["Canvas REST API<br/>HTTPS Only"]
end
Claude -->|stdio| Server
Cursor -->|stdio| Server
Other -->|stdio| Server
ENV -.->|read at startup| Server
Server --> Courses
Server --> Assignments
Server --> Grades
Server --> Content
Server --> Calendar
Server --> Profile
Courses --> API
Assignments --> API
Grades --> API
Content --> API
Calendar --> API
Profile --> API
style Server fill:#4CAF50,stroke:#333,color:#fff
style ENV fill:#FF9800,stroke:#333,color:#fff
style API fill:#2196F3,stroke:#333,color:#fff
style Claude fill:#7C4DFF,stroke:#333,color:#fff
style Cursor fill:#7C4DFF,stroke:#333,color:#fff
style Other fill:#7C4DFF,stroke:#333,color:#fff🔒 Privacy by design — your API key is read from local environment variables and sent only to your Canvas instance over HTTPS. No intermediary servers, no third-party storage.
Features
12 Canvas LMS tools — courses, assignments, grades, modules, quizzes, and more
Runs locally — your credentials never leave your machine
Zero config hosting — no servers, no Cloudflare, no Docker needed
Works with any MCP client — Claude Desktop, Cursor, VS Code Copilot, ChatGPT
TypeScript — fully typed with Zod validation
Quick Start
1. Get your Canvas API key
Go to Canvas → Account → Settings → Approved Integrations → New Access Token
📖 Never done this before? Follow the step-by-step guide with screenshots
2. Clone and build
git clone https://github.com/a-ariff/canvas-mcp.git
cd canvas-mcp
npm install
npm run build3. Add to your MCP client
Edit ~/Library/Application Support/Claude/claude_desktop_config.json:
{
"mcpServers": {
"canvas": {
"command": "node",
"args": ["/path/to/canvas-mcp/dist/standalone.js"],
"env": {
"CANVAS_API_KEY": "your-canvas-api-token",
"CANVAS_BASE_URL": "https://your-canvas-instance.edu"
}
}
}
}Add to your .cursor/mcp.json or VS Code MCP settings:
{
"mcpServers": {
"canvas": {
"command": "node",
"args": ["/path/to/canvas-mcp/dist/standalone.js"],
"env": {
"CANVAS_API_KEY": "your-canvas-api-token",
"CANVAS_BASE_URL": "https://your-canvas-instance.edu"
}
}
}
}4. Start chatting
Ask your AI assistant things like:
"What courses am I enrolled in?"
"What assignments are due this week?"
"Show me my grades for Computer Science 101"
"Are there any new announcements?"
Tools
Tool | Description | Args |
| Get all active courses | — |
| Get assignments for a course |
|
| Upcoming assignments across all courses | — |
| Grades and scores for a course |
|
| Your Canvas profile info | — |
| Course modules and structure |
|
| Recent course announcements |
|
| Discussion topics |
|
| Upcoming calendar events | — |
| Pending action items | — |
| Course quizzes |
|
| Assignment submission status |
|
Environment Variables
Variable | Required | Default | Description |
| Yes | — | Your Canvas API access token |
| No |
| Your Canvas instance URL |
| No |
| Enable debug logging |
Security
Local execution only — the server runs on your machine via stdio
Direct API calls — your Canvas API key is sent only to your Canvas instance, never to any third party
No data storage — nothing is cached or persisted between sessions
Environment-based config — credentials are read from environment variables, never hardcoded
Development
# install deps
npm install
# build
npm run build
# run locally
CANVAS_API_KEY=your-token CANVAS_BASE_URL=https://your-canvas.edu npm start
# run tests
npm test
# lint
npm run lintContributing
Contributions welcome! Please see CONTRIBUTING.md for guidelines.
License
This server cannot be installed
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/a-ariff/canvas-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server