Skip to main content
Glama

canvas_get_submission

Retrieve submission details for a specific assignment in a Canvas course by providing course ID, assignment ID, and optional user ID.

Instructions

Get submission details for an assignment

Input Schema

NameRequiredDescriptionDefault
assignment_idYesID of the assignment
course_idYesID of the course
user_idNoID of the user (optional, defaults to self)

Input Schema (JSON Schema)

{ "properties": { "assignment_id": { "description": "ID of the assignment", "type": "number" }, "course_id": { "description": "ID of the course", "type": "number" }, "user_id": { "description": "ID of the user (optional, defaults to self)", "type": "number" } }, "required": [ "course_id", "assignment_id" ], "type": "object" }

Implementation Reference

  • Core implementation of canvas_get_submission tool: Makes authenticated GET request to Canvas API endpoint for retrieving a specific user's submission for an assignment, including comments, rubric assessment, and assignment details.
    async getSubmission(courseId: number, assignmentId: number, userId: number | 'self' = 'self'): Promise<CanvasSubmission> { const response = await this.client.get( `/courses/${courseId}/assignments/${assignmentId}/submissions/${userId}`, { params: { include: ['submission_comments', 'rubric_assessment', 'assignment'] } } ); return response.data; }
  • src/index.ts:224-235 (registration)
    MCP tool registration defining the name, description, and input schema (JSON Schema) for the canvas_get_submission tool.
    name: "canvas_get_submission", description: "Get submission details for an assignment", inputSchema: { type: "object", properties: { course_id: { type: "number", description: "ID of the course" }, assignment_id: { type: "number", description: "ID of the assignment" }, user_id: { type: "number", description: "ID of the user (optional, defaults to self)" } }, required: ["course_id", "assignment_id"] } },
  • Tool dispatch handler in MCP server: Validates input arguments, calls CanvasClient.getSubmission, and formats response as MCP content block.
    case "canvas_get_submission": { const { course_id, assignment_id, user_id } = args as { course_id: number; assignment_id: number; user_id?: number; }; if (!course_id || !assignment_id) { throw new Error("Missing required fields: course_id and assignment_id"); } const submission = await this.client.getSubmission(course_id, assignment_id, user_id || 'self'); return { content: [{ type: "text", text: JSON.stringify(submission, null, 2) }] }; }
  • TypeScript interface defining the structure of Canvas submission data returned by the tool.
    export interface CanvasSubmission { readonly id: number; readonly assignment_id: AssignmentId; readonly user_id: UserId; readonly submitted_at: string | null; readonly score: number | null; readonly grade: string | null; readonly attempt: number; readonly workflow_state: CanvasSubmissionState; readonly body?: string; readonly url?: string; readonly attachments?: CanvasFile[]; readonly submission_comments?: CanvasSubmissionComment[]; readonly rubric_assessment?: CanvasRubricAssessment; readonly late: boolean; readonly missing: boolean; }

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