@mtgibbs/canvas-lms-mcp 0.2.16 → 0.2.18
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/README.md +32 -2
- package/esm/src/api/calendar.d.ts +16 -0
- package/esm/src/api/calendar.d.ts.map +1 -0
- package/esm/src/api/calendar.js +25 -0
- package/esm/src/api/courses.d.ts.map +1 -1
- package/esm/src/api/discussions.d.ts +15 -0
- package/esm/src/api/discussions.d.ts.map +1 -0
- package/esm/src/api/discussions.js +19 -0
- package/esm/src/api/observees.d.ts +13 -0
- package/esm/src/api/observees.d.ts.map +1 -0
- package/esm/src/api/observees.js +15 -0
- package/esm/src/api/people.d.ts +13 -0
- package/esm/src/api/people.d.ts.map +1 -0
- package/esm/src/api/people.js +19 -0
- package/esm/src/mcp/tools/get-all-students-status.d.ts +17 -0
- package/esm/src/mcp/tools/get-all-students-status.d.ts.map +1 -0
- package/esm/src/mcp/tools/get-all-students-status.js +30 -0
- package/esm/src/mcp/tools/get-calendar-events.d.ts +13 -0
- package/esm/src/mcp/tools/get-calendar-events.d.ts.map +1 -0
- package/esm/src/mcp/tools/get-calendar-events.js +38 -0
- package/esm/src/mcp/tools/get-discussions.d.ts +13 -0
- package/esm/src/mcp/tools/get-discussions.d.ts.map +1 -0
- package/esm/src/mcp/tools/get-discussions.js +38 -0
- package/esm/src/mcp/tools/get-feedback.d.ts +17 -0
- package/esm/src/mcp/tools/get-feedback.d.ts.map +1 -0
- package/esm/src/mcp/tools/get-feedback.js +30 -0
- package/esm/src/mcp/tools/get-people.d.ts +16 -0
- package/esm/src/mcp/tools/get-people.d.ts.map +1 -0
- package/esm/src/mcp/tools/get-people.js +28 -0
- package/esm/src/mcp/tools/get-students.d.ts +8 -0
- package/esm/src/mcp/tools/get-students.d.ts.map +1 -0
- package/esm/src/mcp/tools/get-students.js +17 -0
- package/esm/src/mcp/tools/index.d.ts +7 -1
- package/esm/src/mcp/tools/index.d.ts.map +1 -1
- package/esm/src/mcp/tools/index.js +13 -1
- package/esm/src/services/calendar.d.ts +16 -0
- package/esm/src/services/calendar.d.ts.map +1 -0
- package/esm/src/services/calendar.js +60 -0
- package/esm/src/services/discussions.d.ts +16 -0
- package/esm/src/services/discussions.d.ts.map +1 -0
- package/esm/src/services/discussions.js +75 -0
- package/esm/src/services/feedback.d.ts +22 -0
- package/esm/src/services/feedback.d.ts.map +1 -0
- package/esm/src/services/feedback.js +88 -0
- package/esm/src/services/index.d.ts +6 -0
- package/esm/src/services/index.d.ts.map +1 -1
- package/esm/src/services/index.js +6 -0
- package/esm/src/services/multi-student-status.d.ts +23 -0
- package/esm/src/services/multi-student-status.d.ts.map +1 -0
- package/esm/src/services/multi-student-status.js +38 -0
- package/esm/src/services/people.d.ts +22 -0
- package/esm/src/services/people.d.ts.map +1 -0
- package/esm/src/services/people.js +89 -0
- package/esm/src/services/students.d.ts +12 -0
- package/esm/src/services/students.d.ts.map +1 -0
- package/esm/src/services/students.js +19 -0
- package/esm/src/services/types.d.ts +59 -0
- package/esm/src/services/types.d.ts.map +1 -1
- package/esm/src/types/canvas.d.ts +31 -0
- package/esm/src/types/canvas.d.ts.map +1 -1
- package/manifest.json +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -297,6 +297,34 @@ Once connected, Claude has access to these capabilities:
|
|
|
297
297
|
| `get_stats` | Late/missing statistics by course |
|
|
298
298
|
| `get_todo` | Planner items and to-do list |
|
|
299
299
|
|
|
300
|
+
### Grading Period Filtering
|
|
301
|
+
|
|
302
|
+
By default, all tools return data for the **current grading period only** (e.g., Semester 2). This
|
|
303
|
+
matches what parents see in the Canvas portal and prevents showing old assignments from previous
|
|
304
|
+
semesters.
|
|
305
|
+
|
|
306
|
+
**Affected tools:**
|
|
307
|
+
|
|
308
|
+
- `get_courses` - Grades are for the current grading period
|
|
309
|
+
- `get_missing_assignments` - Only shows missing work from the current period
|
|
310
|
+
- `get_unsubmitted_past_due` - Only shows unsubmitted work from the current period
|
|
311
|
+
- `get_comprehensive_status` - All data filtered to the current period
|
|
312
|
+
|
|
313
|
+
**To include all grading periods** (e.g., for a full-year view), use the `all_grading_periods`
|
|
314
|
+
parameter:
|
|
315
|
+
|
|
316
|
+
```
|
|
317
|
+
"Show me all missing assignments including previous semesters"
|
|
318
|
+
→ Claude will call get_missing_assignments with all_grading_periods: true
|
|
319
|
+
```
|
|
320
|
+
|
|
321
|
+
For the CLI, use the `--all-grading-periods` flag:
|
|
322
|
+
|
|
323
|
+
```bash
|
|
324
|
+
canvas missing --all-grading-periods
|
|
325
|
+
canvas unsubmitted --all-grading-periods
|
|
326
|
+
```
|
|
327
|
+
|
|
300
328
|
---
|
|
301
329
|
|
|
302
330
|
## Standalone CLI
|
|
@@ -335,18 +363,20 @@ canvas courses --format table
|
|
|
335
363
|
canvas status
|
|
336
364
|
canvas status --format table
|
|
337
365
|
|
|
338
|
-
# List missing assignments
|
|
366
|
+
# List missing assignments (current grading period by default)
|
|
339
367
|
canvas missing
|
|
340
368
|
canvas missing --summary # Counts by course
|
|
341
369
|
canvas missing --include-unsubmitted # Include past-due not yet flagged
|
|
370
|
+
canvas missing --all-grading-periods # Include previous semesters
|
|
342
371
|
|
|
343
372
|
# List assignments due soon
|
|
344
373
|
canvas due --days 7
|
|
345
374
|
canvas due --show-graded # Include already-graded items
|
|
346
375
|
|
|
347
|
-
# List unsubmitted past-due assignments
|
|
376
|
+
# List unsubmitted past-due assignments (current grading period by default)
|
|
348
377
|
canvas unsubmitted
|
|
349
378
|
canvas unsubmitted --course-id 12345
|
|
379
|
+
canvas unsubmitted --all-grading-periods # Include previous semesters
|
|
350
380
|
|
|
351
381
|
# List assignments with filters
|
|
352
382
|
canvas assignments --all-courses --due-this-week
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Canvas Calendar Events API
|
|
3
|
+
*/
|
|
4
|
+
import type { CalendarEvent } from "../types/canvas.js";
|
|
5
|
+
export interface ListCalendarEventsOptions {
|
|
6
|
+
type?: "event" | "assignment";
|
|
7
|
+
context_codes?: string[];
|
|
8
|
+
start_date?: string;
|
|
9
|
+
end_date?: string;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* List calendar events
|
|
13
|
+
* Uses GET /api/v1/calendar_events
|
|
14
|
+
*/
|
|
15
|
+
export declare function listCalendarEvents(options?: ListCalendarEventsOptions): Promise<CalendarEvent[]>;
|
|
16
|
+
//# sourceMappingURL=calendar.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"calendar.d.ts","sourceRoot":"","sources":["../../../src/src/api/calendar.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAExD,MAAM,WAAW,yBAAyB;IACxC,IAAI,CAAC,EAAE,OAAO,GAAG,YAAY,CAAC;IAC9B,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAChC,OAAO,GAAE,yBAA8B,GACtC,OAAO,CAAC,aAAa,EAAE,CAAC,CAmB1B"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Canvas Calendar Events API
|
|
3
|
+
*/
|
|
4
|
+
import { getClient } from "./client.js";
|
|
5
|
+
/**
|
|
6
|
+
* List calendar events
|
|
7
|
+
* Uses GET /api/v1/calendar_events
|
|
8
|
+
*/
|
|
9
|
+
export function listCalendarEvents(options = {}) {
|
|
10
|
+
const client = getClient();
|
|
11
|
+
const params = {};
|
|
12
|
+
if (options.type) {
|
|
13
|
+
params.type = options.type;
|
|
14
|
+
}
|
|
15
|
+
if (options.context_codes) {
|
|
16
|
+
params.context_codes = options.context_codes;
|
|
17
|
+
}
|
|
18
|
+
if (options.start_date) {
|
|
19
|
+
params.start_date = options.start_date;
|
|
20
|
+
}
|
|
21
|
+
if (options.end_date) {
|
|
22
|
+
params.end_date = options.end_date;
|
|
23
|
+
}
|
|
24
|
+
return client.getAll("/calendar_events", params);
|
|
25
|
+
}
|
|
@@ -1 +1 @@
|
|
|
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,
|
|
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,CAkG7E"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Canvas Discussion Topics API
|
|
3
|
+
*/
|
|
4
|
+
import type { DiscussionTopic } from "../types/canvas.js";
|
|
5
|
+
export interface ListDiscussionTopicsOptions {
|
|
6
|
+
course_id: number;
|
|
7
|
+
order_by?: "position" | "recent_activity" | "title";
|
|
8
|
+
per_page?: number;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* List discussion topics for a course
|
|
12
|
+
* Uses GET /api/v1/courses/:course_id/discussion_topics
|
|
13
|
+
*/
|
|
14
|
+
export declare function listDiscussionTopics(options: ListDiscussionTopicsOptions): Promise<DiscussionTopic[]>;
|
|
15
|
+
//# sourceMappingURL=discussions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"discussions.d.ts","sourceRoot":"","sources":["../../../src/src/api/discussions.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAE1D,MAAM,WAAW,2BAA2B;IAC1C,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,UAAU,GAAG,iBAAiB,GAAG,OAAO,CAAC;IACpD,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,2BAA2B,GACnC,OAAO,CAAC,eAAe,EAAE,CAAC,CAgB5B"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Canvas Discussion Topics API
|
|
3
|
+
*/
|
|
4
|
+
import { getClient } from "./client.js";
|
|
5
|
+
/**
|
|
6
|
+
* List discussion topics for a course
|
|
7
|
+
* Uses GET /api/v1/courses/:course_id/discussion_topics
|
|
8
|
+
*/
|
|
9
|
+
export function listDiscussionTopics(options) {
|
|
10
|
+
const client = getClient();
|
|
11
|
+
const params = {};
|
|
12
|
+
if (options.order_by) {
|
|
13
|
+
params.order_by = options.order_by;
|
|
14
|
+
}
|
|
15
|
+
if (options.per_page) {
|
|
16
|
+
params.per_page = options.per_page;
|
|
17
|
+
}
|
|
18
|
+
return client.getAll(`/courses/${options.course_id}/discussion_topics`, params);
|
|
19
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Canvas Observees API
|
|
3
|
+
* For observer/parent accounts to list students they're observing
|
|
4
|
+
*/
|
|
5
|
+
import type { User } from "../types/canvas.js";
|
|
6
|
+
/**
|
|
7
|
+
* List students being observed by the current user (parent/observer account)
|
|
8
|
+
* Uses GET /api/v1/users/self/observees
|
|
9
|
+
*
|
|
10
|
+
* @returns Array of User objects for each observed student
|
|
11
|
+
*/
|
|
12
|
+
export declare function listObservees(): Promise<User[]>;
|
|
13
|
+
//# sourceMappingURL=observees.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"observees.d.ts","sourceRoot":"","sources":["../../../src/src/api/observees.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAE/C;;;;;GAKG;AACH,wBAAgB,aAAa,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC,CAG/C"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Canvas Observees API
|
|
3
|
+
* For observer/parent accounts to list students they're observing
|
|
4
|
+
*/
|
|
5
|
+
import { getClient } from "./client.js";
|
|
6
|
+
/**
|
|
7
|
+
* List students being observed by the current user (parent/observer account)
|
|
8
|
+
* Uses GET /api/v1/users/self/observees
|
|
9
|
+
*
|
|
10
|
+
* @returns Array of User objects for each observed student
|
|
11
|
+
*/
|
|
12
|
+
export function listObservees() {
|
|
13
|
+
const client = getClient();
|
|
14
|
+
return client.getAll("/users/self/observees");
|
|
15
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Canvas People API
|
|
3
|
+
* Get teachers and TAs for courses
|
|
4
|
+
*/
|
|
5
|
+
import type { User } from "../types/canvas.js";
|
|
6
|
+
/**
|
|
7
|
+
* List users (teachers/TAs) in a course
|
|
8
|
+
* @param courseId - The course ID
|
|
9
|
+
* @param enrollmentTypes - Array of enrollment types to filter (e.g., ["teacher", "ta"])
|
|
10
|
+
* @returns Array of users with their enrollment information
|
|
11
|
+
*/
|
|
12
|
+
export declare function listCourseUsers(courseId: number, enrollmentTypes?: string[]): Promise<User[]>;
|
|
13
|
+
//# sourceMappingURL=people.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"people.d.ts","sourceRoot":"","sources":["../../../src/src/api/people.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAE/C;;;;;GAKG;AACH,wBAAgB,eAAe,CAC7B,QAAQ,EAAE,MAAM,EAChB,eAAe,GAAE,MAAM,EAAsB,GAC5C,OAAO,CAAC,IAAI,EAAE,CAAC,CASjB"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Canvas People API
|
|
3
|
+
* Get teachers and TAs for courses
|
|
4
|
+
*/
|
|
5
|
+
import { getClient } from "./client.js";
|
|
6
|
+
/**
|
|
7
|
+
* List users (teachers/TAs) in a course
|
|
8
|
+
* @param courseId - The course ID
|
|
9
|
+
* @param enrollmentTypes - Array of enrollment types to filter (e.g., ["teacher", "ta"])
|
|
10
|
+
* @returns Array of users with their enrollment information
|
|
11
|
+
*/
|
|
12
|
+
export function listCourseUsers(courseId, enrollmentTypes = ["teacher", "ta"]) {
|
|
13
|
+
const client = getClient();
|
|
14
|
+
const params = {
|
|
15
|
+
enrollment_type: enrollmentTypes,
|
|
16
|
+
include: ["email", "enrollments"],
|
|
17
|
+
};
|
|
18
|
+
return client.getAll(`/courses/${courseId}/users`, params);
|
|
19
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MCP Tool: get_all_students_status
|
|
3
|
+
*
|
|
4
|
+
* Returns comprehensive status for ALL observed students in a single call.
|
|
5
|
+
* Each student's data is clearly labeled to prevent mix-ups.
|
|
6
|
+
*
|
|
7
|
+
* CLI equivalent: `canvas status --all-students`
|
|
8
|
+
*/
|
|
9
|
+
import { z } from "zod";
|
|
10
|
+
import { type ToolDefinition } from "../types.js";
|
|
11
|
+
export declare const schema: {
|
|
12
|
+
days_upcoming: z.ZodOptional<z.ZodNumber>;
|
|
13
|
+
days_grades: z.ZodOptional<z.ZodNumber>;
|
|
14
|
+
low_grade_threshold: z.ZodOptional<z.ZodNumber>;
|
|
15
|
+
};
|
|
16
|
+
export declare const getAllStudentsStatusTool: ToolDefinition<typeof schema>;
|
|
17
|
+
//# sourceMappingURL=get-all-students-status.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-all-students-status.d.ts","sourceRoot":"","sources":["../../../../src/src/mcp/tools/get-all-students-status.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAgB,KAAK,cAAc,EAAE,MAAM,aAAa,CAAC;AAEhE,eAAO,MAAM,MAAM;;;;CAUlB,CAAC;AAEF,eAAO,MAAM,wBAAwB,EAAE,cAAc,CAAC,OAAO,MAAM,CAelE,CAAC"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MCP Tool: get_all_students_status
|
|
3
|
+
*
|
|
4
|
+
* Returns comprehensive status for ALL observed students in a single call.
|
|
5
|
+
* Each student's data is clearly labeled to prevent mix-ups.
|
|
6
|
+
*
|
|
7
|
+
* CLI equivalent: `canvas status --all-students`
|
|
8
|
+
*/
|
|
9
|
+
import { z } from "zod";
|
|
10
|
+
import { getAllStudentsStatus } from "../../services/index.js";
|
|
11
|
+
import { jsonResponse } from "../types.js";
|
|
12
|
+
export const schema = {
|
|
13
|
+
days_upcoming: z.number().optional().describe("Days to look ahead for upcoming assignments (default: 7)"),
|
|
14
|
+
days_grades: z.number().optional().describe("Days to look back for recent grades (default: 7)"),
|
|
15
|
+
low_grade_threshold: z.number().optional().describe("Percentage threshold for flagging low grades (default: 70)"),
|
|
16
|
+
};
|
|
17
|
+
export const getAllStudentsStatusTool = {
|
|
18
|
+
name: "get_all_students_status",
|
|
19
|
+
description: "Get comprehensive academic status for ALL observed students in a single call. Use this tool when the user asks about ALL their students or wants a combined overview. Each student's data is clearly separated and labeled (student_name, student_id, status). NEVER mix data between students when presenting results. Returns an array of objects, each containing: student_name (string), student_id (number), and status (ComprehensiveStatus with courses, grades, missing work, upcoming assignments, recent low grades, and recent announcements).",
|
|
20
|
+
schema,
|
|
21
|
+
annotations: { readOnlyHint: true, openWorldHint: true },
|
|
22
|
+
handler: async ({ days_upcoming, days_grades, low_grade_threshold }) => {
|
|
23
|
+
const result = await getAllStudentsStatus({
|
|
24
|
+
daysUpcoming: days_upcoming,
|
|
25
|
+
daysGrades: days_grades,
|
|
26
|
+
lowGradeThreshold: low_grade_threshold,
|
|
27
|
+
});
|
|
28
|
+
return jsonResponse(result);
|
|
29
|
+
},
|
|
30
|
+
};
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tool: get_calendar_events
|
|
3
|
+
* Get non-assignment calendar events (office hours, review sessions, school events, field trips)
|
|
4
|
+
*/
|
|
5
|
+
import { z } from "zod";
|
|
6
|
+
import { type ToolDefinition } from "../types.js";
|
|
7
|
+
export declare const schema: {
|
|
8
|
+
student_id: z.ZodOptional<z.ZodString>;
|
|
9
|
+
days: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
|
|
10
|
+
course_id: z.ZodOptional<z.ZodNumber>;
|
|
11
|
+
};
|
|
12
|
+
export declare const getCalendarEventsTool: ToolDefinition<typeof schema>;
|
|
13
|
+
//# sourceMappingURL=get-calendar-events.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-calendar-events.d.ts","sourceRoot":"","sources":["../../../../src/src/mcp/tools/get-calendar-events.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;;;;CAgBlB,CAAC;AAEF,eAAO,MAAM,qBAAqB,EAAE,cAAc,CAAC,OAAO,MAAM,CAiB/D,CAAC"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tool: get_calendar_events
|
|
3
|
+
* Get non-assignment calendar events (office hours, review sessions, school events, field trips)
|
|
4
|
+
*/
|
|
5
|
+
import { z } from "zod";
|
|
6
|
+
import { getCalendarEvents } from "../../services/index.js";
|
|
7
|
+
import { getEffectiveStudentId } from "../../api/users.js";
|
|
8
|
+
import { jsonResponse } from "../types.js";
|
|
9
|
+
export const schema = {
|
|
10
|
+
student_id: z
|
|
11
|
+
.string()
|
|
12
|
+
.optional()
|
|
13
|
+
.describe("Student ID (uses configured CANVAS_STUDENT_ID if not provided)"),
|
|
14
|
+
days: z
|
|
15
|
+
.number()
|
|
16
|
+
.optional()
|
|
17
|
+
.default(14)
|
|
18
|
+
.describe("Number of days to look ahead for calendar events (default: 14)"),
|
|
19
|
+
course_id: z
|
|
20
|
+
.number()
|
|
21
|
+
.optional()
|
|
22
|
+
.describe("Filter to a specific course ID. Use 'get_courses' to find this ID from a course name."),
|
|
23
|
+
};
|
|
24
|
+
export const getCalendarEventsTool = {
|
|
25
|
+
name: "get_calendar_events",
|
|
26
|
+
description: "Get upcoming non-assignment calendar events like office hours, review sessions, school events, field trips, assemblies, and other scheduled events. This returns only calendar events, NOT assignment due dates (use get_due_this_week or get_upcoming_assignments for assignments). Events include titles, descriptions, start/end times, and location information. Useful for seeing what's happening on campus beyond coursework deadlines.",
|
|
27
|
+
schema,
|
|
28
|
+
annotations: { readOnlyHint: true, openWorldHint: true },
|
|
29
|
+
handler: async ({ student_id, days, course_id }) => {
|
|
30
|
+
const effectiveStudentId = await getEffectiveStudentId(student_id);
|
|
31
|
+
const items = await getCalendarEvents({
|
|
32
|
+
studentId: String(effectiveStudentId),
|
|
33
|
+
days,
|
|
34
|
+
courseId: course_id,
|
|
35
|
+
});
|
|
36
|
+
return jsonResponse(items);
|
|
37
|
+
},
|
|
38
|
+
};
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tool: get_discussions
|
|
3
|
+
* Get discussion topics across courses with participation status
|
|
4
|
+
*/
|
|
5
|
+
import { z } from "zod";
|
|
6
|
+
import { type ToolDefinition } from "../types.js";
|
|
7
|
+
export declare const schema: {
|
|
8
|
+
student_id: z.ZodOptional<z.ZodString>;
|
|
9
|
+
days: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
|
|
10
|
+
course_id: z.ZodOptional<z.ZodNumber>;
|
|
11
|
+
};
|
|
12
|
+
export declare const getDiscussionsTool: ToolDefinition<typeof schema>;
|
|
13
|
+
//# sourceMappingURL=get-discussions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-discussions.d.ts","sourceRoot":"","sources":["../../../../src/src/mcp/tools/get-discussions.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;;;;CAkBlB,CAAC;AAEF,eAAO,MAAM,kBAAkB,EAAE,cAAc,CAAC,OAAO,MAAM,CAiB5D,CAAC"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tool: get_discussions
|
|
3
|
+
* Get discussion topics across courses with participation status
|
|
4
|
+
*/
|
|
5
|
+
import { z } from "zod";
|
|
6
|
+
import { getDiscussions } from "../../services/index.js";
|
|
7
|
+
import { getEffectiveStudentId } from "../../api/users.js";
|
|
8
|
+
import { jsonResponse } from "../types.js";
|
|
9
|
+
export const schema = {
|
|
10
|
+
student_id: z
|
|
11
|
+
.string()
|
|
12
|
+
.optional()
|
|
13
|
+
.describe("Student ID (uses configured CANVAS_STUDENT_ID if not provided)"),
|
|
14
|
+
days: z
|
|
15
|
+
.number()
|
|
16
|
+
.optional()
|
|
17
|
+
.default(30)
|
|
18
|
+
.describe("Number of days to look back for discussion topics (default: 30). Filters by posted_at or last_reply_at."),
|
|
19
|
+
course_id: z
|
|
20
|
+
.number()
|
|
21
|
+
.optional()
|
|
22
|
+
.describe("Filter to a specific course ID. Use 'get_courses' to find this ID from a course name."),
|
|
23
|
+
};
|
|
24
|
+
export const getDiscussionsTool = {
|
|
25
|
+
name: "get_discussions",
|
|
26
|
+
description: "Get discussion topics across courses with participation information. Shows discussion title, course, type (threaded or side_comment), number of replies, unread count, whether the discussion is graded (associated with an assignment), whether it requires an initial post, and the posted date. Useful for understanding class discussion activity, identifying unanswered discussions, and tracking participation requirements. Ordered by most recent activity (last reply or post date).",
|
|
27
|
+
schema,
|
|
28
|
+
annotations: { readOnlyHint: true, openWorldHint: true },
|
|
29
|
+
handler: async ({ student_id, days, course_id }) => {
|
|
30
|
+
const effectiveStudentId = await getEffectiveStudentId(student_id);
|
|
31
|
+
const items = await getDiscussions({
|
|
32
|
+
studentId: String(effectiveStudentId),
|
|
33
|
+
days,
|
|
34
|
+
courseId: course_id,
|
|
35
|
+
});
|
|
36
|
+
return jsonResponse(items);
|
|
37
|
+
},
|
|
38
|
+
};
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MCP Tool: get_feedback
|
|
3
|
+
*
|
|
4
|
+
* Shows teacher comments and feedback on student submissions.
|
|
5
|
+
* Critical for parents who want to see what teachers are saying about their child's work.
|
|
6
|
+
*
|
|
7
|
+
* CLI equivalent: `canvas feedback`
|
|
8
|
+
*/
|
|
9
|
+
import { z } from "zod";
|
|
10
|
+
import { type ToolDefinition } from "../types.js";
|
|
11
|
+
export declare const schema: {
|
|
12
|
+
student_id: z.ZodString;
|
|
13
|
+
course_id: z.ZodOptional<z.ZodNumber>;
|
|
14
|
+
days: z.ZodOptional<z.ZodNumber>;
|
|
15
|
+
};
|
|
16
|
+
export declare const getFeedbackTool: ToolDefinition<typeof schema>;
|
|
17
|
+
//# sourceMappingURL=get-feedback.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-feedback.d.ts","sourceRoot":"","sources":["../../../../src/src/mcp/tools/get-feedback.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAgB,KAAK,cAAc,EAAE,MAAM,aAAa,CAAC;AAEhE,eAAO,MAAM,MAAM;;;;CAUlB,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,cAAc,CAAC,OAAO,MAAM,CAezD,CAAC"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MCP Tool: get_feedback
|
|
3
|
+
*
|
|
4
|
+
* Shows teacher comments and feedback on student submissions.
|
|
5
|
+
* Critical for parents who want to see what teachers are saying about their child's work.
|
|
6
|
+
*
|
|
7
|
+
* CLI equivalent: `canvas feedback`
|
|
8
|
+
*/
|
|
9
|
+
import { z } from "zod";
|
|
10
|
+
import { getFeedback } from "../../services/index.js";
|
|
11
|
+
import { jsonResponse } from "../types.js";
|
|
12
|
+
export const schema = {
|
|
13
|
+
student_id: z.string().describe("Student ID (use 'self' for current user, or numeric ID from get_students tool)"),
|
|
14
|
+
course_id: z.number().optional().describe("Filter to specific course (omit to fetch from all active courses)"),
|
|
15
|
+
days: z.number().optional().describe("Look back N days for comments (default: 14)"),
|
|
16
|
+
};
|
|
17
|
+
export const getFeedbackTool = {
|
|
18
|
+
name: "get_feedback",
|
|
19
|
+
description: "Get teacher comments and feedback on student submissions. Shows what teachers and TAs are saying about the student's work. Returns a list of feedback items sorted by most recent comment first, each with: assignment_name, course_name, comment_text (the teacher's comment), author_name (who commented), comment_date, student_score, points_possible, grade, and assignment URL. Use this to see detailed feedback on assignments, especially when parents want to understand teacher comments or concerns about specific work.",
|
|
20
|
+
schema,
|
|
21
|
+
annotations: { readOnlyHint: true, openWorldHint: true },
|
|
22
|
+
handler: async ({ student_id, course_id, days }) => {
|
|
23
|
+
const result = await getFeedback({
|
|
24
|
+
studentId: student_id,
|
|
25
|
+
courseId: course_id,
|
|
26
|
+
days: days,
|
|
27
|
+
});
|
|
28
|
+
return jsonResponse(result);
|
|
29
|
+
},
|
|
30
|
+
};
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MCP Tool: get_people
|
|
3
|
+
*
|
|
4
|
+
* Shows teachers and teaching assistants for courses.
|
|
5
|
+
* Helps parents know who teaches each course and how to contact them.
|
|
6
|
+
*
|
|
7
|
+
* CLI equivalent: `canvas people`
|
|
8
|
+
*/
|
|
9
|
+
import { z } from "zod";
|
|
10
|
+
import { type ToolDefinition } from "../types.js";
|
|
11
|
+
export declare const schema: {
|
|
12
|
+
student_id: z.ZodOptional<z.ZodString>;
|
|
13
|
+
course_id: z.ZodOptional<z.ZodNumber>;
|
|
14
|
+
};
|
|
15
|
+
export declare const getPeopleTool: ToolDefinition<typeof schema>;
|
|
16
|
+
//# sourceMappingURL=get-people.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-people.d.ts","sourceRoot":"","sources":["../../../../src/src/mcp/tools/get-people.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAgB,KAAK,cAAc,EAAE,MAAM,aAAa,CAAC;AAEhE,eAAO,MAAM,MAAM;;;CAOlB,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,cAAc,CAAC,OAAO,MAAM,CAcvD,CAAC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MCP Tool: get_people
|
|
3
|
+
*
|
|
4
|
+
* Shows teachers and teaching assistants for courses.
|
|
5
|
+
* Helps parents know who teaches each course and how to contact them.
|
|
6
|
+
*
|
|
7
|
+
* CLI equivalent: `canvas people`
|
|
8
|
+
*/
|
|
9
|
+
import { z } from "zod";
|
|
10
|
+
import { getPeople } from "../../services/index.js";
|
|
11
|
+
import { jsonResponse } from "../types.js";
|
|
12
|
+
export const schema = {
|
|
13
|
+
student_id: z.string().optional().describe("Student ID (use 'self' for current user, or numeric ID from get_students tool). For observer accounts to get courses."),
|
|
14
|
+
course_id: z.number().optional().describe("Filter to specific course (omit to fetch from all active courses)"),
|
|
15
|
+
};
|
|
16
|
+
export const getPeopleTool = {
|
|
17
|
+
name: "get_people",
|
|
18
|
+
description: "Get teachers and teaching assistants for courses. Returns a list of people with: name, role (Teacher or TA), email (if available), and an array of courses they teach. When fetching across all courses, people who teach multiple courses are deduplicated and listed once with all their courses. Use this to help parents know who teaches each course and how to contact them. Sorted alphabetically by name.",
|
|
19
|
+
schema,
|
|
20
|
+
annotations: { readOnlyHint: true, openWorldHint: true },
|
|
21
|
+
handler: async ({ student_id, course_id }) => {
|
|
22
|
+
const result = await getPeople({
|
|
23
|
+
studentId: student_id,
|
|
24
|
+
courseId: course_id,
|
|
25
|
+
});
|
|
26
|
+
return jsonResponse(result);
|
|
27
|
+
},
|
|
28
|
+
};
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tool: get_students
|
|
3
|
+
* List students being observed by the current user (parent/observer account)
|
|
4
|
+
*/
|
|
5
|
+
import { type ToolDefinition } from "../types.js";
|
|
6
|
+
export declare const schema: {};
|
|
7
|
+
export declare const getStudentsTool: ToolDefinition<typeof schema>;
|
|
8
|
+
//# sourceMappingURL=get-students.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-students.d.ts","sourceRoot":"","sources":["../../../../src/src/mcp/tools/get-students.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAgB,KAAK,cAAc,EAAE,MAAM,aAAa,CAAC;AAEhE,eAAO,MAAM,MAAM,IAAK,CAAC;AAEzB,eAAO,MAAM,eAAe,EAAE,cAAc,CAAC,OAAO,MAAM,CAUzD,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tool: get_students
|
|
3
|
+
* List students being observed by the current user (parent/observer account)
|
|
4
|
+
*/
|
|
5
|
+
import { getObservedStudents } from "../../services/index.js";
|
|
6
|
+
import { jsonResponse } from "../types.js";
|
|
7
|
+
export const schema = {};
|
|
8
|
+
export const getStudentsTool = {
|
|
9
|
+
name: "get_students",
|
|
10
|
+
description: "List all students being observed by the current user (for parent/observer accounts). Returns the student's ID, name, short_name, and sortable_name for each observed student. CRITICAL: Call this tool FIRST when the user mentions a student by name (e.g., 'Ronin', 'Rory'). Use the returned student_id in subsequent tool calls (get_courses, get_missing_assignments, etc.). NEVER guess a student_id - always call this tool to map student names to Canvas student IDs.",
|
|
11
|
+
schema,
|
|
12
|
+
annotations: { readOnlyHint: true, openWorldHint: true },
|
|
13
|
+
handler: async () => {
|
|
14
|
+
const students = await getObservedStudents();
|
|
15
|
+
return jsonResponse(students);
|
|
16
|
+
},
|
|
17
|
+
};
|
|
@@ -14,10 +14,16 @@ import { getComprehensiveStatusTool } from "./get-comprehensive-status.js";
|
|
|
14
14
|
import { getAnnouncementsTool } from "./get-announcements.js";
|
|
15
15
|
import { getInboxTool } from "./get-inbox.js";
|
|
16
16
|
import { getTeacherCommunicationsTool } from "./get-teacher-communications.js";
|
|
17
|
+
import { getStudentsTool } from "./get-students.js";
|
|
18
|
+
import { getCalendarEventsTool } from "./get-calendar-events.js";
|
|
19
|
+
import { getAllStudentsStatusTool } from "./get-all-students-status.js";
|
|
20
|
+
import { getFeedbackTool } from "./get-feedback.js";
|
|
21
|
+
import { getPeopleTool } from "./get-people.js";
|
|
22
|
+
import { getDiscussionsTool } from "./get-discussions.js";
|
|
17
23
|
import type { AnyToolDefinition } from "../types.js";
|
|
18
24
|
/**
|
|
19
25
|
* All available MCP tools
|
|
20
26
|
*/
|
|
21
27
|
export declare const tools: AnyToolDefinition[];
|
|
22
|
-
export { getAnnouncementsTool, getComprehensiveStatusTool, getCoursesTool, getDueThisWeekTool, getInboxTool, getMissingAssignmentsTool, getRecentGradesTool, getStatsTool, getTeacherCommunicationsTool, getTodoTool, getUnsubmittedPastDueTool, getUpcomingAssignmentsTool, listAssignmentsTool, };
|
|
28
|
+
export { getAllStudentsStatusTool, getAnnouncementsTool, getCalendarEventsTool, getComprehensiveStatusTool, getCoursesTool, getDiscussionsTool, getDueThisWeekTool, getFeedbackTool, getInboxTool, getMissingAssignmentsTool, getPeopleTool, getRecentGradesTool, getStatsTool, getStudentsTool, getTeacherCommunicationsTool, getTodoTool, getUnsubmittedPastDueTool, getUpcomingAssignmentsTool, listAssignmentsTool, };
|
|
23
29
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/src/mcp/tools/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,yBAAyB,EAAE,MAAM,8BAA8B,CAAC;AACzE,OAAO,EAAE,yBAAyB,EAAE,MAAM,+BAA+B,CAAC;AAC1E,OAAO,EAAE,0BAA0B,EAAE,MAAM,+BAA+B,CAAC;AAC3E,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,EAAE,0BAA0B,EAAE,MAAM,+BAA+B,CAAC;AAC3E,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,4BAA4B,EAAE,MAAM,iCAAiC,CAAC;AAC/E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAErD;;GAEG;AACH,eAAO,MAAM,KAAK,EAAE,iBAAiB,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/src/mcp/tools/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,yBAAyB,EAAE,MAAM,8BAA8B,CAAC;AACzE,OAAO,EAAE,yBAAyB,EAAE,MAAM,+BAA+B,CAAC;AAC1E,OAAO,EAAE,0BAA0B,EAAE,MAAM,+BAA+B,CAAC;AAC3E,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,EAAE,0BAA0B,EAAE,MAAM,+BAA+B,CAAC;AAC3E,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,4BAA4B,EAAE,MAAM,iCAAiC,CAAC;AAC/E,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,EAAE,wBAAwB,EAAE,MAAM,8BAA8B,CAAC;AACxE,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAErD;;GAEG;AACH,eAAO,MAAM,KAAK,EAAE,iBAAiB,EAoBpC,CAAC;AAGF,OAAO,EACL,wBAAwB,EACxB,oBAAoB,EACpB,qBAAqB,EACrB,0BAA0B,EAC1B,cAAc,EACd,kBAAkB,EAClB,kBAAkB,EAClB,eAAe,EACf,YAAY,EACZ,yBAAyB,EACzB,aAAa,EACb,mBAAmB,EACnB,YAAY,EACZ,eAAe,EACf,4BAA4B,EAC5B,WAAW,EACX,yBAAyB,EACzB,0BAA0B,EAC1B,mBAAmB,GACpB,CAAC"}
|
|
@@ -14,6 +14,12 @@ import { getComprehensiveStatusTool } from "./get-comprehensive-status.js";
|
|
|
14
14
|
import { getAnnouncementsTool } from "./get-announcements.js";
|
|
15
15
|
import { getInboxTool } from "./get-inbox.js";
|
|
16
16
|
import { getTeacherCommunicationsTool } from "./get-teacher-communications.js";
|
|
17
|
+
import { getStudentsTool } from "./get-students.js";
|
|
18
|
+
import { getCalendarEventsTool } from "./get-calendar-events.js";
|
|
19
|
+
import { getAllStudentsStatusTool } from "./get-all-students-status.js";
|
|
20
|
+
import { getFeedbackTool } from "./get-feedback.js";
|
|
21
|
+
import { getPeopleTool } from "./get-people.js";
|
|
22
|
+
import { getDiscussionsTool } from "./get-discussions.js";
|
|
17
23
|
/**
|
|
18
24
|
* All available MCP tools
|
|
19
25
|
*/
|
|
@@ -31,6 +37,12 @@ export const tools = [
|
|
|
31
37
|
getAnnouncementsTool,
|
|
32
38
|
getInboxTool,
|
|
33
39
|
getTeacherCommunicationsTool,
|
|
40
|
+
getStudentsTool,
|
|
41
|
+
getCalendarEventsTool,
|
|
42
|
+
getAllStudentsStatusTool,
|
|
43
|
+
getFeedbackTool,
|
|
44
|
+
getPeopleTool,
|
|
45
|
+
getDiscussionsTool,
|
|
34
46
|
];
|
|
35
47
|
// Re-export individual tools for direct access if needed
|
|
36
|
-
export { getAnnouncementsTool, getComprehensiveStatusTool, getCoursesTool, getDueThisWeekTool, getInboxTool, getMissingAssignmentsTool, getRecentGradesTool, getStatsTool, getTeacherCommunicationsTool, getTodoTool, getUnsubmittedPastDueTool, getUpcomingAssignmentsTool, listAssignmentsTool, };
|
|
48
|
+
export { getAllStudentsStatusTool, getAnnouncementsTool, getCalendarEventsTool, getComprehensiveStatusTool, getCoursesTool, getDiscussionsTool, getDueThisWeekTool, getFeedbackTool, getInboxTool, getMissingAssignmentsTool, getPeopleTool, getRecentGradesTool, getStatsTool, getStudentsTool, getTeacherCommunicationsTool, getTodoTool, getUnsubmittedPastDueTool, getUpcomingAssignmentsTool, listAssignmentsTool, };
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Calendar Events Service
|
|
3
|
+
* Get non-assignment calendar events (office hours, review sessions, school events, field trips)
|
|
4
|
+
*
|
|
5
|
+
* Used by:
|
|
6
|
+
* - CLI: `canvas calendar`
|
|
7
|
+
* - MCP: `get_calendar_events`
|
|
8
|
+
*/
|
|
9
|
+
import type { CalendarEventItem } from "./types.js";
|
|
10
|
+
export interface GetCalendarEventsOptions {
|
|
11
|
+
studentId?: string;
|
|
12
|
+
courseId?: number;
|
|
13
|
+
days?: number;
|
|
14
|
+
}
|
|
15
|
+
export declare function getCalendarEvents(options?: GetCalendarEventsOptions): Promise<CalendarEventItem[]>;
|
|
16
|
+
//# sourceMappingURL=calendar.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"calendar.d.ts","sourceRoot":"","sources":["../../../src/src/services/calendar.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAEpD,MAAM,WAAW,wBAAwB;IACvC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,wBAAsB,iBAAiB,CACrC,OAAO,GAAE,wBAA6B,GACrC,OAAO,CAAC,iBAAiB,EAAE,CAAC,CA0D9B"}
|