Get the FREE Ultimate OpenClaw Setup Guide →

mcp-canvas-lms

Version 2.2 - 54 tools available - an MCP server for interacting with the Canvas LMS API. This server allows you to manage courses, assignments, enrollments, and grades within Canvas.

Installation
Run this command in your terminal to add the MCP server to Claude Code.
Run in terminal:
Command
claude mcp add --transport stdio dmontgomery40-mcp-canvas-lms npx -y canvas-mcp-server \
  --env CANVAS_DOMAIN="your_school.instructure.com" \
  --env CANVAS_API_TOKEN="your_token_here"

How to use

This MCP server exposes Canvas LMS functionality via Model Context Protocol endpoints, enabling programmatic access to student, instructor, and account administration features. It includes transport options for local tooling and containerized deployments, with a strong emphasis on account-wide management, reports, and comprehensive course and user workflows. Tools available cover core Canvas operations such as listing courses, modules, discussions, assignments, and grades, as well as administration tasks like creating users, managing courses and sub-accounts, and generating analytics reports. You can interact with the server using the built-in tools described in the available toolset, or wire it into your Claude/Codex/Cursor workflows through the standard MCP transport channels (stdio or streamable-http).

How to install

Prerequisites:

  • Node.js v14+ and npm/yarn
  • Access token and domain for Canvas (for API interactions)
  • Optional: Docker, Kubernetes if you plan to containerize

Install and run locally (preferred for development):

# Install dependencies
git clone https://github.com/DMontgomery40/mcp-canvas-lms.git
cd mcp-canvas-lms
npm install

# Start the server locally (examples assume the npm package provides a binary via npx)
npx -y canvas-mcp-server

Alternative: install globally via npm and run

# Install globally
npm install -g canvas-mcp-server

# Configure environment variables
export CANVAS_API_TOKEN="your_token_here"
export CANVAS_DOMAIN="your_school.instructure.com"

# Run
canvas-mcp-server

Docker deployment example:

docker run -d \
  --name canvas-mcp \
  -p 3000:3000 \
  -e CANVAS_API_TOKEN="your_token" \
  -e CANVAS_DOMAIN="school.instructure.com" \
  -e MCP_TRANSPORT="streamable-http" \
  -e MCP_HTTP_HOST="0.0.0.0" \
  -e MCP_HTTP_PORT="3000" \
  -e MCP_HTTP_PATH="/mcp" \
  ghcr.io/dmontgomery40/mcp-canvas-lms:latest

Additional notes

Notes and tips:

  • For account-wide operations, ensure your Canvas API token has administrative privileges.
  • The server supports two transport modes: stdio (default) for local wiring and streamable-http for containerized or HTTP-based integrations. Set MCP_TRANSPORT to select the mode and configure MCP_HTTP_HOST/PORT/MCP_HTTP_PATH for HTTP transport.
  • When deploying in Kubernetes or Docker, consider using the provided health checks and readiness probes to monitor MCP health.
  • The project emphasizes strict typing (TypeScript) and robust API patterns; run type-check and lint during development to catch issues early.
  • If you encounter a course creation issue, make sure the account_id parameter is provided as part of the request payload.

Related MCP Servers

Sponsor this space

Reach thousands of developers