Skip to main content
Glama

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).

Related MCP server: canvas-control

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 Connectors

Related MCP Servers