mcp-server-canvas-lms

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.

Category
Visit Server

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.edu
  • CANVAS_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

  • node or npx is missing: Install Node.js 20.19 or newer, reopen the client, and confirm node --version and npx --version in 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.
  • 403 response: Canvas authenticated the request but the user or institution denied that resource. Check enrollment and institutional policy; a more privileged token is not recommended.
  • 429 response: 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

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.

Official
Featured
TypeScript
Magic Component Platform (MCP)

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.

Official
Featured
Local
TypeScript
Audiense Insights MCP Server

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.

Official
Featured
Local
TypeScript
VeyraX MCP

VeyraX MCP

Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.

Official
Featured
Local
graphlit-mcp-server

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.

Official
Featured
TypeScript
Kagi MCP Server

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.

Official
Featured
Python
E2B

E2B

Using MCP to run code via e2b.

Official
Featured
Neon Database

Neon Database

MCP server for interacting with Neon Management API and databases

Official
Featured
Exa Search

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.

Official
Featured
Qdrant Server

Qdrant Server

This repository is an example of how to create a MCP server for Qdrant, a vector search engine.

Official
Featured