PluginBench
MCP Server
Active
MIT

io.github.chrischall/canvas-parent-mcp MCP Server

io.github.chrischall/canvas-parent-mcp

What is the io.github.chrischall/canvas-parent-mcp MCP server?

Canvas LMS (Instructure) for Claude — courses, grades, assignments, planner, files

How to install io.github.chrischall/canvas-parent-mcp

Copy-paste configuration for popular MCP clients.

transport: stdio
Config generated by PluginBench — verify against the source before use.
Environment / auth
  • CANVAS_BASE_URL
    required

    Canvas instance base URL, e.g. https://cms.instructure.com

  • CANVAS_USERNAME

    Canvas login username/email (recommended) — pair with CANVAS_PASSWORD for auto-login. No SSO/2FA.

  • CANVAS_PASSWORD
    secret

    Canvas password (recommended) — required iff CANVAS_USERNAME is set

  • CANVAS_TOKEN
    secret

    Canvas personal access token (advanced) — most schools have disabled token creation

  • CANVAS_CLIENT_ID

    Canvas OAuth client ID (advanced — for SSO accounts that can't use username/password)

  • CANVAS_CLIENT_SECRET
    secret

    Canvas OAuth client secret (advanced)

  • CANVAS_REFRESH_TOKEN
    secret

    Canvas OAuth refresh token (advanced) — bootstrap via canvas-parent-mcp-qr-login

  • CANVAS_NAME

    Friendly name for the Canvas instance (defaults to the host portion of the base URL)

Claude Desktop
~/Library/Application Support/Claude/claude_desktop_config.json
{
  "mcpServers": {
    "canvas-parent-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "canvas-parent-mcp"
      ],
      "env": {
        "CANVAS_BASE_URL": "<YOUR_CANVAS_BASE_URL>",
        "CANVAS_USERNAME": "<YOUR_CANVAS_USERNAME>",
        "CANVAS_PASSWORD": "<YOUR_CANVAS_PASSWORD>",
        "CANVAS_TOKEN": "<YOUR_CANVAS_TOKEN>",
        "CANVAS_CLIENT_ID": "<YOUR_CANVAS_CLIENT_ID>",
        "CANVAS_CLIENT_SECRET": "<YOUR_CANVAS_CLIENT_SECRET>",
        "CANVAS_REFRESH_TOKEN": "<YOUR_CANVAS_REFRESH_TOKEN>",
        "CANVAS_NAME": "<YOUR_CANVAS_NAME>"
      }
    }
  }
}
Cursor
~/.cursor/mcp.json
{
  "mcpServers": {
    "canvas-parent-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "canvas-parent-mcp"
      ],
      "env": {
        "CANVAS_BASE_URL": "<YOUR_CANVAS_BASE_URL>",
        "CANVAS_USERNAME": "<YOUR_CANVAS_USERNAME>",
        "CANVAS_PASSWORD": "<YOUR_CANVAS_PASSWORD>",
        "CANVAS_TOKEN": "<YOUR_CANVAS_TOKEN>",
        "CANVAS_CLIENT_ID": "<YOUR_CANVAS_CLIENT_ID>",
        "CANVAS_CLIENT_SECRET": "<YOUR_CANVAS_CLIENT_SECRET>",
        "CANVAS_REFRESH_TOKEN": "<YOUR_CANVAS_REFRESH_TOKEN>",
        "CANVAS_NAME": "<YOUR_CANVAS_NAME>"
      }
    }
  }
}
Windsurf
~/.codeium/windsurf/mcp_config.json
{
  "mcpServers": {
    "canvas-parent-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "canvas-parent-mcp"
      ],
      "env": {
        "CANVAS_BASE_URL": "<YOUR_CANVAS_BASE_URL>",
        "CANVAS_USERNAME": "<YOUR_CANVAS_USERNAME>",
        "CANVAS_PASSWORD": "<YOUR_CANVAS_PASSWORD>",
        "CANVAS_TOKEN": "<YOUR_CANVAS_TOKEN>",
        "CANVAS_CLIENT_ID": "<YOUR_CANVAS_CLIENT_ID>",
        "CANVAS_CLIENT_SECRET": "<YOUR_CANVAS_CLIENT_SECRET>",
        "CANVAS_REFRESH_TOKEN": "<YOUR_CANVAS_REFRESH_TOKEN>",
        "CANVAS_NAME": "<YOUR_CANVAS_NAME>"
      }
    }
  }
}
VS Code
.vscode/mcp.json
{
  "servers": {
    "canvas-parent-mcp": {
      "type": "stdio",
      "command": "npx",
      "args": [
        "-y",
        "canvas-parent-mcp"
      ],
      "env": {
        "CANVAS_BASE_URL": "<YOUR_CANVAS_BASE_URL>",
        "CANVAS_USERNAME": "<YOUR_CANVAS_USERNAME>",
        "CANVAS_PASSWORD": "<YOUR_CANVAS_PASSWORD>",
        "CANVAS_TOKEN": "<YOUR_CANVAS_TOKEN>",
        "CANVAS_CLIENT_ID": "<YOUR_CANVAS_CLIENT_ID>",
        "CANVAS_CLIENT_SECRET": "<YOUR_CANVAS_CLIENT_SECRET>",
        "CANVAS_REFRESH_TOKEN": "<YOUR_CANVAS_REFRESH_TOKEN>",
        "CANVAS_NAME": "<YOUR_CANVAS_NAME>"
      }
    }
  }
}
Claude Code
claude mcp add canvas-parent-mcp --env CANVAS_BASE_URL=<YOUR_CANVAS_BASE_URL> --env CANVAS_USERNAME=<YOUR_CANVAS_USERNAME> --env CANVAS_PASSWORD=<YOUR_CANVAS_PASSWORD> --env CANVAS_TOKEN=<YOUR_CANVAS_TOKEN> --env CANVAS_CLIENT_ID=<YOUR_CANVAS_CLIENT_ID> --env CANVAS_CLIENT_SECRET=<YOUR_CANVAS_CLIENT_SECRET> --env CANVAS_REFRESH_TOKEN=<YOUR_CANVAS_REFRESH_TOKEN> --env CANVAS_NAME=<YOUR_CANVAS_NAME> -- npx -y canvas-parent-mcp

Related MCP servers

OurFamilyWizard co-parenting for Claude — messages, calendar, expenses, and journal

5
TypeScript
MIT
View repository →

Zola wedding planning for Claude — vendors, budget, guests, seating, registry, and RSVPs

3
TypeScript
MIT
View repository →

Redfin real-estate for Claude — search, property details, market reports, saved homes

2
TypeScript
MIT
View repository →

Google Sheets (and more) for Claude via gogcli — read, write, and manage spreadsheets

1
TypeScript
MIT
View repository →

Google Classroom via gogcli for Claude — courses, assignments, submissions, grading

1
TypeScript
MIT
View repository →

Extended Google Docs for Claude via gogcli — auth + full Docs and comments support

1
TypeScript
MIT
View repository →