Canvas LMS MCP Server

Omm2005/Canvas-LMS-MCP
0 starsCommunity

Install to Claude Code

This server doesn't publish a one-line install command. Follow the setup in the source repository.

Summary

Exposes Canvas LMS tools for courses, assignments, and quizzes via a remote MCP server running on Cloudflare Workers. Enables querying active courses and upcoming assignments/quizzes through natural language.

README.md

Canvas LMS MCP Server (Cloudflare Workers)

Remote MCP server that connects to Canvas LMS and exposes course/assignment/quiz tools over Cloudflare Workers.

What this server provides

The MCP agent is served at:

  • GET /mcp (MCP endpoint)

It currently implements these tools:

  • get_active_courses: Returns active courses filtered to course names containing SP or FL.
  • get_assignments: Returns assignments due in the next n days (1-90, default 7).
  • get_quizzes: Returns quizzes due in the next n days (1-90, default 7).

Prerequisites

  • Node.js 18+ (or newer)
  • npm
  • A Cloudflare account
  • A Canvas LMS access token and base URL (for example https://sjsu.instructure.com)

Install

npm install

Configure environment variables

Use local vars for development by creating/updating .dev.vars:

CANVAS_BASE_URL=https://your-school.instructure.com
CANVAS_TOKEN=your_canvas_token

For deployment, use Wrangler secrets instead of committing credentials:

wrangler secret put CANVAS_TOKEN
wrangler secret put CANVAS_BASE_URL

Run locally

npm run dev

Default local URL:

  • http://localhost:8787/mcp

Health check route:

  • http://localhost:8787/

Deploy

npm run deploy

After deploy, your MCP endpoint is:

  • https://<your-worker>.<your-subdomain>.workers.dev/mcp

Use with an MCP client (example: Claude Desktop via mcp-remote)

Add/update your MCP client config:

{
  "mcpServers": {
    "canvas": {
      "command": "npx",
      "args": [
        "mcp-remote",
        "https://<your-worker>.<your-subdomain>.workers.dev/mcp"
      ]
    }
  }
}

For local testing:

{
  "mcpServers": {
    "canvas": {
      "command": "npx",
      "args": ["mcp-remote", "http://localhost:8787/mcp"]
    }
  }
}

Useful scripts

  • npm run dev: Start local Worker development server.
  • npm run deploy: Deploy to Cloudflare Workers.
  • npm run type-check: Run TypeScript type checking.
  • npm run lint:fix: Auto-fix lint issues via oxlint.
  • npm run format: Format repo with oxfmt.
  • npm run cf-typegen: Regenerate Wrangler type bindings.

Project structure

  • src/index.ts: MCP server definition and tool implementations.
  • src/lib/helper.ts: Canvas pagination (Link header parsing).
  • public/: Static assets for Worker static asset binding.
  • wrangler.jsonc: Cloudflare Worker configuration.

Related MCP servers

Browse all →