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
| Name | Required | Description | Default |
|---|---|---|---|
| course_id | Yes | ID of the course | |
| enrollment_state | No | State of the enrollment (active, invited, etc.) | |
| role | No | Role for the enrollment (StudentEnrollment, TeacherEnrollment, etc.) | |
| user_id | Yes | ID of the user to enroll |
Implementation Reference
- src/index.ts:1340-1349 (handler)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"] } },
- src/client.ts:549-558 (helper)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;
- src/types.ts:651-658 (schema)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; }