View as Markdown

Canvas LMS Integration

Manage Canvas LMS list courses, get course, list assignments, create assignment, list submissions

The Canvas LMS integration provides access to manage Canvas LMS list courses, get course, list assignments, create assignment, list submissions through the Integrate MCP server.

Installation

The Canvas LMS integration is included with the SDK:

import { canvasLmsIntegration } from "integrate-sdk/server";

Setup

1. Create a Canvas LMS OAuth App

  1. Create an OAuth application for Canvas LMS
  2. Configure your redirect URI
  3. Note your Client ID and Client Secret

2. Configure the Integration on Your Server

Add the Canvas LMS integration to your server configuration. The integration automatically reads CANVAS_LMS_CLIENT_ID and CANVAS_LMS_CLIENT_SECRET from your environment variables:

import { createMCPServer, canvasLmsIntegration } from "integrate-sdk/server";
 
export const { client: serverClient } = createMCPServer({
  apiKey: process.env.INTEGRATE_API_KEY,
  integrations: [
    canvasLmsIntegration({
      scopes: ["url:GET|/api/v1/courses", "url:GET|/api/v1/users/:id/profile", "url:POST|/api/v1/courses/:course_id/assignments"], // Optional
    }),
  ],
});

You can override the environment variables by passing explicit values:

canvasLmsIntegration({
  clientId: process.env.CUSTOM_CANVAS_LMS_ID,
  clientSecret: process.env.CUSTOM_CANVAS_LMS_SECRET,
      scopes: ["url:GET|/api/v1/courses", "url:GET|/api/v1/users/:id/profile", "url:POST|/api/v1/courses/:course_id/assignments"], // Optional
});

3. Client-Side Usage

The default client automatically includes all integrations. You can use it directly:

import { client } from "integrate-sdk";
 
await client.authorize("canvas_lms");
const result = await client.canvas_lms.listCourses({
  canvas_domain: "value",
});
 
console.log(result);

If you're using a custom client, add the integration to the integrations array:

import { createMCPClient, canvasLmsIntegration } from "integrate-sdk";
 
const customClient = createMCPClient({
  integrations: [canvasLmsIntegration()],
});

Configuration Options

export interface CanvasLmsIntegrationConfig {
  clientId?: string;

Default Scopes

These defaults are applied unless you override scopes in the integration config:

  • url:GET|/api/v1/courses
  • url:GET|/api/v1/users/:id/profile
  • url:POST|/api/v1/courses/:course_id/assignments

Tools

canvas_lms_list_courses

Lms list courses

export interface CanvasLmsListCoursesParams { "enrollment_state"?: string;

canvas_lms_get_course

Lms get course

export interface CanvasLmsGetCourseParams { course_id: string;

canvas_lms_list_assignments

Lms list assignments

export interface CanvasLmsListAssignmentsParams { course_id: string;

canvas_lms_create_assignment

Lms create assignment

export interface CanvasLmsCreateAssignmentParams { course_id: string;

canvas_lms_list_submissions

Lms list submissions

export interface CanvasLmsListSubmissionsParams { course_id: string;

canvas_lms_list_users

Lms list users

export interface CanvasLmsListUsersParams { course_id: string;

Notes

  • Category: Education
  • Authentication mode: OAuth