MCP server for Canvas LMS that exposes read-only tools for parent observers and student self-access to view profiles, courses, assignments, submissions, grades, calendar items, announcements, conversations, discussions, and files. It targets a Canvas instance via a configurable base URL, with support for several authentication methods.
From the registry: Canvas LMS (Instructure) for Claude — courses, grades, assignments, planner, files
$ npx canvas-parent-mcp-qr-login "<decoded-qr-url>" >> .envPlease install the `canvas-parent-mcp` MCP server into my current AI client (that's you).
Required prerequisites (do these first if not already done):
- **Install Node.js** — Node.js is required to run the MCP server via npx.
- **Set Canvas base URL** — You must know your Canvas instance base URL and set CANVAS_BASE_URL.
- **Choose one authentication method** — Configure one supported auth mode: fetchproxy browser extension, personal access token, OAuth credentials, or direct Canvas username/password.
Optional prerequisites:
- Install fetchproxy browser extension (recommended auth mode) — For the recommended zero-config auth mode, install the fetchproxy browser extension and sign into your Canvas instance in the browser once so the MCP can read the required cookies at startup. (https://github.com/chrischall/fetchproxy)
- Generate Canvas personal access token — If using token auth, create a personal access token in Canvas Account Settings if your institution allows it.
- Bootstrap OAuth credentials from Canvas mobile QR flow — If using OAuth auth, obtain CANVAS_CLIENT_ID, CANVAS_CLIENT_SECRET, and CANVAS_REFRESH_TOKEN. The README documents bootstrapping them from the Canvas mobile QR login flow. Run: `npx canvas-parent-mcp-qr-login "<decoded-qr-url>" >> .env`
Canonical MCP server config (stdio transport):
- command: `npx`
- args: ["-y","canvas-parent-mcp"]
- required environment variables:
- `CANVAS_BASE_URL`: Base URL of your Canvas instance. (example: `<your-canvas-base-url>`)
- optional environment variables:
- `CANVAS_TOKEN`: Canvas personal access token. Highest-priority auth mode if set. (example: `<your-canvas-token>`)
- `CANVAS_CLIENT_ID`: Canvas OAuth client ID, used with CANVAS_CLIENT_SECRET and CANVAS_REFRESH_TOKEN. (example: `<your-canvas-client-id>`)
- `CANVAS_CLIENT_SECRET`: Canvas OAuth client secret, used with CANVAS_CLIENT_ID and CANVAS_REFRESH_TOKEN. (example: `<your-canvas-client-secret>`)
- `CANVAS_REFRESH_TOKEN`: Canvas OAuth refresh token, used with CANVAS_CLIENT_ID and CANVAS_CLIENT_SECRET. (example: `<your-canvas-refresh-token>`)
- `CANVAS_USERNAME`: Canvas username for legacy direct-account username/password authentication. Only works for direct Canvas accounts, not SSO/2FA. (example: `<your-canvas-username>`)
- `CANVAS_PASSWORD`: Canvas password for legacy direct-account username/password authentication. (example: `<your-canvas-password>`)
- `CANVAS_NAME`: Optional Canvas site name for username/password mode; defaults to the host portion of CANVAS_BASE_URL. (example: `<your-canvas-name>`)
- `CANVAS_DISABLE_FETCHPROXY`: Set to 1 to disable fetchproxy fallback and require explicit credentials instead. (example: `1`)
Note: Auth modes are attempted from available environment variables in this priority order: CANVAS_TOKEN, OAuth credentials (CANVAS_CLIENT_ID/CANVAS_CLIENT_SECRET/CANVAS_REFRESH_TOKEN), username/password (CANVAS_USERNAME/CANVAS_PASSWORD), then fetchproxy fallback. CANVAS_BASE_URL is always required. Fetchproxy fallback requires no auth env vars but does require the browser extension and an active signed-in Canvas browser session.
Add this MCP server to my current client's config in the correct format for you. If you need secrets or credentials I haven't provided, ASK me — do not invent values or leave raw placeholders. After adding it, tell me how to verify the server is connected.CANVAS_BASE_URLrequiredBase URL of the Canvas instance to connect toCANVAS_TOKENPersonal access token for Canvas authenticationCANVAS_CLIENT_IDOAuth client ID for Canvas authenticationCANVAS_CLIENT_SECRETOAuth client secret for Canvas authenticationCANVAS_REFRESH_TOKENOAuth refresh token for Canvas authenticationCANVAS_USERNAMECanvas username for legacy session-scrape authenticationCANVAS_PASSWORDCanvas password for legacy session-scrape authenticationCANVAS_NAMEOptional Canvas name used with username/password modeCANVAS_DISABLE_FETCHPROXYDisable fetchproxy fallback authenticationMeta Ads MCP (Facebook + Instagram) - analyze performance, manage budgets, pause campaigns.