Skip to main content
Glama

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

NameRequiredDescriptionDefault
assignment_idYesID of the assignment
course_idYesID of the course
include_submissionNoInclude 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"] } },
  • Main handler logic for the canvas_get_assignment tool call within CallToolRequestSchema handler, validates args and delegates to CanvasClient.getAssignment
    case "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) }] }; }
  • CanvasClient.getAssignment method: makes the actual Canvas API GET request to retrieve assignment details with optional submission inclusion
    async 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; }
  • TypeScript interface defining the CanvasAssignment return type used by the tool
    export 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; }
  • Registration handler that returns the TOOLS list containing canvas_get_assignment to MCP clients
    this.server.setRequestHandler(ListToolsRequestSchema, async () => ({ tools: TOOLS }));

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