Skip to main content
Glama

Canvas MCP

Read-only FastMCP server for Canvas LMS study data.

This project is configured for CIAM Canvas by default:

https://ciam.instructure.com

Configuration

Set these environment variables before starting the server:

export CANVAS_BASE_URL="https://ciam.instructure.com"
export CANVAS_API_TOKEN="your-canvas-token"

Do not commit real Canvas tokens.

Related MCP server: CoursePack Local MCP Server

Install

cd /Users/zihanwang/Documents/Codex/canvas-mcp
uv sync --extra dev

Run

cd /Users/zihanwang/Documents/Codex/canvas-mcp
uv run canvas-mcp

The server speaks MCP over stdio.

MCP Client Config

Use this shape in an MCP client config. Replace your-canvas-token with your token in your local config only.

{
  "mcpServers": {
    "canvas": {
      "command": "uv",
      "args": [
        "--directory",
        "/Users/zihanwang/Documents/Codex/canvas-mcp",
        "run",
        "canvas-mcp"
      ],
      "env": {
        "CANVAS_BASE_URL": "https://ciam.instructure.com",
        "CANVAS_API_TOKEN": "your-canvas-token"
      }
    }
  }
}

Tools

  • canvas_self: current Canvas user.

  • canvas_courses: visible courses, defaulting to active enrollments.

  • canvas_course_assignments: assignments for a course.

  • canvas_upcoming_events: upcoming calendar events.

  • canvas_todo: todo items for the current user.

  • canvas_course_modules: modules and module items for a course.

  • canvas_course_pages: wiki pages for a course, with optional search.

  • canvas_course_files: files for a course, with optional folder filtering.

  • canvas_submissions: assignment submissions or visible course submissions.

  • canvas_raw_get: read-only escape hatch for /api/v1/... Canvas paths.

Local Verification

cd /Users/zihanwang/Documents/Codex/canvas-mcp
uv run pytest -v
uv run python -c "from canvas_mcp.server import mcp; print(mcp.name)"

Expected output from the smoke test:

Canvas LMS

Live API Smoke Test

After setting CANVAS_API_TOKEN, this should return your Canvas user profile:

cd /Users/zihanwang/Documents/Codex/canvas-mcp
uv run python - <<'PY'
from canvas_mcp.client import CanvasClient, CanvasConfig

client = CanvasClient(CanvasConfig.from_env())
try:
    print(client.get("users/self", paginate=False))
finally:
    client.close()
PY
Install Server
F
license - not found
B
quality
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

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/zihan1997/canvas-mcp'

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