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

TableJSON Schema
NameRequiredDescriptionDefault
assignment_idYesID of the assignment
course_idYesID of the course
include_submissionNoInclude user's submission data

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
    }));
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