canvas-mcp
Provides tools for interacting with Canvas LMS, enabling users to list active courses, upcoming assignments, and recent announcements.
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-mcpList my assignments due in the next 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
An MCP server that exposes Canvas LMS data (courses, assignments, announcements) to any MCP-compatible client (Claude Desktop, Claude Code, etc.).
This repository ships with no credentials. There is no Canvas token and no email address anywhere in it. You supply your own token in a local
.envfile that is git-ignored and never leaves your machine. See Where your token goes.
Prerequisites
uv (Python package manager)
A Canvas LMS account with an API token
Related MCP server: canvas-mcp
Setup
1. Generate a Canvas API token
Log in to your school's Canvas site (for example
https://canvas.fen.uchile.cl)Go to Account → Settings → Approved Integrations
Click + New Access Token, give it a name, and copy the token
2. Configure the environment
Where your token goes: in a file named exactly .env, in the root of this
project folder (right next to main.py). That file is listed in .gitignore,
so git will never commit or push it.
Copy the template:
cp .env.example .envThen open .env and fill in the blanks:
# Your Canvas instance URL -- change this to your school's Canvas address
CANVAS_URL=https://canvas.fen.uchile.cl
# Paste the token from step 1 here
CANVAS_API_TOKEN=
# Optional second account (use account="udd" in the tools). Leave blank if unused.
CANVAS_UDD_URL=
CANVAS_UDD_TOKEN=Only CANVAS_URL and CANVAS_API_TOKEN are required. The CANVAS_UDD_* pair is
for an optional second Canvas account; leave both blank if you only have one.
Never commit
.env, never paste your token into a chat, and never put it in a file that gets shared. It grants full access to your Canvas account. If it leaks, delete the token in Canvas (Account -> Settings -> Approved Integrations) and generate a new one.
3. Install dependencies
uv sync4. Run the server manually (optional test)
uv run python main.pyThe server communicates over stdio, so it won't print anything until an MCP client connects.
Connecting to Claude Desktop
Add the following to your Claude Desktop config file:
Windows: %APPDATA%\Claude\claude_desktop_config.json
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
{
"mcpServers": {
"canvas": {
"command": "uv",
"args": ["run", "--project", "/absolute/path/to/canvas-mcp", "python", "main.py"]
}
}
}Replace /absolute/path/to/canvas-mcp with the real path to this folder. Use
forward slashes / even on Windows.
No token goes in this file. It is read from your
.env(see Where your token goes) --python-dotenvloads it automatically.
Connecting to Claude Code
Add the MCP server in your Claude Code settings or run:
claude mcp add canvas -- uv run --project /absolute/path/to/canvas-mcp python main.pyAvailable Tools
Tool | Description |
| Lists all active enrolled courses |
| Lists upcoming assignments sorted by due date |
| Lists recent announcements per course |
Project structure
canvas-mcp/
├── main.py # MCP server
├── .env # Your token lives here (git-ignored, never pushed)
├── .env.example # Template
├── pyproject.toml # Project metadata & dependencies
└── uv.lock # Locked dependency versionsMaintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseAqualityAmaintenanceMCP server for Canvas LMS enabling parent observers and students to access courses, assignments, grades, and more. Supports multiple authentication methods including token, OAuth, and a convenient fetchproxy fallback.18165MIT
- AlicenseNot gradedqualityCmaintenanceEnables managing Canvas LMS courses, assignments, grades, modules, and more from MCP-compatible clients like Claude Desktop, Kiro, or Amazon Q Developer.MIT
- AlicenseNot gradedqualityDmaintenanceMCP server for Canvas LMS with automatic OAuth authentication. Enables interaction with courses, assignments, grades, modules, discussions, quizzes, files, calendar, messaging, and more without manual API token management.339MIT
- AlicenseNot gradedqualityCmaintenanceA read-only MCP server for Canvas LMS that exposes a user's courses, upcoming work, and assignments as callable tools.MIT
Related MCP Connectors
Read-only MCP server for ClassQuill, a tutoring-business-management platform.
MCP adapter for the Paxaver school community platform. Streamable HTTP, OAuth 2.1, capability auth.
MCP server for the Inistate platform: module discovery, entry management, and activity submission.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/salvadoracuna/canvas-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server