mcp-server-canvas-lms
Read-only MCP server for Canvas LMS that exposes tools to list courses, assignments, grades, submissions, syllabi, announcements, modules, pages, and files, without any write operations.
README
Canvas LMS MCP Server
A minimal, student-focused, strictly read-only MCP server for Canvas LMS.
It gives MCP clients access to courses, assignments, grades, submissions, syllabi, announcements, modules, pages, and files without exposing any Canvas write operation.
Requirements
- Node.js 20.19 or newer. Check with
node --version. - A Canvas personal access token. In Canvas, go to
Account -> Settings -> Approved Integrations -> + New Access Token. - Your institution's Canvas base URL, such as
https://canvas.example.edu. Do not include/api/v1.
[!WARNING] A Canvas token has your Canvas permissions. Never commit it, share it, paste it into an issue, or place it in a project configuration that may be shared.
Some institutions disable personal access tokens. If the New Access Token option is unavailable, ask your Canvas administrator whether personal tokens are permitted.
Quick start
The server is launched by an MCP client over standard input/output. Its primary command is:
npx -y mcp-server-canvas-lms
Configure these two environment variables in your MCP client:
CANVAS_BASE_URL=https://canvas.example.eduCANVAS_API_TOKEN=replace-with-your-personal-token
Then restart or reconnect the client and try this first connection check:
List my active Canvas courses.
See the exact setup for Codex, Claude Desktop, Cursor, VS Code, or a generic stdio client.
Tools
The server exposes exactly eleven tools:
| Tool | Reads |
|---|---|
canvas_list_courses |
Active courses, terms, and current scores |
canvas_list_assignments |
Assignments for one or all active courses |
canvas_get_assignment |
Requirements, rubric, and submission summary |
canvas_get_grades |
Course totals or assignment-level grades |
canvas_get_submission |
The current user's submission, comments, and rubric assessment |
canvas_get_syllabus |
A course syllabus as cleaned text |
canvas_list_announcements |
Recent course announcements |
canvas_list_modules |
Modules and their items |
canvas_get_page |
A course page by its Canvas URL slug |
canvas_list_files |
Course files and folders |
canvas_read_file |
Text from a supported course file |
Every Canvas API request is structurally restricted to HTTP GET. There are
no mutation methods, so this server cannot submit assignments, send messages,
change grades, edit course content, or perform administrative actions.
Troubleshooting
nodeornpxis missing: Install Node.js 20.19 or newer, reopen the client, and confirmnode --versionandnpx --versionin a terminal.- Personal tokens are disabled: If Canvas does not show
+ New Access Token, contact your institution's Canvas administrator. This server cannot bypass institutional policy restrictions. - Invalid or expired token: Create a new personal access token, replace the configured value, and restart the client. Never post the token in an issue.
- Base URL error: Use only the institution origin, for example
https://canvas.example.edu; remove/api/v1, course paths, and trailing account pages. - Tools do not appear: Fully restart the client after editing its MCP configuration, then check the client's MCP server list or logs.
403response: Canvas authenticated the request but the user or institution denied that resource. Check enrollment and institutional policy; a more privileged token is not recommended.429response: Canvas is rate-limiting requests. Wait and try again; use narrower course queries or lower result limits where available.- Institutional restrictions: Administrators may restrict personal tokens, API access, file downloads, or individual courses. Ask the institution's Canvas support team when browser access works but API access does not.
Project links
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.