@mtgibbs/canvas-lms-mcp 0.2.14 → 0.2.16
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm/src/api/courses.d.ts +17 -1
- package/esm/src/api/courses.d.ts.map +1 -1
- package/esm/src/api/courses.js +104 -18
- package/esm/src/mcp/tools/get-missing-assignments.d.ts +1 -0
- package/esm/src/mcp/tools/get-missing-assignments.d.ts.map +1 -1
- package/esm/src/mcp/tools/get-missing-assignments.js +7 -2
- package/esm/src/mcp/tools/get-unsubmitted-past-due.d.ts +1 -0
- package/esm/src/mcp/tools/get-unsubmitted-past-due.d.ts.map +1 -1
- package/esm/src/mcp/tools/get-unsubmitted-past-due.js +7 -2
- package/esm/src/services/courses.d.ts.map +1 -1
- package/esm/src/services/courses.js +1 -0
- package/esm/src/services/missing.d.ts +2 -0
- package/esm/src/services/missing.d.ts.map +1 -1
- package/esm/src/services/missing.js +4 -1
- package/esm/src/services/status.d.ts.map +1 -1
- package/esm/src/services/status.js +2 -0
- package/esm/src/services/types.d.ts +2 -0
- package/esm/src/services/types.d.ts.map +1 -1
- package/esm/src/services/unsubmitted.d.ts +2 -0
- package/esm/src/services/unsubmitted.d.ts.map +1 -1
- package/esm/src/services/unsubmitted.js +29 -4
- package/esm/src/types/canvas.d.ts +15 -0
- package/esm/src/types/canvas.d.ts.map +1 -1
- package/manifest.json +1 -1
- package/package.json +1 -1
package/esm/src/api/courses.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Canvas Courses API
|
|
3
3
|
*/
|
|
4
|
-
import type { Course, Enrollment, ListCoursesOptions } from "../types/canvas.js";
|
|
4
|
+
import type { Course, Enrollment, GradingPeriod, ListCoursesOptions } from "../types/canvas.js";
|
|
5
5
|
/**
|
|
6
6
|
* List all courses for the authenticated user
|
|
7
7
|
*/
|
|
@@ -10,6 +10,15 @@ export declare function listCourses(options?: ListCoursesOptions): Promise<Cours
|
|
|
10
10
|
* Get a single course by ID
|
|
11
11
|
*/
|
|
12
12
|
export declare function getCourse(courseId: number): Promise<Course>;
|
|
13
|
+
/**
|
|
14
|
+
* List grading periods for a course
|
|
15
|
+
*/
|
|
16
|
+
export declare function listGradingPeriods(courseId: number): Promise<GradingPeriod[]>;
|
|
17
|
+
/**
|
|
18
|
+
* Find the current grading period for a course
|
|
19
|
+
* Returns the grading period where today falls between start_date and end_date
|
|
20
|
+
*/
|
|
21
|
+
export declare function getCurrentGradingPeriod(courseId: number): Promise<GradingPeriod | null>;
|
|
13
22
|
/**
|
|
14
23
|
* List enrollments for a course (includes grade info)
|
|
15
24
|
*/
|
|
@@ -18,6 +27,8 @@ export declare function listCourseEnrollments(courseId: number, options?: {
|
|
|
18
27
|
state?: string[];
|
|
19
28
|
userId?: number | string;
|
|
20
29
|
include?: string[];
|
|
30
|
+
/** Grading period ID to filter grades by */
|
|
31
|
+
gradingPeriodId?: number;
|
|
21
32
|
}): Promise<Enrollment[]>;
|
|
22
33
|
/**
|
|
23
34
|
* Get enrollment with grades for a specific user in a course
|
|
@@ -29,8 +40,13 @@ export declare function getUserEnrollment(courseId: number, userId: number | str
|
|
|
29
40
|
*
|
|
30
41
|
* For observer accounts querying a specific student, this fetches
|
|
31
42
|
* the student's enrollment separately to get their actual grades.
|
|
43
|
+
*
|
|
44
|
+
* IMPORTANT: This function fetches grades for the CURRENT grading period
|
|
45
|
+
* to match what parents see in the Canvas portal. Without specifying a
|
|
46
|
+
* grading period, Canvas may return cumulative grades across all periods.
|
|
32
47
|
*/
|
|
33
48
|
export declare function listCoursesWithGrades(userId?: string | number): Promise<(Course & {
|
|
34
49
|
enrollment?: Enrollment;
|
|
50
|
+
gradingPeriodId?: number;
|
|
35
51
|
})[]>;
|
|
36
52
|
//# sourceMappingURL=courses.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"courses.d.ts","sourceRoot":"","sources":["../../../src/src/api/courses.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"courses.d.ts","sourceRoot":"","sources":["../../../src/src/api/courses.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EACV,MAAM,EACN,UAAU,EACV,aAAa,EAEb,kBAAkB,EACnB,MAAM,oBAAoB,CAAC;AAE5B;;GAEG;AACH,wBAAgB,WAAW,CAAC,OAAO,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAmB3E;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAG3D;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC,CAWnF;AAED;;;GAGG;AACH,wBAAsB,uBAAuB,CAC3C,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CA2B/B;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE;IACR,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACzB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,4CAA4C;IAC5C,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B,GACA,OAAO,CAAC,UAAU,EAAE,CAAC,CAsBvB;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CACrC,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,GAAG,MAAM,GACtB,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CAO5B;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,qBAAqB,CACzC,MAAM,GAAE,MAAM,GAAG,MAAe,GAC/B,OAAO,CAAC,CAAC,MAAM,GAAG;IAAE,UAAU,CAAC,EAAE,UAAU,CAAC;IAAC,eAAe,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,EAAE,CAAC,CAgG7E"}
|
package/esm/src/api/courses.js
CHANGED
|
@@ -29,6 +29,47 @@ export function getCourse(courseId) {
|
|
|
29
29
|
const client = getClient();
|
|
30
30
|
return client.get(`/courses/${courseId}`);
|
|
31
31
|
}
|
|
32
|
+
/**
|
|
33
|
+
* List grading periods for a course
|
|
34
|
+
*/
|
|
35
|
+
export async function listGradingPeriods(courseId) {
|
|
36
|
+
const client = getClient();
|
|
37
|
+
try {
|
|
38
|
+
const response = await client.get(`/courses/${courseId}/grading_periods`);
|
|
39
|
+
return response.grading_periods || [];
|
|
40
|
+
}
|
|
41
|
+
catch {
|
|
42
|
+
// Some courses may not have grading periods configured
|
|
43
|
+
return [];
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Find the current grading period for a course
|
|
48
|
+
* Returns the grading period where today falls between start_date and end_date
|
|
49
|
+
*/
|
|
50
|
+
export async function getCurrentGradingPeriod(courseId) {
|
|
51
|
+
const periods = await listGradingPeriods(courseId);
|
|
52
|
+
if (periods.length === 0)
|
|
53
|
+
return null;
|
|
54
|
+
const now = new Date();
|
|
55
|
+
// Find the period where current date falls within the range
|
|
56
|
+
const currentPeriod = periods.find((period) => {
|
|
57
|
+
const start = new Date(period.start_date);
|
|
58
|
+
const end = new Date(period.end_date);
|
|
59
|
+
return now >= start && now <= end;
|
|
60
|
+
});
|
|
61
|
+
if (currentPeriod)
|
|
62
|
+
return currentPeriod;
|
|
63
|
+
// If no current period found, find the most recent non-closed period
|
|
64
|
+
// (handles edge cases between grading periods)
|
|
65
|
+
const openPeriods = periods.filter((p) => !p.is_closed);
|
|
66
|
+
if (openPeriods.length > 0) {
|
|
67
|
+
// Sort by start_date descending and return the most recent
|
|
68
|
+
openPeriods.sort((a, b) => new Date(b.start_date).getTime() - new Date(a.start_date).getTime());
|
|
69
|
+
return openPeriods[0];
|
|
70
|
+
}
|
|
71
|
+
return null;
|
|
72
|
+
}
|
|
32
73
|
/**
|
|
33
74
|
* List enrollments for a course (includes grade info)
|
|
34
75
|
*/
|
|
@@ -47,6 +88,9 @@ export function listCourseEnrollments(courseId, options) {
|
|
|
47
88
|
if (options?.userId) {
|
|
48
89
|
params.user_id = options.userId;
|
|
49
90
|
}
|
|
91
|
+
if (options?.gradingPeriodId) {
|
|
92
|
+
params.grading_period_id = options.gradingPeriodId;
|
|
93
|
+
}
|
|
50
94
|
return client.getAll(`/courses/${courseId}/enrollments`, params);
|
|
51
95
|
}
|
|
52
96
|
/**
|
|
@@ -65,6 +109,10 @@ export async function getUserEnrollment(courseId, userId) {
|
|
|
65
109
|
*
|
|
66
110
|
* For observer accounts querying a specific student, this fetches
|
|
67
111
|
* the student's enrollment separately to get their actual grades.
|
|
112
|
+
*
|
|
113
|
+
* IMPORTANT: This function fetches grades for the CURRENT grading period
|
|
114
|
+
* to match what parents see in the Canvas portal. Without specifying a
|
|
115
|
+
* grading period, Canvas may return cumulative grades across all periods.
|
|
68
116
|
*/
|
|
69
117
|
export async function listCoursesWithGrades(userId = "self") {
|
|
70
118
|
// Get all active courses with enrollments included
|
|
@@ -78,35 +126,73 @@ export async function listCoursesWithGrades(userId = "self") {
|
|
|
78
126
|
// only returns the observer's enrollment for parent accounts
|
|
79
127
|
const isObserverQuery = userId !== "self" && !isNaN(Number(userId));
|
|
80
128
|
if (isObserverQuery) {
|
|
81
|
-
// Fetch student enrollments
|
|
129
|
+
// Fetch current grading period and student enrollments in parallel for each course
|
|
82
130
|
const enrollmentPromises = courses.map(async (course) => {
|
|
83
131
|
try {
|
|
132
|
+
// First, get the current grading period for this course
|
|
133
|
+
const currentPeriod = await getCurrentGradingPeriod(course.id);
|
|
134
|
+
// Fetch enrollment with grades, filtered by grading period if available
|
|
84
135
|
const enrollments = await listCourseEnrollments(course.id, {
|
|
85
136
|
userId: Number(userId),
|
|
86
137
|
type: ["StudentEnrollment"],
|
|
138
|
+
gradingPeriodId: currentPeriod?.id,
|
|
87
139
|
});
|
|
88
|
-
return {
|
|
140
|
+
return {
|
|
141
|
+
courseId: course.id,
|
|
142
|
+
enrollment: enrollments[0] || null,
|
|
143
|
+
gradingPeriodId: currentPeriod?.id,
|
|
144
|
+
};
|
|
89
145
|
}
|
|
90
146
|
catch {
|
|
91
|
-
return { courseId: course.id, enrollment: null };
|
|
147
|
+
return { courseId: course.id, enrollment: null, gradingPeriodId: undefined };
|
|
92
148
|
}
|
|
93
149
|
});
|
|
94
150
|
const enrollmentResults = await Promise.all(enrollmentPromises);
|
|
95
|
-
const enrollmentMap = new Map(enrollmentResults.map((r) => [r.courseId, r.enrollment]));
|
|
96
|
-
return courses.map((course) =>
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
const enrollment = course.enrollments?.find((e) => {
|
|
104
|
-
return e.type === "StudentEnrollment" || e.type === "ObserverEnrollment";
|
|
151
|
+
const enrollmentMap = new Map(enrollmentResults.map((r) => [r.courseId, { enrollment: r.enrollment, gradingPeriodId: r.gradingPeriodId }]));
|
|
152
|
+
return courses.map((course) => {
|
|
153
|
+
const result = enrollmentMap.get(course.id);
|
|
154
|
+
return {
|
|
155
|
+
...course,
|
|
156
|
+
enrollment: result?.enrollment || undefined,
|
|
157
|
+
gradingPeriodId: result?.gradingPeriodId,
|
|
158
|
+
};
|
|
105
159
|
});
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
160
|
+
}
|
|
161
|
+
// For "self" queries, also fetch current grading period and re-fetch enrollments
|
|
162
|
+
const coursesWithGrades = await Promise.all(courses.map(async (course) => {
|
|
163
|
+
try {
|
|
164
|
+
const currentPeriod = await getCurrentGradingPeriod(course.id);
|
|
165
|
+
if (currentPeriod) {
|
|
166
|
+
// Re-fetch enrollment with grading period filter
|
|
167
|
+
const enrollments = await listCourseEnrollments(course.id, {
|
|
168
|
+
type: ["StudentEnrollment"],
|
|
169
|
+
gradingPeriodId: currentPeriod.id,
|
|
170
|
+
});
|
|
171
|
+
return {
|
|
172
|
+
...course,
|
|
173
|
+
enrollment: enrollments[0] || undefined,
|
|
174
|
+
gradingPeriodId: currentPeriod.id,
|
|
175
|
+
};
|
|
176
|
+
}
|
|
177
|
+
// No grading period, use enrollment from courses response
|
|
178
|
+
const enrollment = course.enrollments?.find((e) => {
|
|
179
|
+
return e.type === "StudentEnrollment" || e.type === "ObserverEnrollment";
|
|
180
|
+
});
|
|
181
|
+
return {
|
|
182
|
+
...course,
|
|
183
|
+
enrollment,
|
|
184
|
+
};
|
|
185
|
+
}
|
|
186
|
+
catch {
|
|
187
|
+
// Fallback to original enrollment
|
|
188
|
+
const enrollment = course.enrollments?.find((e) => {
|
|
189
|
+
return e.type === "StudentEnrollment" || e.type === "ObserverEnrollment";
|
|
190
|
+
});
|
|
191
|
+
return {
|
|
192
|
+
...course,
|
|
193
|
+
enrollment,
|
|
194
|
+
};
|
|
195
|
+
}
|
|
196
|
+
}));
|
|
111
197
|
return coursesWithGrades;
|
|
112
198
|
}
|
|
@@ -7,6 +7,7 @@ import { type ToolDefinition } from "../types.js";
|
|
|
7
7
|
export declare const schema: {
|
|
8
8
|
student_id: z.ZodOptional<z.ZodString>;
|
|
9
9
|
course_id: z.ZodOptional<z.ZodNumber>;
|
|
10
|
+
all_grading_periods: z.ZodOptional<z.ZodBoolean>;
|
|
10
11
|
};
|
|
11
12
|
export declare const getMissingAssignmentsTool: ToolDefinition<typeof schema>;
|
|
12
13
|
//# sourceMappingURL=get-missing-assignments.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-missing-assignments.d.ts","sourceRoot":"","sources":["../../../../src/src/mcp/tools/get-missing-assignments.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,EAAgB,KAAK,cAAc,EAAE,MAAM,aAAa,CAAC;AAEhE,eAAO,MAAM,MAAM
|
|
1
|
+
{"version":3,"file":"get-missing-assignments.d.ts","sourceRoot":"","sources":["../../../../src/src/mcp/tools/get-missing-assignments.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,EAAgB,KAAK,cAAc,EAAE,MAAM,aAAa,CAAC;AAEhE,eAAO,MAAM,MAAM;;;;CAYlB,CAAC;AAEF,eAAO,MAAM,yBAAyB,EAAE,cAAc,CAAC,OAAO,MAAM,CAgBnE,CAAC"}
|
|
@@ -12,17 +12,22 @@ export const schema = {
|
|
|
12
12
|
.optional()
|
|
13
13
|
.describe("Student ID (uses configured CANVAS_STUDENT_ID if not provided)"),
|
|
14
14
|
course_id: z.number().optional().describe("Filter by specific course ID"),
|
|
15
|
+
all_grading_periods: z
|
|
16
|
+
.boolean()
|
|
17
|
+
.optional()
|
|
18
|
+
.describe("If true, include missing assignments from ALL grading periods (default: false, only current grading period)"),
|
|
15
19
|
};
|
|
16
20
|
export const getMissingAssignmentsTool = {
|
|
17
21
|
name: "get_missing_assignments",
|
|
18
|
-
description: "Get assignments that Canvas has officially flagged as 'missing'. These are past-due assignments where the teacher has marked them missing. NOTE: This may not catch all unsubmitted work - use get_unsubmitted_past_due for assignments that are past due but not yet flagged by the teacher.
|
|
22
|
+
description: "Get assignments that Canvas has officially flagged as 'missing' for the CURRENT grading period. These are past-due assignments where the teacher has marked them missing. By default, only shows assignments from the current grading period (e.g., Semester 2) to match what parents see in the Canvas portal. Set all_grading_periods=true to include old semesters. NOTE: This may not catch all unsubmitted work - use get_unsubmitted_past_due for assignments that are past due but not yet flagged by the teacher.",
|
|
19
23
|
schema,
|
|
20
24
|
annotations: { readOnlyHint: true, openWorldHint: true },
|
|
21
|
-
handler: async ({ student_id, course_id }) => {
|
|
25
|
+
handler: async ({ student_id, course_id, all_grading_periods }) => {
|
|
22
26
|
const effectiveStudentId = await getEffectiveStudentId(student_id);
|
|
23
27
|
const missing = await getMissingAssignments({
|
|
24
28
|
studentId: String(effectiveStudentId),
|
|
25
29
|
courseId: course_id,
|
|
30
|
+
allGradingPeriods: all_grading_periods,
|
|
26
31
|
});
|
|
27
32
|
return jsonResponse(missing);
|
|
28
33
|
},
|
|
@@ -7,6 +7,7 @@ import { type ToolDefinition } from "../types.js";
|
|
|
7
7
|
export declare const schema: {
|
|
8
8
|
student_id: z.ZodOptional<z.ZodString>;
|
|
9
9
|
course_id: z.ZodOptional<z.ZodNumber>;
|
|
10
|
+
all_grading_periods: z.ZodOptional<z.ZodBoolean>;
|
|
10
11
|
};
|
|
11
12
|
export declare const getUnsubmittedPastDueTool: ToolDefinition<typeof schema>;
|
|
12
13
|
//# sourceMappingURL=get-unsubmitted-past-due.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-unsubmitted-past-due.d.ts","sourceRoot":"","sources":["../../../../src/src/mcp/tools/get-unsubmitted-past-due.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,EAAgB,KAAK,cAAc,EAAE,MAAM,aAAa,CAAC;AAEhE,eAAO,MAAM,MAAM
|
|
1
|
+
{"version":3,"file":"get-unsubmitted-past-due.d.ts","sourceRoot":"","sources":["../../../../src/src/mcp/tools/get-unsubmitted-past-due.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,EAAgB,KAAK,cAAc,EAAE,MAAM,aAAa,CAAC;AAEhE,eAAO,MAAM,MAAM;;;;CAelB,CAAC;AAEF,eAAO,MAAM,yBAAyB,EAAE,cAAc,CAAC,OAAO,MAAM,CAiBnE,CAAC"}
|
|
@@ -15,17 +15,22 @@ export const schema = {
|
|
|
15
15
|
.number()
|
|
16
16
|
.optional()
|
|
17
17
|
.describe("Filter by specific course ID (if omitted, checks all courses)"),
|
|
18
|
+
all_grading_periods: z
|
|
19
|
+
.boolean()
|
|
20
|
+
.optional()
|
|
21
|
+
.describe("If true, include assignments from ALL grading periods (default: false, only current grading period)"),
|
|
18
22
|
};
|
|
19
23
|
export const getUnsubmittedPastDueTool = {
|
|
20
24
|
name: "get_unsubmitted_past_due",
|
|
21
|
-
description: "Get assignments that are past due but have no submission. This catches work that Canvas hasn't officially flagged as 'missing' yet (teachers may not have updated the status). Use this alongside get_missing_assignments for a complete picture of all outstanding/late work.
|
|
25
|
+
description: "Get assignments that are past due but have no submission for the CURRENT grading period. This catches work that Canvas hasn't officially flagged as 'missing' yet (teachers may not have updated the status). By default, only shows assignments from the current grading period (e.g., Semester 2) to match what parents see in the Canvas portal. Set all_grading_periods=true to include old semesters. Use this alongside get_missing_assignments for a complete picture of all outstanding/late work.",
|
|
22
26
|
schema,
|
|
23
27
|
annotations: { readOnlyHint: true, openWorldHint: true },
|
|
24
|
-
handler: async ({ student_id, course_id }) => {
|
|
28
|
+
handler: async ({ student_id, course_id, all_grading_periods }) => {
|
|
25
29
|
const effectiveStudentId = await getEffectiveStudentId(student_id);
|
|
26
30
|
const results = await getUnsubmittedAssignments({
|
|
27
31
|
studentId: String(effectiveStudentId),
|
|
28
32
|
courseId: course_id,
|
|
33
|
+
allGradingPeriods: all_grading_periods,
|
|
29
34
|
});
|
|
30
35
|
return jsonResponse(results);
|
|
31
36
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"courses.d.ts","sourceRoot":"","sources":["../../../src/src/services/courses.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9C,MAAM,WAAW,iBAAiB;IAChC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAsB,UAAU,CAC9B,OAAO,GAAE,iBAAsB,GAC9B,OAAO,CAAC,WAAW,EAAE,CAAC,
|
|
1
|
+
{"version":3,"file":"courses.d.ts","sourceRoot":"","sources":["../../../src/src/services/courses.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9C,MAAM,WAAW,iBAAiB;IAChC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAsB,UAAU,CAC9B,OAAO,GAAE,iBAAsB,GAC9B,OAAO,CAAC,WAAW,EAAE,CAAC,CAexB"}
|
|
@@ -18,5 +18,6 @@ export async function getCourses(options = {}) {
|
|
|
18
18
|
current_grade: course.enrollment?.grades?.current_grade ?? null,
|
|
19
19
|
final_score: course.enrollment?.grades?.final_score ?? null,
|
|
20
20
|
final_grade: course.enrollment?.grades?.final_grade ?? null,
|
|
21
|
+
grading_period_id: course.gradingPeriodId,
|
|
21
22
|
}));
|
|
22
23
|
}
|
|
@@ -10,6 +10,8 @@ import type { MissingAssignment } from "./types.js";
|
|
|
10
10
|
export interface GetMissingOptions {
|
|
11
11
|
studentId?: string;
|
|
12
12
|
courseId?: number;
|
|
13
|
+
/** If true, include assignments from all grading periods (default: current grading period only) */
|
|
14
|
+
allGradingPeriods?: boolean;
|
|
13
15
|
}
|
|
14
16
|
export declare function getMissingAssignments(options?: GetMissingOptions): Promise<MissingAssignment[]>;
|
|
15
17
|
export interface MissingCountByCourse {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"missing.d.ts","sourceRoot":"","sources":["../../../src/src/services/missing.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAEpD,MAAM,WAAW,iBAAiB;IAChC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"missing.d.ts","sourceRoot":"","sources":["../../../src/src/services/missing.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAEpD,MAAM,WAAW,iBAAiB;IAChC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,mGAAmG;IACnG,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B;AAED,wBAAsB,qBAAqB,CACzC,OAAO,GAAE,iBAAsB,GAC9B,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAqB9B;AAED,MAAM,WAAW,oBAAoB;IACnC,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,wBAAsB,wBAAwB,CAC5C,OAAO,GAAE,iBAAsB,GAC9B,OAAO,CAAC,oBAAoB,EAAE,CAAC,CAiBjC"}
|
|
@@ -8,11 +8,14 @@
|
|
|
8
8
|
*/
|
|
9
9
|
import { getMissingSubmissions } from "../api/users.js";
|
|
10
10
|
export async function getMissingAssignments(options = {}) {
|
|
11
|
-
const { studentId = "self", courseId } = options;
|
|
11
|
+
const { studentId = "self", courseId, allGradingPeriods = false } = options;
|
|
12
12
|
const missing = await getMissingSubmissions({
|
|
13
13
|
studentId,
|
|
14
14
|
courseIds: courseId ? [courseId] : undefined,
|
|
15
15
|
include: ["course"],
|
|
16
|
+
// By default, only show missing assignments from the current grading period
|
|
17
|
+
// This matches what parents see in the Canvas portal
|
|
18
|
+
filter: allGradingPeriods ? undefined : ["current_grading_period"],
|
|
16
19
|
});
|
|
17
20
|
return missing.map((m) => ({
|
|
18
21
|
id: m.id,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../../src/src/services/status.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAMH,OAAO,KAAK,EAEV,mBAAmB,EAIpB,MAAM,YAAY,CAAC;AAEpB,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,wBAAsB,sBAAsB,CAC1C,OAAO,EAAE,gBAAgB,GACxB,OAAO,CAAC,mBAAmB,CAAC,
|
|
1
|
+
{"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../../src/src/services/status.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAMH,OAAO,KAAK,EAEV,mBAAmB,EAIpB,MAAM,YAAY,CAAC;AAEpB,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,wBAAsB,sBAAsB,CAC1C,OAAO,EAAE,gBAAgB,GACxB,OAAO,CAAC,mBAAmB,CAAC,CA4L9B"}
|
|
@@ -29,6 +29,8 @@ export async function getComprehensiveStatus(options) {
|
|
|
29
29
|
getMissingSubmissions({
|
|
30
30
|
studentId,
|
|
31
31
|
include: ["course"],
|
|
32
|
+
// Only show missing assignments from current grading period to match portal
|
|
33
|
+
filter: ["current_grading_period"],
|
|
32
34
|
}),
|
|
33
35
|
contextCodes.length > 0
|
|
34
36
|
? listAnnouncements({
|
|
@@ -11,6 +11,8 @@ export interface CourseGrade {
|
|
|
11
11
|
current_grade: string | null;
|
|
12
12
|
final_score: number | null;
|
|
13
13
|
final_grade: string | null;
|
|
14
|
+
/** The grading period ID these grades are from (if available) */
|
|
15
|
+
grading_period_id?: number;
|
|
14
16
|
}
|
|
15
17
|
export interface DueAssignment {
|
|
16
18
|
course_id: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/src/services/types.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/src/services/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -10,6 +10,8 @@ import type { UnsubmittedAssignment } from "./types.js";
|
|
|
10
10
|
export interface GetUnsubmittedOptions {
|
|
11
11
|
studentId: string;
|
|
12
12
|
courseId?: number;
|
|
13
|
+
/** If true, include assignments from all grading periods (default: current grading period only) */
|
|
14
|
+
allGradingPeriods?: boolean;
|
|
13
15
|
}
|
|
14
16
|
export declare function getUnsubmittedAssignments(options: GetUnsubmittedOptions): Promise<UnsubmittedAssignment[]>;
|
|
15
17
|
//# sourceMappingURL=unsubmitted.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"unsubmitted.d.ts","sourceRoot":"","sources":["../../../src/src/services/unsubmitted.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAExD,MAAM,WAAW,qBAAqB;IACpC,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"unsubmitted.d.ts","sourceRoot":"","sources":["../../../src/src/services/unsubmitted.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAExD,MAAM,WAAW,qBAAqB;IACpC,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,mGAAmG;IACnG,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B;AAED,wBAAsB,yBAAyB,CAC7C,OAAO,EAAE,qBAAqB,GAC7B,OAAO,CAAC,qBAAqB,EAAE,CAAC,CA4ElC"}
|
|
@@ -6,10 +6,10 @@
|
|
|
6
6
|
* - CLI: `canvas unsubmitted`
|
|
7
7
|
* - MCP: `get_unsubmitted_past_due`
|
|
8
8
|
*/
|
|
9
|
-
import { listCourses } from "../api/courses.js";
|
|
9
|
+
import { getCurrentGradingPeriod, listCourses } from "../api/courses.js";
|
|
10
10
|
import { listUnsubmittedPastDueForStudent } from "../api/submissions.js";
|
|
11
11
|
export async function getUnsubmittedAssignments(options) {
|
|
12
|
-
const { studentId, courseId } = options;
|
|
12
|
+
const { studentId, courseId, allGradingPeriods = false } = options;
|
|
13
13
|
const courseIds = [];
|
|
14
14
|
const courseMap = new Map();
|
|
15
15
|
if (courseId) {
|
|
@@ -26,12 +26,37 @@ export async function getUnsubmittedAssignments(options) {
|
|
|
26
26
|
courseMap.set(course.id, course.name);
|
|
27
27
|
}
|
|
28
28
|
}
|
|
29
|
-
// Fetch unsubmitted assignments from all courses in parallel
|
|
29
|
+
// Fetch unsubmitted assignments and current grading periods from all courses in parallel
|
|
30
30
|
const unsubmittedPromises = courseIds.map(async (cid) => {
|
|
31
31
|
try {
|
|
32
|
+
// Get current grading period for this course (unless showing all periods)
|
|
33
|
+
const currentPeriod = allGradingPeriods ? null : await getCurrentGradingPeriod(cid);
|
|
32
34
|
const unsubmitted = await listUnsubmittedPastDueForStudent(cid, studentId);
|
|
33
35
|
return unsubmitted
|
|
34
|
-
.filter((sub) =>
|
|
36
|
+
.filter((sub) => {
|
|
37
|
+
if (!sub.assignment)
|
|
38
|
+
return false;
|
|
39
|
+
// If filtering by current grading period, check if submission belongs to it
|
|
40
|
+
if (currentPeriod && sub.grading_period_id !== null) {
|
|
41
|
+
// Only include if grading_period_id matches current period
|
|
42
|
+
if (sub.grading_period_id !== currentPeriod.id) {
|
|
43
|
+
return false;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
else if (currentPeriod && sub.grading_period_id === null) {
|
|
47
|
+
// If submission has no grading_period_id, check if due_at falls within current period
|
|
48
|
+
const dueAt = sub.assignment.due_at;
|
|
49
|
+
if (dueAt) {
|
|
50
|
+
const dueDate = new Date(dueAt);
|
|
51
|
+
const periodStart = new Date(currentPeriod.start_date);
|
|
52
|
+
const periodEnd = new Date(currentPeriod.end_date);
|
|
53
|
+
if (dueDate < periodStart || dueDate > periodEnd) {
|
|
54
|
+
return false;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
return true;
|
|
59
|
+
})
|
|
35
60
|
.map((sub) => ({
|
|
36
61
|
id: sub.assignment.id,
|
|
37
62
|
name: sub.assignment.name,
|
|
@@ -23,6 +23,21 @@ export interface Term {
|
|
|
23
23
|
start_at: string | null;
|
|
24
24
|
end_at: string | null;
|
|
25
25
|
}
|
|
26
|
+
/** Grading period information */
|
|
27
|
+
export interface GradingPeriod {
|
|
28
|
+
id: number;
|
|
29
|
+
title: string;
|
|
30
|
+
start_date: string;
|
|
31
|
+
end_date: string;
|
|
32
|
+
close_date: string | null;
|
|
33
|
+
is_closed: boolean;
|
|
34
|
+
is_last: boolean;
|
|
35
|
+
weight: number | null;
|
|
36
|
+
}
|
|
37
|
+
/** Response wrapper for grading periods API */
|
|
38
|
+
export interface GradingPeriodsResponse {
|
|
39
|
+
grading_periods: GradingPeriod[];
|
|
40
|
+
}
|
|
26
41
|
/** Enrollment object with grade information */
|
|
27
42
|
export interface Enrollment {
|
|
28
43
|
id: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"canvas.d.ts","sourceRoot":"","sources":["../../../src/src/types/canvas.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"canvas.d.ts","sourceRoot":"","sources":["../../../src/src/types/canvas.ts"],"names":[],"mappings":"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"}
|
package/manifest.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"manifest_version": "0.3",
|
|
3
3
|
"name": "canvas-lms-mcp",
|
|
4
4
|
"display_name": "Canvas LMS",
|
|
5
|
-
"version": "0.2.
|
|
5
|
+
"version": "0.2.16",
|
|
6
6
|
"description": "Connect Claude to your Canvas LMS account to query grades, assignments, missing work, and more.",
|
|
7
7
|
"long_description": "An MCP server that connects AI assistants like Claude to your Canvas LMS account. Perfect for parents monitoring their child's academic progress, students tracking their own work, or anyone who wants to interact with Canvas data through natural language.\n\nAsk Claude things like:\n- What assignments are due this week?\n- Show me missing assignments across all classes\n- What's my grade in Biology?\n- Are there any late assignments I should know about?",
|
|
8
8
|
"author": {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mtgibbs/canvas-lms-mcp",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.16",
|
|
4
4
|
"description": "Canvas LMS MCP (Model Context Protocol) server for AI assistants. Query student grades, assignments, and academic data through Claude or other MCP-compatible AI tools.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"mcp",
|