infinitecampus-mcp 2.5.0 → 2.5.1

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.
@@ -7,7 +7,7 @@
7
7
  },
8
8
  "metadata": {
9
9
  "description": "MCP server for Infinite Campus (Campus Parent) — grades, attendance, assignments, messages, documents",
10
- "version": "2.5.0"
10
+ "version": "2.5.1"
11
11
  },
12
12
  "plugins": [
13
13
  {
@@ -15,7 +15,7 @@
15
15
  "displayName": "Infinite Campus",
16
16
  "source": "./",
17
17
  "description": "Infinite Campus (Campus Parent) MCP server for Claude — grades, attendance, assignments, messages, and documents via natural language",
18
- "version": "2.5.0",
18
+ "version": "2.5.1",
19
19
  "author": {
20
20
  "name": "Chris Hall"
21
21
  },
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "infinitecampus-mcp",
3
3
  "displayName": "Infinite Campus",
4
- "version": "2.5.0",
4
+ "version": "2.5.1",
5
5
  "description": "Infinite Campus (Campus Parent) MCP server for Claude — grades, attendance, assignments, messages, and documents",
6
6
  "author": {
7
7
  "name": "Chris Hall",
package/dist/bundle.js CHANGED
@@ -39045,7 +39045,7 @@ function loadAccount(env = process.env) {
39045
39045
  // package.json
39046
39046
  var package_default = {
39047
39047
  name: "infinitecampus-mcp",
39048
- version: "2.5.0",
39048
+ version: "2.5.1",
39049
39049
  mcpName: "io.github.chrischall/infinitecampus-mcp",
39050
39050
  description: "Infinite Campus (Campus Parent) MCP server \u2014 multi-district read + message/document write",
39051
39051
  author: "Claude Code (AI) <https://www.anthropic.com/claude>",
@@ -41007,7 +41007,7 @@ try {
41007
41007
  }
41008
41008
  var COMMON = {
41009
41009
  name: "infinitecampus",
41010
- version: "2.5.0"
41010
+ version: "2.5.1"
41011
41011
  // x-release-please-version
41012
41012
  };
41013
41013
  if (account) {
package/dist/index.js CHANGED
@@ -57,7 +57,7 @@ catch (e) {
57
57
  // actionable stderr message (banner) instead of a crash loop.
58
58
  const COMMON = {
59
59
  name: 'infinitecampus',
60
- version: '2.5.0', // x-release-please-version
60
+ version: '2.5.1', // x-release-please-version
61
61
  };
62
62
  if (account) {
63
63
  const client = new ICClient(account, { refreshSession });
package/mint.yaml CHANGED
@@ -64,9 +64,32 @@ state:
64
64
  again. Fetchproxy sessions are deliberately NOT cached: they carry no
65
65
  identity to bind a record to, so a restored one could belong to a different
66
66
  IC account at the same instance.
67
- # egress: intentionally NOT declared.
68
- #
69
- # This server's upstream host is per-deployment, so no fixed allowlist can
70
- # be correct here. On the isolated tier, allow:
71
- # your district's Infinite Campus host, from IC_BASE_URL (districts are each on their own host, e.g. <district>.infinitecampus.org)
72
- # Everything else in this file applies regardless of which host that is.
67
+ egress:
68
+ allow:
69
+ # Only hosts the SERVER process actually fetches. Hosts that appear
70
+ # solely in a URL this server BUILDS and returns are excluded.
71
+ #
72
+ # Every IC call is a plain Node `fetch()` from this process against the
73
+ # host in IC_BASE_URL (login POST, every API read, document downloads).
74
+ # The fetchproxy bridge is bootstrap-only: it lifts the signed-in tab's
75
+ # cookies over the host's loopback bridge port and is not in the request
76
+ # path, so it dials nothing outbound. The IC host is PER DEPLOYMENT, so
77
+ # the two entries below cover the populations we know and are
78
+ # wildcards on purpose — the tenant is the leading label:
79
+ - '*.infinitecampus.org' # Infinite Campus-hosted districts (<district>.infinitecampus.org)
80
+ - '*.ncsis.gov' # North Carolina's statewide instance (<LEA>.ncsis.gov)
81
+ #
82
+ # If your IC_BASE_URL host is neither (a self-hosted district, e.g.
83
+ # campus.district.k12.example.us), replace these with that host.
84
+ # Matching is exact per label: no apex is dialled, and a district host
85
+ # answers directly (no www redirect observed).
86
+ #
87
+ # NOTE — this server also reaches hosts determined at RUNTIME, which
88
+ # cannot appear as literals here:
89
+ # - each CUPS-linked district's own host, taken from the
90
+ # `districtLoginUrl` the primary district's API returns (the CUPS
91
+ # verify.jsp POST and every call to that district go straight there)
92
+ # - fully-qualified document URLs the API returns (report cards from
93
+ # ic_list_documents are downloaded from wherever they point)
94
+ # Confirm the concrete host(s) against a live run and add them, or the
95
+ # fence will block those calls while the primary district keeps working.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "infinitecampus-mcp",
3
- "version": "2.5.0",
3
+ "version": "2.5.1",
4
4
  "mcpName": "io.github.chrischall/infinitecampus-mcp",
5
5
  "description": "Infinite Campus (Campus Parent) MCP server — multi-district read + message/document write",
6
6
  "author": "Claude Code (AI) <https://www.anthropic.com/claude>",
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": "2.5.0",
9
+ "version": "2.5.1",
10
10
  "packages": [
11
11
  {
12
12
  "registryType": "npm",
13
13
  "identifier": "infinitecampus-mcp",
14
- "version": "2.5.0",
14
+ "version": "2.5.1",
15
15
  "transport": {
16
16
  "type": "stdio"
17
17
  },