canvas_get_assignment
Retrieve detailed information about a specific assignment from the Canvas LMS, including optional submission data, by providing course and assignment IDs.
Instructions
Get detailed information about a specific assignment
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| assignment_id | Yes | ID of the assignment | |
| course_id | Yes | ID of the course | |
| include_submission | No | Include user's submission data |
Input Schema (JSON Schema)
{
"properties": {
"assignment_id": {
"description": "ID of the assignment",
"type": "number"
},
"course_id": {
"description": "ID of the course",
"type": "number"
},
"include_submission": {
"description": "Include user's submission data",
"type": "boolean"
}
},
"required": [
"course_id",
"assignment_id"
],
"type": "object"
}
Implementation Reference
- src/index.ts:152-164 (registration)Tool registration and input schema definition for canvas_get_assignment in the static TOOLS array used by ListToolsRequestSchema{ name: "canvas_get_assignment", description: "Get detailed information about a specific assignment", inputSchema: { type: "object", properties: { course_id: { type: "number", description: "ID of the course" }, assignment_id: { type: "number", description: "ID of the assignment" }, include_submission: { type: "boolean", description: "Include user's submission data" } }, required: ["course_id", "assignment_id"] } },
- src/index.ts:1147-1161 (handler)Main handler logic for the canvas_get_assignment tool call within CallToolRequestSchema handler, validates args and delegates to CanvasClient.getAssignmentcase "canvas_get_assignment": { const { course_id, assignment_id, include_submission = false } = args as { course_id: number; assignment_id: number; include_submission?: boolean; }; if (!course_id || !assignment_id) { throw new Error("Missing required fields: course_id and assignment_id"); } const assignment = await this.client.getAssignment(course_id, assignment_id, include_submission); return { content: [{ type: "text", text: JSON.stringify(assignment, null, 2) }] }; }
- src/client.ts:270-281 (helper)CanvasClient.getAssignment method: makes the actual Canvas API GET request to retrieve assignment details with optional submission inclusionasync getAssignment(courseId: number, assignmentId: number, includeSubmission: boolean = false): Promise<CanvasAssignment> { const params: any = { include: ['assignment_group', 'rubric'] }; if (includeSubmission) { params.include.push('submission'); } const response = await this.client.get(`/courses/${courseId}/assignments/${assignmentId}`, { params }); return response.data; }
- src/types.ts:103-123 (schema)TypeScript interface defining the CanvasAssignment return type used by the toolexport interface CanvasAssignment { readonly id: AssignmentId; readonly course_id: CourseId; readonly name: string; readonly description: string; readonly due_at: string | null; readonly lock_at: string | null; readonly unlock_at: string | null; readonly points_possible: number; readonly position: number; readonly submission_types: ReadonlyArray<CanvasSubmissionType>; readonly assignment_group_id: number; readonly assignment_group?: CanvasAssignmentGroup; readonly rubric?: CanvasRubric[]; readonly rubric_settings?: CanvasRubricSettings; readonly allowed_extensions?: string[]; readonly submission?: CanvasSubmission; readonly html_url: string; readonly published: boolean; readonly grading_type: CanvasGradingType; }
- src/index.ts:1071-1073 (helper)Registration handler that returns the TOOLS list containing canvas_get_assignment to MCP clientsthis.server.setRequestHandler(ListToolsRequestSchema, async () => ({ tools: TOOLS }));