Canvas LMS MCP Server
by Omm2005
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
```bash
npm install
```
## Configure environment variables
Use local vars for development by creating/updating `.dev.vars`:
```env
CANVAS_BASE_URL=https://your-school.instructure.com
CANVAS_TOKEN=your_canvas_token
```
For deployment, use Wrangler secrets instead of committing credentials:
```bash
wrangler secret put CANVAS_TOKEN
wrangler secret put CANVAS_BASE_URL
```
## Run locally
```bash
npm run dev
```
Default local URL:
- `http://localhost:8787/mcp`
Health check route:
- `http://localhost:8787/`
## Deploy
```bash
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:
```json
{
"mcpServers": {
"canvas": {
"command": "npx",
"args": [
"mcp-remote",
"https://<your-worker>.<your-subdomain>.workers.dev/mcp"
]
}
}
}
```
For local testing:
```json
{
"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.
This server cannot be deployed
Maintenance
ActivityInactive
ResponsivenessNo issues