canvas-lms-mcp 1.17.0 → 1.18.0
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/dist/canvas/index.cjs +3 -3
- package/dist/canvas/index.js +2 -2
- package/dist/{chunk-Z3YUWFEE.js → chunk-5WXEIIJS.js} +2 -2
- package/dist/{chunk-KE4SUTYQ.js → chunk-K7LOA4TL.js} +123 -51
- package/dist/chunk-K7LOA4TL.js.map +1 -0
- package/dist/{chunk-C55DPF4U.cjs → chunk-PMDK4WZA.cjs} +146 -74
- package/dist/chunk-PMDK4WZA.cjs.map +1 -0
- package/dist/{chunk-GS52LL5U.cjs → chunk-TKK4IOCL.cjs} +3 -3
- package/dist/{chunk-GS52LL5U.cjs.map → chunk-TKK4IOCL.cjs.map} +1 -1
- package/dist/{chunk-FUNEDFU6.js → chunk-TYV6ENOV.js} +2 -2
- package/dist/{chunk-FUNEDFU6.js.map → chunk-TYV6ENOV.js.map} +1 -1
- package/dist/{chunk-EPBWT2FM.cjs → chunk-XPJXO3NJ.cjs} +2 -2
- package/dist/{chunk-EPBWT2FM.cjs.map → chunk-XPJXO3NJ.cjs.map} +1 -1
- package/dist/http.cjs +5 -5
- package/dist/http.js +3 -3
- package/dist/init.cjs +3 -3
- package/dist/init.js +1 -1
- package/dist/server.cjs +4 -4
- package/dist/server.js +3 -3
- package/dist/stdio.cjs +4 -4
- package/dist/stdio.js +3 -3
- package/dist/tools/accounts.d.ts +2 -1
- package/dist/tools/accounts.d.ts.map +1 -1
- package/dist/tools/catalog.d.ts +2 -1
- package/dist/tools/catalog.d.ts.map +1 -1
- package/dist/tools/conversations.d.ts +2 -1
- package/dist/tools/conversations.d.ts.map +1 -1
- package/dist/tools/enrollments.d.ts +2 -1
- package/dist/tools/enrollments.d.ts.map +1 -1
- package/dist/tools/gradebook-history.d.ts +2 -1
- package/dist/tools/gradebook-history.d.ts.map +1 -1
- package/dist/tools/groups.d.ts +2 -1
- package/dist/tools/groups.d.ts.map +1 -1
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/outcomes.d.ts +2 -1
- package/dist/tools/outcomes.d.ts.map +1 -1
- package/dist/tools/submissions.d.ts +2 -1
- package/dist/tools/submissions.d.ts.map +1 -1
- package/dist/tools/users.d.ts +2 -1
- package/dist/tools/users.d.ts.map +1 -1
- package/package.json +1 -1
- package/dist/chunk-C55DPF4U.cjs.map +0 -1
- package/dist/chunk-KE4SUTYQ.js.map +0 -1
- /package/dist/{chunk-Z3YUWFEE.js.map → chunk-5WXEIIJS.js.map} +0 -0
package/dist/canvas/index.cjs
CHANGED
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
"use strict";Object.defineProperty(exports, "__esModule", {value: true});
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var _chunkTKK4IOCLcjs = require('../chunk-TKK4IOCL.cjs');
|
|
4
4
|
|
|
5
5
|
|
|
6
6
|
|
|
7
7
|
|
|
8
8
|
|
|
9
|
-
var
|
|
9
|
+
var _chunkXPJXO3NJcjs = require('../chunk-XPJXO3NJ.cjs');
|
|
10
10
|
|
|
11
11
|
|
|
12
12
|
|
|
13
13
|
|
|
14
14
|
|
|
15
15
|
|
|
16
|
-
exports.CanvasApiError =
|
|
16
|
+
exports.CanvasApiError = _chunkXPJXO3NJcjs.CanvasApiError; exports.CanvasClient = _chunkTKK4IOCLcjs.CanvasClient; exports.CanvasHttpClient = _chunkXPJXO3NJcjs.CanvasHttpClient; exports.appendCanvasQuery = _chunkXPJXO3NJcjs.appendCanvasQuery; exports.toCanvasQuery = _chunkXPJXO3NJcjs.toCanvasQuery;
|
|
17
17
|
//# sourceMappingURL=index.cjs.map
|
package/dist/canvas/index.js
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import {
|
|
2
2
|
CanvasClient
|
|
3
|
-
} from "../chunk-
|
|
3
|
+
} from "../chunk-5WXEIIJS.js";
|
|
4
4
|
import {
|
|
5
5
|
CanvasApiError,
|
|
6
6
|
CanvasHttpClient,
|
|
7
7
|
appendCanvasQuery,
|
|
8
8
|
toCanvasQuery
|
|
9
|
-
} from "../chunk-
|
|
9
|
+
} from "../chunk-TYV6ENOV.js";
|
|
10
10
|
export {
|
|
11
11
|
CanvasApiError,
|
|
12
12
|
CanvasClient,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
CanvasHttpClient
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-TYV6ENOV.js";
|
|
4
4
|
|
|
5
5
|
// src/canvas/courses.ts
|
|
6
6
|
var DEFAULT_LIST_INCLUDE = ["term"];
|
|
@@ -1395,4 +1395,4 @@ export {
|
|
|
1395
1395
|
OUTCOME_EXCLUDE_OPTIONS,
|
|
1396
1396
|
CanvasClient
|
|
1397
1397
|
};
|
|
1398
|
-
//# sourceMappingURL=chunk-
|
|
1398
|
+
//# sourceMappingURL=chunk-5WXEIIJS.js.map
|
|
@@ -7,11 +7,11 @@ import {
|
|
|
7
7
|
OUTCOME_ROLLUP_SORT_BY,
|
|
8
8
|
OUTCOME_SORT_ORDER,
|
|
9
9
|
SEARCH_CONTENT_TYPES
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-5WXEIIJS.js";
|
|
11
11
|
import {
|
|
12
12
|
CanvasApiError,
|
|
13
13
|
version
|
|
14
|
-
} from "./chunk-
|
|
14
|
+
} from "./chunk-TYV6ENOV.js";
|
|
15
15
|
|
|
16
16
|
// src/server.ts
|
|
17
17
|
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
@@ -446,7 +446,7 @@ async function appendAuditFile(filePath, line) {
|
|
|
446
446
|
|
|
447
447
|
// src/tools/accounts.ts
|
|
448
448
|
import { z } from "zod";
|
|
449
|
-
function accountTools(canvas) {
|
|
449
|
+
function accountTools(canvas, pseudonymizer) {
|
|
450
450
|
return [
|
|
451
451
|
{
|
|
452
452
|
name: "get_account",
|
|
@@ -517,9 +517,12 @@ function accountTools(canvas) {
|
|
|
517
517
|
openWorldHint: true
|
|
518
518
|
},
|
|
519
519
|
handler: async (params) => {
|
|
520
|
-
|
|
520
|
+
const account_id = params.account_id;
|
|
521
|
+
const users = await canvas.accounts.listUsers(account_id, {
|
|
521
522
|
search_term: params.search_term
|
|
522
523
|
});
|
|
524
|
+
if (!pseudonymizer?.isEnabled()) return users;
|
|
525
|
+
return pseudonymizer.anonymizeUsers(String(account_id), users);
|
|
523
526
|
}
|
|
524
527
|
},
|
|
525
528
|
{
|
|
@@ -970,7 +973,7 @@ function calendarTools(canvas) {
|
|
|
970
973
|
|
|
971
974
|
// src/tools/conversations.ts
|
|
972
975
|
import { z as z5 } from "zod";
|
|
973
|
-
function conversationTools(canvas) {
|
|
976
|
+
function conversationTools(canvas, pseudonymizer) {
|
|
974
977
|
return [
|
|
975
978
|
{
|
|
976
979
|
name: "list_conversations",
|
|
@@ -981,7 +984,9 @@ function conversationTools(canvas) {
|
|
|
981
984
|
openWorldHint: true
|
|
982
985
|
},
|
|
983
986
|
handler: async () => {
|
|
984
|
-
|
|
987
|
+
const conversations = await canvas.conversations.list();
|
|
988
|
+
if (!pseudonymizer?.isEnabled()) return conversations;
|
|
989
|
+
return Promise.all(conversations.map((c) => pseudonymizer.anonymizeConversation(c)));
|
|
985
990
|
}
|
|
986
991
|
},
|
|
987
992
|
{
|
|
@@ -995,7 +1000,9 @@ function conversationTools(canvas) {
|
|
|
995
1000
|
openWorldHint: true
|
|
996
1001
|
},
|
|
997
1002
|
handler: async (params) => {
|
|
998
|
-
|
|
1003
|
+
const conversation = await canvas.conversations.get(params.conversation_id);
|
|
1004
|
+
if (!pseudonymizer?.isEnabled()) return conversation;
|
|
1005
|
+
return pseudonymizer.anonymizeConversation(conversation);
|
|
999
1006
|
}
|
|
1000
1007
|
},
|
|
1001
1008
|
{
|
|
@@ -1401,7 +1408,7 @@ var ENROLLMENT_INCLUDE = [
|
|
|
1401
1408
|
"current_points",
|
|
1402
1409
|
"grades"
|
|
1403
1410
|
];
|
|
1404
|
-
function enrollmentTools(canvas) {
|
|
1411
|
+
function enrollmentTools(canvas, pseudonymizer) {
|
|
1405
1412
|
return [
|
|
1406
1413
|
{
|
|
1407
1414
|
name: "list_enrollments",
|
|
@@ -1429,7 +1436,11 @@ function enrollmentTools(canvas) {
|
|
|
1429
1436
|
opts.grading_period_id = params.grading_period_id;
|
|
1430
1437
|
if (params.enrollment_term_id !== void 0)
|
|
1431
1438
|
opts.enrollment_term_id = params.enrollment_term_id;
|
|
1432
|
-
|
|
1439
|
+
const enrollments = await canvas.enrollments.list(opts);
|
|
1440
|
+
if (!pseudonymizer?.isEnabled()) return enrollments;
|
|
1441
|
+
return Promise.all(
|
|
1442
|
+
enrollments.map((e) => pseudonymizer.anonymizeEnrollment(e.course_id, e))
|
|
1443
|
+
);
|
|
1433
1444
|
}
|
|
1434
1445
|
},
|
|
1435
1446
|
{
|
|
@@ -1450,6 +1461,7 @@ function enrollmentTools(canvas) {
|
|
|
1450
1461
|
openWorldHint: true
|
|
1451
1462
|
},
|
|
1452
1463
|
handler: async (params) => {
|
|
1464
|
+
const course_id = params.course_id;
|
|
1453
1465
|
const opts = {};
|
|
1454
1466
|
if (params.type !== void 0) opts.type = params.type;
|
|
1455
1467
|
if (params.state !== void 0) opts.state = params.state;
|
|
@@ -1461,7 +1473,9 @@ function enrollmentTools(canvas) {
|
|
|
1461
1473
|
opts.grading_period_id = params.grading_period_id;
|
|
1462
1474
|
if (params.enrollment_term_id !== void 0)
|
|
1463
1475
|
opts.enrollment_term_id = params.enrollment_term_id;
|
|
1464
|
-
|
|
1476
|
+
const enrollments = await canvas.enrollments.listForCourse(course_id, opts);
|
|
1477
|
+
if (!pseudonymizer?.isEnabled()) return enrollments;
|
|
1478
|
+
return Promise.all(enrollments.map((e) => pseudonymizer.anonymizeEnrollment(course_id, e)));
|
|
1465
1479
|
}
|
|
1466
1480
|
},
|
|
1467
1481
|
{
|
|
@@ -1626,7 +1640,18 @@ function fileTools(canvas) {
|
|
|
1626
1640
|
|
|
1627
1641
|
// src/tools/gradebook-history.ts
|
|
1628
1642
|
import { z as z10 } from "zod";
|
|
1629
|
-
function
|
|
1643
|
+
async function anonymizeHistoryVersion(courseId, version2, pseudonymizer) {
|
|
1644
|
+
if (!version2.user_name || !version2.user_id) return version2;
|
|
1645
|
+
const minimalUser = {
|
|
1646
|
+
id: version2.user_id,
|
|
1647
|
+
name: version2.user_name,
|
|
1648
|
+
sortable_name: version2.user_name,
|
|
1649
|
+
short_name: version2.user_name
|
|
1650
|
+
};
|
|
1651
|
+
const pseudo = await pseudonymizer.anonymizeUser(courseId, minimalUser);
|
|
1652
|
+
return { ...version2, user_name: pseudo.name };
|
|
1653
|
+
}
|
|
1654
|
+
function gradebookHistoryTools(canvas, pseudonymizer) {
|
|
1630
1655
|
return [
|
|
1631
1656
|
{
|
|
1632
1657
|
name: "list_gradebook_history_days",
|
|
@@ -1678,7 +1703,21 @@ function gradebookHistoryTools(canvas) {
|
|
|
1678
1703
|
const date = params.date;
|
|
1679
1704
|
const grader_id = params.grader_id;
|
|
1680
1705
|
const assignment_id = params.assignment_id;
|
|
1681
|
-
|
|
1706
|
+
const submissions = await canvas.gradebookHistory.listSubmissions(
|
|
1707
|
+
course_id,
|
|
1708
|
+
date,
|
|
1709
|
+
grader_id,
|
|
1710
|
+
assignment_id
|
|
1711
|
+
);
|
|
1712
|
+
if (!pseudonymizer?.isEnabled()) return submissions;
|
|
1713
|
+
return Promise.all(
|
|
1714
|
+
submissions.map(async (s) => ({
|
|
1715
|
+
...s,
|
|
1716
|
+
versions: s.versions ? await Promise.all(
|
|
1717
|
+
s.versions.map((v) => anonymizeHistoryVersion(course_id, v, pseudonymizer))
|
|
1718
|
+
) : s.versions
|
|
1719
|
+
}))
|
|
1720
|
+
);
|
|
1682
1721
|
}
|
|
1683
1722
|
},
|
|
1684
1723
|
{
|
|
@@ -1699,7 +1738,15 @@ function gradebookHistoryTools(canvas) {
|
|
|
1699
1738
|
const assignment_id = params.assignment_id;
|
|
1700
1739
|
const user_id = params.user_id;
|
|
1701
1740
|
const ascending = params.ascending;
|
|
1702
|
-
|
|
1741
|
+
const versions = await canvas.gradebookHistory.getFeed(course_id, {
|
|
1742
|
+
assignment_id,
|
|
1743
|
+
user_id,
|
|
1744
|
+
ascending
|
|
1745
|
+
});
|
|
1746
|
+
if (!pseudonymizer?.isEnabled()) return versions;
|
|
1747
|
+
return Promise.all(
|
|
1748
|
+
versions.map((v) => anonymizeHistoryVersion(course_id, v, pseudonymizer))
|
|
1749
|
+
);
|
|
1703
1750
|
}
|
|
1704
1751
|
}
|
|
1705
1752
|
];
|
|
@@ -1707,7 +1754,7 @@ function gradebookHistoryTools(canvas) {
|
|
|
1707
1754
|
|
|
1708
1755
|
// src/tools/groups.ts
|
|
1709
1756
|
import { z as z11 } from "zod";
|
|
1710
|
-
function groupTools(canvas) {
|
|
1757
|
+
function groupTools(canvas, pseudonymizer) {
|
|
1711
1758
|
return [
|
|
1712
1759
|
{
|
|
1713
1760
|
name: "list_groups",
|
|
@@ -1736,7 +1783,9 @@ function groupTools(canvas) {
|
|
|
1736
1783
|
},
|
|
1737
1784
|
handler: async (params) => {
|
|
1738
1785
|
const group_id = params.group_id;
|
|
1739
|
-
|
|
1786
|
+
const users = await canvas.groups.listMembers(group_id);
|
|
1787
|
+
if (!pseudonymizer?.isEnabled()) return users;
|
|
1788
|
+
return pseudonymizer.anonymizeUsers(`_group_${group_id}`, users);
|
|
1740
1789
|
}
|
|
1741
1790
|
}
|
|
1742
1791
|
];
|
|
@@ -1928,7 +1977,7 @@ function moduleTools(canvas) {
|
|
|
1928
1977
|
|
|
1929
1978
|
// src/tools/outcomes.ts
|
|
1930
1979
|
import { z as z13 } from "zod";
|
|
1931
|
-
function outcomeTools(canvas) {
|
|
1980
|
+
function outcomeTools(canvas, pseudonymizer) {
|
|
1932
1981
|
return [
|
|
1933
1982
|
{
|
|
1934
1983
|
name: "get_root_outcome_group",
|
|
@@ -2063,12 +2112,17 @@ function outcomeTools(canvas) {
|
|
|
2063
2112
|
include_hidden: z13.boolean().optional().describe("Include hidden outcomes when Canvas supports it.")
|
|
2064
2113
|
},
|
|
2065
2114
|
annotations: { readOnlyHint: true, openWorldHint: true },
|
|
2066
|
-
handler: async (params) =>
|
|
2067
|
-
|
|
2068
|
-
|
|
2069
|
-
|
|
2070
|
-
|
|
2071
|
-
|
|
2115
|
+
handler: async (params) => {
|
|
2116
|
+
const course_id = params.course_id;
|
|
2117
|
+
const response = await canvas.outcomes.getOutcomeResults(course_id, {
|
|
2118
|
+
user_ids: params.user_ids,
|
|
2119
|
+
outcome_ids: params.outcome_ids,
|
|
2120
|
+
include_alignments: params.include_alignments,
|
|
2121
|
+
include_hidden: params.include_hidden
|
|
2122
|
+
});
|
|
2123
|
+
if (!pseudonymizer?.isEnabled()) return response;
|
|
2124
|
+
return pseudonymizer.anonymizeOutcomeResults(course_id, response);
|
|
2125
|
+
}
|
|
2072
2126
|
},
|
|
2073
2127
|
{
|
|
2074
2128
|
name: "get_outcome_rollups",
|
|
@@ -2087,18 +2141,23 @@ function outcomeTools(canvas) {
|
|
|
2087
2141
|
add_defaults: z13.boolean().optional().describe("Include default mastery colors and levels when Canvas supports it.")
|
|
2088
2142
|
},
|
|
2089
2143
|
annotations: { readOnlyHint: true, openWorldHint: true },
|
|
2090
|
-
handler: async (params) =>
|
|
2091
|
-
|
|
2092
|
-
|
|
2093
|
-
|
|
2094
|
-
|
|
2095
|
-
|
|
2096
|
-
|
|
2097
|
-
|
|
2098
|
-
|
|
2099
|
-
|
|
2100
|
-
|
|
2101
|
-
|
|
2144
|
+
handler: async (params) => {
|
|
2145
|
+
const course_id = params.course_id;
|
|
2146
|
+
const response = await canvas.outcomes.getOutcomeRollups(course_id, {
|
|
2147
|
+
aggregate: params.aggregate,
|
|
2148
|
+
aggregate_stat: params.aggregate_stat,
|
|
2149
|
+
user_ids: params.user_ids,
|
|
2150
|
+
outcome_ids: params.outcome_ids,
|
|
2151
|
+
include_courses: params.include_courses,
|
|
2152
|
+
exclude: params.exclude,
|
|
2153
|
+
sort_by: params.sort_by,
|
|
2154
|
+
sort_outcome_id: params.sort_outcome_id,
|
|
2155
|
+
sort_order: params.sort_order,
|
|
2156
|
+
add_defaults: params.add_defaults
|
|
2157
|
+
});
|
|
2158
|
+
if (!pseudonymizer?.isEnabled()) return response;
|
|
2159
|
+
return pseudonymizer.anonymizeOutcomeResults(course_id, response);
|
|
2160
|
+
}
|
|
2102
2161
|
},
|
|
2103
2162
|
{
|
|
2104
2163
|
name: "get_outcome_contributing_scores",
|
|
@@ -2898,7 +2957,7 @@ var SUBMISSION_GET_INCLUDE = [
|
|
|
2898
2957
|
"read_status"
|
|
2899
2958
|
];
|
|
2900
2959
|
var SUBMISSION_WORKFLOW_STATE = ["submitted", "unsubmitted", "graded", "pending_review"];
|
|
2901
|
-
function submissionTools(canvas) {
|
|
2960
|
+
function submissionTools(canvas, pseudonymizer) {
|
|
2902
2961
|
return [
|
|
2903
2962
|
{
|
|
2904
2963
|
name: "list_submissions",
|
|
@@ -2922,6 +2981,7 @@ function submissionTools(canvas) {
|
|
|
2922
2981
|
openWorldHint: true
|
|
2923
2982
|
},
|
|
2924
2983
|
handler: async (params) => {
|
|
2984
|
+
const course_id = params.course_id;
|
|
2925
2985
|
const opts = {};
|
|
2926
2986
|
if (params.include !== void 0)
|
|
2927
2987
|
opts.include = params.include;
|
|
@@ -2934,11 +2994,13 @@ function submissionTools(canvas) {
|
|
|
2934
2994
|
opts.workflow_state = params.workflow_state;
|
|
2935
2995
|
if (params.grading_period_id !== void 0)
|
|
2936
2996
|
opts.grading_period_id = params.grading_period_id;
|
|
2937
|
-
|
|
2938
|
-
|
|
2997
|
+
const submissions = await canvas.submissions.list(
|
|
2998
|
+
course_id,
|
|
2939
2999
|
params.assignment_id,
|
|
2940
3000
|
opts
|
|
2941
3001
|
);
|
|
3002
|
+
if (!pseudonymizer?.isEnabled()) return submissions;
|
|
3003
|
+
return Promise.all(submissions.map((s) => pseudonymizer.anonymizeSubmission(course_id, s)));
|
|
2942
3004
|
}
|
|
2943
3005
|
},
|
|
2944
3006
|
{
|
|
@@ -2957,15 +3019,18 @@ function submissionTools(canvas) {
|
|
|
2957
3019
|
openWorldHint: true
|
|
2958
3020
|
},
|
|
2959
3021
|
handler: async (params) => {
|
|
3022
|
+
const course_id = params.course_id;
|
|
2960
3023
|
const opts = {};
|
|
2961
3024
|
if (params.include !== void 0)
|
|
2962
3025
|
opts.include = params.include;
|
|
2963
|
-
|
|
2964
|
-
|
|
3026
|
+
const submission = await canvas.submissions.get(
|
|
3027
|
+
course_id,
|
|
2965
3028
|
params.assignment_id,
|
|
2966
3029
|
params.user_id,
|
|
2967
3030
|
opts
|
|
2968
3031
|
);
|
|
3032
|
+
if (!pseudonymizer?.isEnabled()) return submission;
|
|
3033
|
+
return pseudonymizer.anonymizeSubmission(course_id, submission);
|
|
2969
3034
|
}
|
|
2970
3035
|
},
|
|
2971
3036
|
{
|
|
@@ -3037,7 +3102,7 @@ var COURSE_USER_INCLUDE = [
|
|
|
3037
3102
|
];
|
|
3038
3103
|
var USER_SORT = ["username", "email", "sis_id", "integration_id", "last_login"];
|
|
3039
3104
|
var SEARCH_USER_INCLUDE = ["email", "last_login", "avatar_url", "time_zone", "uuid"];
|
|
3040
|
-
function userTools(canvas) {
|
|
3105
|
+
function userTools(canvas, pseudonymizer) {
|
|
3041
3106
|
return [
|
|
3042
3107
|
{
|
|
3043
3108
|
name: "list_students",
|
|
@@ -3051,7 +3116,9 @@ function userTools(canvas) {
|
|
|
3051
3116
|
},
|
|
3052
3117
|
handler: async (params) => {
|
|
3053
3118
|
const course_id = params.course_id;
|
|
3054
|
-
|
|
3119
|
+
const users = await canvas.users.listStudents(course_id);
|
|
3120
|
+
if (!pseudonymizer?.isEnabled()) return users;
|
|
3121
|
+
return pseudonymizer.anonymizeUsers(course_id, users);
|
|
3055
3122
|
}
|
|
3056
3123
|
},
|
|
3057
3124
|
{
|
|
@@ -3065,8 +3132,9 @@ function userTools(canvas) {
|
|
|
3065
3132
|
openWorldHint: true
|
|
3066
3133
|
},
|
|
3067
3134
|
handler: async (params) => {
|
|
3068
|
-
const
|
|
3069
|
-
|
|
3135
|
+
const user = await canvas.users.get(params.user_id);
|
|
3136
|
+
if (!pseudonymizer?.isEnabled()) return user;
|
|
3137
|
+
return pseudonymizer.anonymizeUser("_global", user);
|
|
3070
3138
|
}
|
|
3071
3139
|
},
|
|
3072
3140
|
{
|
|
@@ -3096,16 +3164,15 @@ function userTools(canvas) {
|
|
|
3096
3164
|
openWorldHint: true
|
|
3097
3165
|
},
|
|
3098
3166
|
handler: async (params) => {
|
|
3167
|
+
const account_id = params.account_id;
|
|
3099
3168
|
const opts = {};
|
|
3100
3169
|
if (params.sort !== void 0) opts.sort = params.sort;
|
|
3101
3170
|
if (params.order !== void 0) opts.order = params.order;
|
|
3102
3171
|
if (params.include !== void 0)
|
|
3103
3172
|
opts.include = params.include;
|
|
3104
|
-
|
|
3105
|
-
|
|
3106
|
-
|
|
3107
|
-
opts
|
|
3108
|
-
);
|
|
3173
|
+
const users = await canvas.users.searchUsers(account_id, params.search_term, opts);
|
|
3174
|
+
if (!pseudonymizer?.isEnabled()) return users;
|
|
3175
|
+
return pseudonymizer.anonymizeUsers(String(account_id), users);
|
|
3109
3176
|
}
|
|
3110
3177
|
},
|
|
3111
3178
|
{
|
|
@@ -3126,6 +3193,7 @@ function userTools(canvas) {
|
|
|
3126
3193
|
openWorldHint: true
|
|
3127
3194
|
},
|
|
3128
3195
|
handler: async (params) => {
|
|
3196
|
+
const course_id = params.course_id;
|
|
3129
3197
|
const opts = {};
|
|
3130
3198
|
if (params.enrollment_type !== void 0)
|
|
3131
3199
|
opts.enrollment_type = params.enrollment_type;
|
|
@@ -3138,7 +3206,9 @@ function userTools(canvas) {
|
|
|
3138
3206
|
if (params.search_term !== void 0) opts.search_term = params.search_term;
|
|
3139
3207
|
if (params.sort !== void 0) opts.sort = params.sort;
|
|
3140
3208
|
if (params.order !== void 0) opts.order = params.order;
|
|
3141
|
-
|
|
3209
|
+
const users = await canvas.users.listCourseUsers(course_id, opts);
|
|
3210
|
+
if (!pseudonymizer?.isEnabled()) return users;
|
|
3211
|
+
return pseudonymizer.anonymizeUsers(course_id, users);
|
|
3142
3212
|
}
|
|
3143
3213
|
}
|
|
3144
3214
|
];
|
|
@@ -3304,7 +3374,9 @@ function pseudonymTools(pseudonymizer) {
|
|
|
3304
3374
|
// src/tools/index.ts
|
|
3305
3375
|
var PSEUDONYM_META_NOTE = "Student names and contact info in this response have been replaced with stable pseudonyms (CANVAS_PSEUDONYMIZE_STUDENTS=true). Real names are not available to this tool.";
|
|
3306
3376
|
function getAllTools(canvas, pseudonymizer) {
|
|
3307
|
-
const domainTools = toolDomainCatalog.flatMap(
|
|
3377
|
+
const domainTools = toolDomainCatalog.flatMap(
|
|
3378
|
+
(registration) => registration.getTools(canvas, pseudonymizer)
|
|
3379
|
+
);
|
|
3308
3380
|
const conditional = pseudonymizer ? pseudonymTools(pseudonymizer) : [];
|
|
3309
3381
|
return [...domainTools, ...conditional];
|
|
3310
3382
|
}
|
|
@@ -3457,4 +3529,4 @@ export {
|
|
|
3457
3529
|
Pseudonymizer,
|
|
3458
3530
|
createCanvasMCPServer
|
|
3459
3531
|
};
|
|
3460
|
-
//# sourceMappingURL=chunk-
|
|
3532
|
+
//# sourceMappingURL=chunk-K7LOA4TL.js.map
|