Canvas MCP
Enables interaction with Canvas LMS to access courses, modules, files, pages, assignments, submissions, announcements, upcoming deadlines, and syllabus.
README
Canvas MCP
MCP server that exposes Canvas LMS as tools — courses, modules, files, pages, assignments, submissions/grades, announcements, upcoming deadlines, and syllabus.
Designed to be consumed by Ada (chat tool loop / edge functions) and any other MCP client (Claude Desktop, Cursor, etc.).
Setup
cd mcps/canvas
npm install
npm run build
Create .env (or pass through your MCP client config):
CANVAS_BASE_URL=https://canvas.asu.edu/api/v1
CANVAS_TOKEN=your_canvas_personal_access_token
Generate the token in Canvas: Account → Settings → New Access Token.
Run
Stdio transport (default for MCP clients):
CANVAS_BASE_URL=... CANVAS_TOKEN=... node dist/index.js
Tools
| Tool | Purpose |
|---|---|
list_courses |
Active enrollments with term + dates |
get_course |
Single course incl. syllabus body |
list_modules |
Modules with items inlined |
list_module_items |
Items in one module |
get_file_metadata |
File info + download URL |
get_file_text |
Download file body as UTF-8 text (truncated) |
list_pages / get_page |
Wiki pages |
list_assignments / get_assignment |
Assignments by due date |
list_my_submissions |
Current student's grades + late/missing |
list_announcements |
Announcements across courses |
list_upcoming |
Upcoming events for the user |
get_syllabus |
Syllabus HTML |
Claude Desktop config
{
"mcpServers": {
"canvas": {
"command": "node",
"args": ["/absolute/path/to/ada/mcps/canvas/dist/index.js"],
"env": {
"CANVAS_BASE_URL": "https://canvas.asu.edu/api/v1",
"CANVAS_TOKEN": "..."
}
}
}
}
Cloudflare Workers (HTTP transport)
src/worker.ts exposes the same toolset over HTTP for hosting on Cloudflare
Workers. Deploy with:
npx wrangler deploy
Set the secrets once via wrangler secret put:
echo "https://canvas.asu.edu/api/v1" | npx wrangler secret put CANVAS_BASE_URL
echo "your_canvas_token" | npx wrangler secret put CANVAS_TOKEN
The Worker accepts JSON-RPC tools/list and tools/call POSTs.
Multi-tenant headers (override env per request — Ada uses these):
Authorization: Bearer <user's canvas PAT>
X-Canvas-Base-Url https://canvas.<institution>.edu/api/v1
X-Ada-Service-Key <ADA_SERVICE_KEY> # required when env.ADA_SERVICE_KEY is set
When no headers are present, the worker falls back to the CANVAS_BASE_URL /
CANVAS_TOKEN secrets (single-tenant mode). Set ADA_SERVICE_KEY to gate
header-based requests behind a shared secret:
echo "$(openssl rand -hex 32)" | npx wrangler secret put ADA_SERVICE_KEY
Notes
- Canvas pagination is followed automatically via the
Linkheader up to per-call caps. get_file_textdecodes as UTF-8; binary formats (PDF, DOCX) need upstream extraction.- Single-tenant by env var. For multi-user (Ada), spawn one process per user or swap stdio for an HTTP transport that accepts a per-request token.
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.