infinitecampus-mcp 3.2.1 → 3.2.3
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/.claude-plugin/marketplace.json +2 -2
- package/.claude-plugin/plugin.json +1 -1
- package/dist/bundle.js +2324 -1482
- package/dist/index.js +1 -1
- package/dist/tools/assignments.js +1 -1
- package/dist/tools/messages.js +2 -2
- package/mint.yaml +6 -0
- package/package.json +5 -1
- package/server.json +2 -2
- package/skills/ic/SKILL.md +1 -1
package/dist/index.js
CHANGED
|
@@ -56,7 +56,7 @@ catch (e) {
|
|
|
56
56
|
// avoids — see `unconfiguredClient`.
|
|
57
57
|
const COMMON = {
|
|
58
58
|
name: 'infinitecampus',
|
|
59
|
-
version: '3.2.
|
|
59
|
+
version: '3.2.3', // x-release-please-version
|
|
60
60
|
};
|
|
61
61
|
// Shared with the healthcheck so it can report the SAME state the tools see,
|
|
62
62
|
// including on the unconfigured path where there are no tools at all.
|
|
@@ -11,7 +11,7 @@ const argsSchema = z.object({
|
|
|
11
11
|
});
|
|
12
12
|
export function registerAssignmentTools(server, client) {
|
|
13
13
|
server.registerTool('ic_list_assignments', {
|
|
14
|
-
description: "List a student's assignments. The IC endpoint returns the full term history (~hundreds of items); date and missing filters are applied client-side. For a single course, pass courseId (the sectionID from ic_get_schedule).",
|
|
14
|
+
description: "List a student's assignments (homework, tests and projects, with due dates and missing flags). The IC endpoint returns the full term history (~hundreds of items); date and missing filters are applied client-side. For a single course, pass courseId (the sectionID from ic_get_schedule).",
|
|
15
15
|
annotations: { readOnlyHint: true, openWorldHint: true },
|
|
16
16
|
inputSchema: z.object({ ...argsSchema.shape, view: viewArg() }),
|
|
17
17
|
}, async (rawArgs) => {
|
package/dist/tools/messages.js
CHANGED
|
@@ -103,9 +103,9 @@ export function registerMessageTools(server, client) {
|
|
|
103
103
|
return viewResponse(rawArgs.view, untrustedEnvelope({ notifications, inbox, announcements }));
|
|
104
104
|
});
|
|
105
105
|
server.registerTool('ic_get_message', {
|
|
106
|
-
description: "Fetch the HTML body of an inbox message and return it parsed into { subject, date, body, url }. Takes a `messageUrl` which is the `url` field from an item returned by ic_list_messages' inbox section (e.g. 'portal/messageView.xsl?x=messenger.MessengerEngine-getMessageRecipientView&messageID=...'). Relative and /campus/-prefixed URLs are both accepted.
|
|
106
|
+
description: "Fetch the HTML body of an inbox message and return it parsed into { subject, date, body, url }. Takes a `messageUrl` which is the `url` field from an item returned by ic_list_messages' inbox section (e.g. 'portal/messageView.xsl?x=messenger.MessengerEngine-getMessageRecipientView&messageID=...'). Relative and /campus/-prefixed URLs are both accepted. Fetching the body may mark the message as read in the portal (as opening it there does), so this is not a pure read. " +
|
|
107
107
|
UNTRUSTED_DESCRIPTION_SUFFIX,
|
|
108
|
-
annotations: { readOnlyHint: true, openWorldHint: true },
|
|
108
|
+
annotations: { readOnlyHint: false, destructiveHint: false, idempotentHint: true, openWorldHint: true },
|
|
109
109
|
inputSchema: z.object({ ...getArgs.shape, view: viewArg() }),
|
|
110
110
|
}, async (rawArgs) => {
|
|
111
111
|
const args = getArgs.parse(rawArgs);
|
package/mint.yaml
CHANGED
|
@@ -5,6 +5,12 @@ summary: >-
|
|
|
5
5
|
Infinite Campus (Campus Parent) MCP — single-account with CUPS
|
|
6
6
|
auto-discovery. Two auth paths: IC_USERNAME/IC_PASSWORD, or sign in via
|
|
7
7
|
the ContextMint Bridge browser extension.
|
|
8
|
+
examples:
|
|
9
|
+
- prompt: Does my kid have any missing assignments right now? List them by class.
|
|
10
|
+
note: Reads the assignment list with the missing filter.
|
|
11
|
+
- prompt: What grades has my student gotten back in the last two weeks?
|
|
12
|
+
- prompt: How many absences and tardies does my child have this term?
|
|
13
|
+
note: Per-course attendance summary, grouped by term.
|
|
8
14
|
#
|
|
9
15
|
# Hosting note (a comment, not user-facing summary text): this is a
|
|
10
16
|
# BROWSER-BRIDGE MCP — it reaches its site through the user's signed-in
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "infinitecampus-mcp",
|
|
3
|
-
"version": "3.2.
|
|
3
|
+
"version": "3.2.3",
|
|
4
4
|
"mcpName": "io.github.chrischall/infinitecampus-mcp",
|
|
5
5
|
"description": "Infinite Campus (Campus Parent) MCP server — multi-district, read-only (plus local document download)",
|
|
6
6
|
"author": "Claude Code (AI) <https://www.anthropic.com/claude>",
|
|
@@ -60,5 +60,9 @@
|
|
|
60
60
|
"esbuild": "^0.28.0",
|
|
61
61
|
"typescript": "^7.0.2",
|
|
62
62
|
"vitest": "^5.0.0"
|
|
63
|
+
},
|
|
64
|
+
"allowScripts": {
|
|
65
|
+
"esbuild": false,
|
|
66
|
+
"fsevents": false
|
|
63
67
|
}
|
|
64
68
|
}
|
package/server.json
CHANGED
|
@@ -6,12 +6,12 @@
|
|
|
6
6
|
"url": "https://github.com/chrischall/infinitecampus-mcp",
|
|
7
7
|
"source": "github"
|
|
8
8
|
},
|
|
9
|
-
"version": "3.2.
|
|
9
|
+
"version": "3.2.3",
|
|
10
10
|
"packages": [
|
|
11
11
|
{
|
|
12
12
|
"registryType": "npm",
|
|
13
13
|
"identifier": "infinitecampus-mcp",
|
|
14
|
-
"version": "3.2.
|
|
14
|
+
"version": "3.2.3",
|
|
15
15
|
"transport": {
|
|
16
16
|
"type": "stdio"
|
|
17
17
|
},
|
package/skills/ic/SKILL.md
CHANGED
|
@@ -224,5 +224,5 @@ Two tools take no `view`, both because there is nothing to project:
|
|
|
224
224
|
## Caution
|
|
225
225
|
|
|
226
226
|
- `ic_download_document` writes to disk at `destinationPath`, only inside the download directory, and refuses to replace an existing file unless `overwrite: true` — confirm the path with the user.
|
|
227
|
-
- `
|
|
227
|
+
- `ic_get_message` is not annotated read-only: fetching a message's body may mark it as read in the portal, as opening it there does (not yet confirmed against a live unread message). Use it only when the user asks to open a message; summarize the inbox from `ic_list_messages`.
|
|
228
228
|
- Endpoint behavior varies by district. If `ic_list_behavior`, `ic_list_food_service`, `ic_list_documents`, `ic_list_assessments`, or `ic_list_fees` returns a `FeatureDisabled` warning, that module is simply turned off for the district — it's not an error. `ic_list_fees` may also return `PartialSuccess` when only one of its two sub-endpoints works.
|