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.
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
mcp-for-beginners
This open-source curriculum introduces the fundamentals of Model Context Protocol (MCP) through real-world, cross-language examples in .NET, Java, TypeScript, JavaScript, Rust and Python. Designed for developers, it focuses on practical techniques for building modular, scalable, and secure AI workflows from session setup to service orchestration.
bitbucket
Bitbucket MCP - A Model Context Protocol (MCP) server for integrating with Bitbucket Cloud and Server APIs
mcp-arr
MCP server for *arr media management suite
crawlbase
Crawlbase MCP Server connects AI agents and LLMs with real-time web data. It powers Claude, Cursor, and Windsurf integrations with battle-tested web scraping, JavaScript rendering, and anti-bot protection enabling structured, live data inside your AI workflows.
npm-search
MCP server for searching npm packages
webasyst
MCP server for Webasyst framework — tools for apps, plugins, themes, UI components via AI assistants (Claude, Cursor)