Canvas MCP

Canvas MCP

Enables interaction with Canvas LMS to access courses, modules, files, pages, assignments, submissions, announcements, upcoming deadlines, and syllabus.

Category
Visit Server

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 Link header up to per-call caps.
  • get_file_text decodes 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

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.

Official
Featured
TypeScript
Magic Component Platform (MCP)

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.

Official
Featured
Local
TypeScript
Audiense Insights MCP Server

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.

Official
Featured
Local
TypeScript
VeyraX MCP

VeyraX MCP

Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.

Official
Featured
Local
graphlit-mcp-server

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.

Official
Featured
TypeScript
Kagi MCP Server

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.

Official
Featured
Python
E2B

E2B

Using MCP to run code via e2b.

Official
Featured
Neon Database

Neon Database

MCP server for interacting with Neon Management API and databases

Official
Featured
Exa Search

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.

Official
Featured
Qdrant Server

Qdrant Server

This repository is an example of how to create a MCP server for Qdrant, a vector search engine.

Official
Featured