Skip to main content
Glama

canvas_enroll_user

Enroll a user in a Canvas course by specifying course ID, user ID, role, and enrollment state using the MCP server for Canvas API interactions.

Instructions

Enroll a user in a course

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
course_idYesID of the course
enrollment_stateNoState of the enrollment (active, invited, etc.)
roleNoRole for the enrollment (StudentEnrollment, TeacherEnrollment, etc.)
user_idYesID of the user to enroll

Implementation Reference

  • MCP CallToolRequest handler for canvas_enroll_user: validates input arguments and calls CanvasClient.enrollUser method.
    case "canvas_enroll_user": {
      const enrollArgs = args as unknown as EnrollUserArgs;
      if (!enrollArgs.course_id || !enrollArgs.user_id) {
        throw new Error("Missing required fields: course_id and user_id");
      }
      const enrollment = await this.client.enrollUser(enrollArgs);
      return {
        content: [{ type: "text", text: JSON.stringify(enrollment, null, 2) }]
      };
    }
  • src/index.ts:436-454 (registration)
    Tool registration entry in the TOOLS array, including name, description, and JSON schema for input validation. Used by ListToolsRequest handler.
      name: "canvas_enroll_user",
      description: "Enroll a user in a course",
      inputSchema: {
        type: "object",
        properties: {
          course_id: { type: "number", description: "ID of the course" },
          user_id: { type: "number", description: "ID of the user to enroll" },
          role: { 
            type: "string", 
            description: "Role for the enrollment (StudentEnrollment, TeacherEnrollment, etc.)" 
          },
          enrollment_state: { 
            type: "string",
            description: "State of the enrollment (active, invited, etc.)"
          }
        },
        required: ["course_id", "user_id"]
      }
    },
  • CanvasClient.enrollUser: Makes the actual Canvas API POST request to enroll a user in a course.
    async enrollUser(args: EnrollUserArgs): Promise<CanvasEnrollment> {
      const { course_id, user_id, role = 'StudentEnrollment', enrollment_state = 'active' } = args;
      const response = await this.client.post(`/courses/${course_id}/enrollments`, {
        enrollment: {
          user_id,
          type: role,
          enrollment_state
        }
      });
      return response.data;
  • TypeScript type definition for EnrollUserArgs used in CanvasClient.enrollUser and MCP handler type casting.
    export interface EnrollUserArgs {
      course_id: number;
      user_id: number;
      role?: string;
      enrollment_state?: string;
      notify?: boolean;
      limit_privileges_to_course_section?: boolean;
    }
Install Server

Other Tools

Related Tools

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/DMontgomery40/mcp-canvas-lms'

If you have feedback or need assistance with the MCP directory API, please join our Discord server