Skip to main content
Glama

Canvas MCP Server

A Model Context Protocol (MCP) server providing read-only access to Canvas LMS for student workflows, with optional NotebookLM integration for study material organization.

Features

  • 45 Tools covering Canvas LMS functionality

  • Read-only access - Safe for student use

  • Smart caching - Reduces API calls

  • Rate limiting - Respects Canvas API limits (~3000 req/hour)

  • NotebookLM integration - Upload course content for AI-powered study

Quick Start

1. Install Dependencies

npm install
npm run build

2. Configure Environment

cp .env.example .env
# Edit .env with your Canvas credentials

Required settings:

  • CANVAS_BASE_URL - Your Canvas instance URL

  • CANVAS_API_TOKEN - Generate at Canvas > Account > Settings > New Access Token

3. Add to Claude Code

Add to your Claude Code MCP configuration (~/.claude/claude_desktop_config.json):

{
  "mcpServers": {
    "canvas": {
      "command": "node",
      "args": ["dist/index.js"],
      "cwd": "/path/to/canvas-mcp-server",
      "env": {
        "CANVAS_BASE_URL": "https://your-school.instructure.com",
        "CANVAS_API_TOKEN": "your_token_here"
      }
    }
  }
}

4. (Optional) Setup NotebookLM

For NotebookLM integration:

cd src/python-bridge
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
playwright install chromium

Then use notebooklm_auth_setup tool for interactive Google login.

Available Tools (45 total)

Phase 1: Core (5 tools)

Tool

Description

canvas_course_list

List enrolled courses

canvas_course_get

Get course details

canvas_assignment_list

List assignments (with bucket filtering)

canvas_assignment_get

Get assignment details

canvas_get_my_submission

Get your submission for an assignment

Phase 2: Content (16 tools)

Tool

Description

canvas_module_list

List course modules

canvas_module_get

Get module details

canvas_module_items

List items in a module

canvas_module_progress

Get module completion progress

canvas_file_list

List files in a folder

canvas_file_get

Get file metadata

canvas_file_search

Search for files

canvas_folder_list

List folders

canvas_file_download

Download file content

canvas_discussion_list

List discussions

canvas_discussion_get

Get discussion with replies

canvas_announcement_list

List announcements

canvas_planner_items

Get planner items

canvas_todo_list

Get todo items

canvas_upcoming_events

Get upcoming events

canvas_missing_submissions

Get missing assignments

Phase 3: Assessment (8 tools)

Tool

Description

canvas_rubric_list

List rubrics in a course

canvas_rubric_get

Get rubric details

canvas_rubric_for_assignment

Get rubric for an assignment

canvas_quiz_list

List quizzes

canvas_quiz_get

Get quiz details

canvas_quiz_submission

Get your quiz submission

canvas_group_list

List your groups

canvas_group_members

List group members

Phase 4: User (11 tools)

Tool

Description

canvas_bookmark_list

List your bookmarks

canvas_bookmark_create

Create a bookmark

canvas_bookmark_delete

Delete a bookmark

canvas_inbox_list

List inbox messages

canvas_inbox_get

Get conversation details

canvas_inbox_unread_count

Get unread message count

canvas_notification_list

List notifications

canvas_dashboard

Comprehensive dashboard view

canvas_profile

Get your profile

canvas_grades_overview

Get grades across courses

canvas_cache_status

View/clear cache

Phase 5: NotebookLM (5 tools)

Tool

Description

notebooklm_auth_check

Check Google auth status

notebooklm_auth_setup

Interactive Google login

notebooklm_list_notebooks

List NotebookLM notebooks

notebooklm_upload_sources

Upload sources to notebook

notebooklm_prepare_content

Convert/split files for upload

Authentication

Canvas API (Primary)

  • API Token: Required for all API calls

  • Generate at: Canvas > Account > Settings > New Access Token

  • Provides access to your enrolled courses, assignments, grades, etc.

Cookies (Secondary, Optional)

  • Only needed if file downloads return 403 errors

  • Export browser cookies using extensions like "Get cookies.txt"

  • Set CANVAS_COOKIES_FILE in your environment

NotebookLM (Interactive)

  • Uses Playwright browser automation (no public API exists)

  • Run notebooklm_auth_setup once to save Google session

  • Session persists in src/python-bridge/state.json

Architecture

canvas-mcp-server/
├── src/
│   ├── core/
│   │   ├── auth.ts        # Token + cookie authentication
│   │   ├── cache.ts       # Memory cache with TTL
│   │   ├── client.ts      # Canvas API client
│   │   ├── pagination.ts  # Link header parsing
│   │   └── rate-limiter.ts # Token bucket rate limiter
│   ├── tools/
│   │   ├── courses.ts     # Course tools
│   │   ├── assignments.ts # Assignment tools
│   │   ├── modules.ts     # Module tools
│   │   ├── files.ts       # File tools
│   │   ├── discussions.ts # Discussion tools
│   │   ├── planner.ts     # Planner tools
│   │   ├── rubrics.ts     # Rubric tools
│   │   ├── quizzes.ts     # Quiz tools
│   │   ├── groups.ts      # Group tools
│   │   ├── bookmarks.ts   # Bookmark tools
│   │   ├── communication.ts # Inbox/notification tools
│   │   ├── dashboard.ts   # Dashboard tools
│   │   └── notebooklm.ts  # NotebookLM tools
│   ├── python-bridge/
│   │   ├── notebooklm_auth.py   # Google auth management
│   │   ├── notebooklm_upload.py # Source upload automation
│   │   └── requirements.txt     # Python dependencies
│   ├── types/
│   │   └── canvas.ts      # TypeScript types
│   ├── server.ts          # MCP server
│   └── index.ts           # Entry point
├── .env.example           # Environment template
├── mcp.json               # MCP configuration
└── package.json

Rate Limits

Canvas API allows ~3000 requests per hour. This server implements:

  • Token bucket rate limiter (0.8 req/sec default)

  • Smart caching (5-30 min TTL per resource type)

  • Automatic retry with backoff on 429 responses

License

MIT

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Shigakuresama/canvas-mcp-developer'

If you have feedback or need assistance with the MCP directory API, please join our Discord server