Canvas LMS MCP Server

Local setup required. This server has to be cloned and prepared on your machine before you register it in Claude Code.
1

Set the server up locally

Run this once to clone and prepare the server before adding it to Claude Code.

Run in terminal
npm install
npm run build
2

Register it in Claude Code

After the local setup is done, run this command to point Claude Code at the built server.

Run in terminal
claude mcp add -e "CANVAS_BASE_URL=${CANVAS_BASE_URL}" -e "CANVAS_ACCESS_TOKEN=${CANVAS_ACCESS_TOKEN}" canvas-lms -- node "<FULL_PATH_TO_MCP_SERVER_CANVAS>/dist/index.js"

Replace <FULL_PATH_TO_MCP_SERVER_CANVAS>/dist/index.js with the actual folder you prepared in step 1.

Required:CANVAS_BASE_URLCANVAS_ACCESS_TOKEN
README.md

A Model Context Protocol (MCP) server implementation for the Canvas LMS API.

Canvas MCP Server

A Model Context Protocol (MCP) server implementation for the Canvas LMS API. This server provides functionality to interact with Canvas LMS programmatically.

Features

  • List courses from Canvas LMS with optional enrollment type filtering
  • Interactive help prompts for using the tools

Prerequisites

  • Node.js 18 or later
  • A Canvas LMS instance
  • Canvas API access token
  • Cursor (for client integration)

Setup

  1. Clone this repository
  2. Install dependencies:
    npm install
    
  3. Set up environment variables:
    export CANVAS_BASE_URL="https://your-canvas-instance.com"
    export CANVAS_ACCESS_TOKEN="your-api-token"
    
  4. Build the project:
    npm run build
    
  5. Start the server:
    npm start
    

Connecting with Cursor

To use this MCP server with Cursor:

  1. Open Cursor's settings
  2. Navigate to the MCP configuration section
  3. Add a new server configuration:
    {
      "mcpServers": {
        "canvas": {
          "command": "npm",
          "args": [
            "start"
          ],
          "cwd": "/path/to/mcp-server-canvas"
        }
      }
    }
    
  4. Save the configuration and restart Cursor
  5. The Canvas tools will now be available in Cursor's MCP tools panel

Available Tools

list_courses

Lists all courses from Canvas LMS.

Parameters:

  • enrollment_type (optional): Filter courses by enrollment type (teacher, student, ta)

Example response:

{
  "content": [
    {
      "type": "text",
      "text": [
        {
          "id": 1234,
          "name": "Example Course",
          "code": "EX101",
          "state": "available",
          "startDate": "2024-01-01T00:00:00Z",
          "endDate": "2024-12-31T23:59:59Z"
        }
      ]
    }
  ]
}

list-courses-help

An interactive prompt that provides help with using the list_courses tool.

Development

The server is built using TypeScript and the MCP SDK. To add new features:

  1. Add new API methods to the CanvasAPI class
  2. Register new tools using server.tool()
  3. Register help prompts using server.prompt()
  4. Build and test your changes

Troubleshooting

If you encounter issues:

  1. Check that environment variables are set correctly
  2. Verify your Canvas API token has the necessary permissions
  3. Check Cursor's MCP server logs for any error messages
  4. Ensure the server path in Cursor's configuration is correct

License

MIT

Tools (2)

list_coursesLists all courses from Canvas LMS.
list-courses-helpAn interactive prompt that provides help with using the list_courses tool.

Environment Variables

CANVAS_BASE_URLrequiredThe URL of your Canvas LMS instance
CANVAS_ACCESS_TOKENrequiredYour Canvas API access token

Configuration

claude_desktop_config.json
{"mcpServers": {"canvas": {"command": "npm", "args": ["start"], "cwd": "/path/to/mcp-server-canvas"}}}

Try it

List all the courses I am currently enrolled in.
Show me only the courses where I am a teacher.
Can you help me understand how to use the list_courses tool?
List all available courses from my Canvas account.

Frequently Asked Questions

What are the key features of Canvas LMS?

List courses from Canvas LMS. Filter courses by enrollment type (teacher, student, ta). Interactive help prompts for tool usage.

What can I use Canvas LMS for?

Quickly retrieving course lists for academic planning. Automating the organization of course materials for instructors. Integrating Canvas LMS data directly into AI-assisted development workflows.

How do I install Canvas LMS?

Install Canvas LMS by running: npm install && npm run build

What MCP clients work with Canvas LMS?

Canvas LMS works with any MCP-compatible client including Claude Desktop, Claude Code, Cursor, and other editors with MCP support.

Turn this server into reusable context

Keep Canvas LMS docs, env vars, and workflow notes in Conare so your agent carries them across sessions.

Need the old visual installer? Open Conare IDE.
Open Conare