infinitecampus-mcp 3.1.3 → 3.1.4

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": "3.1.3"
10
+ "version": "3.1.4"
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": "3.1.3",
18
+ "version": "3.1.4",
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": "3.1.3",
4
+ "version": "3.1.4",
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
@@ -67471,7 +67471,7 @@ function resolveDownloadDir(env = process.env) {
67471
67471
  // package.json
67472
67472
  var package_default = {
67473
67473
  name: "infinitecampus-mcp",
67474
- version: "3.1.3",
67474
+ version: "3.1.4",
67475
67475
  mcpName: "io.github.chrischall/infinitecampus-mcp",
67476
67476
  description: "Infinite Campus (Campus Parent) MCP server \u2014 multi-district read + message/document write",
67477
67477
  author: "Claude Code (AI) <https://www.anthropic.com/claude>",
@@ -67520,7 +67520,7 @@ var package_default = {
67520
67520
  "@fetchproxy/bootstrap": "^3.2.0",
67521
67521
  "@fetchproxy/server": "^3.2.0",
67522
67522
  "@modelcontextprotocol/server": "^2.0.0",
67523
- dotenv: "^17.4.2",
67523
+ dotenv: "^18.0.2",
67524
67524
  "node-html-parser": "^9.0.0",
67525
67525
  zod: "^4.6.5"
67526
67526
  },
@@ -68459,7 +68459,7 @@ async function writeConfined(real, requested, buf, overwrite) {
68459
68459
  const flags = O_WRONLY | O_CREAT | O_NOFOLLOW | (overwrite ? O_TRUNC : O_EXCL);
68460
68460
  let handle;
68461
68461
  try {
68462
- handle = await open2(real, flags, 438);
68462
+ handle = await open2(real, flags, 384);
68463
68463
  } catch (e) {
68464
68464
  const code = e.code;
68465
68465
  if (code === "ELOOP") throw new InvalidPathError(requested, "is a symlink");
@@ -68467,6 +68467,7 @@ async function writeConfined(real, requested, buf, overwrite) {
68467
68467
  throw e;
68468
68468
  }
68469
68469
  try {
68470
+ if (overwrite) await handle.chmod(384);
68470
68471
  await handle.writeFile(buf);
68471
68472
  } finally {
68472
68473
  await handle.close();
@@ -69588,7 +69589,7 @@ try {
69588
69589
  }
69589
69590
  var COMMON = {
69590
69591
  name: "infinitecampus",
69591
- version: "3.1.3"
69592
+ version: "3.1.4"
69592
69593
  // x-release-please-version
69593
69594
  };
69594
69595
  var healthState = { account, source, configError, client: null };
package/dist/client.js CHANGED
@@ -592,7 +592,9 @@ async function writeConfined(real, requested, buf, overwrite) {
592
592
  const flags = O_WRONLY | O_CREAT | O_NOFOLLOW | (overwrite ? O_TRUNC : O_EXCL);
593
593
  let handle;
594
594
  try {
595
- handle = await open(real, flags, 0o666);
595
+ // Owner-only (fleet-audit#1027): these are a child's report cards and
596
+ // transcripts, so match the 0600 session cache rather than 0666 & ~umask.
597
+ handle = await open(real, flags, 0o600);
596
598
  }
597
599
  catch (e) {
598
600
  const code = e.code;
@@ -603,6 +605,11 @@ async function writeConfined(real, requested, buf, overwrite) {
603
605
  throw e;
604
606
  }
605
607
  try {
608
+ // The create mode only applies to a NEW file; an overwrite truncates an
609
+ // existing inode and keeps its mode, so tighten it explicitly. (fchmod is
610
+ // a no-op for the mode bits on Windows.)
611
+ if (overwrite)
612
+ await handle.chmod(0o600);
606
613
  await handle.writeFile(buf);
607
614
  }
608
615
  finally {
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.1.3', // x-release-please-version
59
+ version: '3.1.4', // 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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "infinitecampus-mcp",
3
- "version": "3.1.3",
3
+ "version": "3.1.4",
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>",
@@ -49,7 +49,7 @@
49
49
  "@fetchproxy/bootstrap": "^3.2.0",
50
50
  "@fetchproxy/server": "^3.2.0",
51
51
  "@modelcontextprotocol/server": "^2.0.0",
52
- "dotenv": "^17.4.2",
52
+ "dotenv": "^18.0.2",
53
53
  "node-html-parser": "^9.0.0",
54
54
  "zod": "^4.6.5"
55
55
  },
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.1.3",
9
+ "version": "3.1.4",
10
10
  "packages": [
11
11
  {
12
12
  "registryType": "npm",
13
13
  "identifier": "infinitecampus-mcp",
14
- "version": "3.1.3",
14
+ "version": "3.1.4",
15
15
  "transport": {
16
16
  "type": "stdio"
17
17
  },