start_mcp_server.sh helper script as the stdio command, which handles environment loading automatically. For networked or remote clients, you can run the server in HTTP mode instead.
stdio clients (Claude Desktop, Cursor)
Desktop MCP clients like Claude Desktop and Cursor launch the server as a subprocess over stdio. All you need is a JSON config snippet pointing to thestart_mcp_server.sh script.
- Claude Desktop
- Cursor
Locate the config file
On macOS, Claude Desktop reads its MCP server configuration from:Add the Canvas MCP entry
Open the config file
Open
~/Library/Application Support/Claude/claude_desktop_config.json in any text editor.Add the canvasmcp entry
Paste the following, replacing the path with the absolute path to your
canvasmcp checkout:claude_desktop_config.json
On macOS, the first run will trigger a Keychain prompt asking for Chrome cookie access. Click Allow or Always Allow to let Canvas MCP read your Canvas session.
What start_mcp_server.sh does
The helper script resolves its own location, changes to the project root, and runs:
scripts/start_mcp_server.sh
canvas-mcp, so you can append any CLI flag (for example, --transport http) and it will be forwarded correctly. The --env-file .env flag ensures CANVAS_BASE_URL and any other environment variables are loaded before the server starts.
HTTP transport (networked clients)
If your MCP client connects over the network rather than launching a local subprocess, run Canvas MCP in HTTP mode on a reachable interface:Start the HTTP server
http://127.0.0.1:8000/mcp.Troubleshooting
The server exits immediately after launch. Canvas MCP callsensure_canvas_auth_configured() before starting. If it cannot find a Canvas base URL or valid Chrome cookies, it exits with an error. Run uv run canvas auth-status in a terminal to see the exact failure reason.
Claude Desktop shows no Canvas tools.
Double-check that the path in command is an absolute path and that the script is executable (chmod +x scripts/start_mcp_server.sh). Relative paths are not supported in MCP client configs.
macOS Keychain prompt keeps appearing.
Click Always Allow (not just Allow) when macOS asks for Keychain access. Clicking Allow only grants access for the current session and the prompt will reappear on the next launch.
Multiple Canvas domains in Chrome.
If you have cookies for more than one Canvas institution, set CANVAS_BASE_URL explicitly in .env to tell the server which domain to use:
.env
