brightspace-mcp-server 1.1.0 → 1.1.2

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/build/index.js CHANGED
@@ -38,12 +38,12 @@ else {
38
38
  // Create MCP server instance
39
39
  const server = new McpServer({
40
40
  name: "brightspace",
41
- version: "1.1.0",
41
+ version: "1.1.2",
42
42
  description: "Brightspace MCP Server — by Rohan Muppa (github.com/rohanmuppa/brightspace-mcp-server)",
43
43
  });
44
44
  log("INFO", "");
45
45
  log("INFO", "========================================");
46
- log("INFO", " Brightspace MCP Server v1.1.0");
46
+ log("INFO", " Brightspace MCP Server v1.1.2");
47
47
  log("INFO", " By Rohan Muppa — ECE @ Purdue");
48
48
  log("INFO", " github.com/rohanmuppa/brightspace-mcp-server");
49
49
  log("INFO", "========================================");
@@ -1,8 +1,8 @@
1
1
  /**
2
2
  * Background npm update checker — non-blocking fetch on startup.
3
3
  * Compares installed version against latest on npm registry.
4
- * If a newer version exists, produces a one-time notice
5
- * that gets appended to the first check_auth response.
4
+ * If a newer version exists, auto-updates (clears npx cache or
5
+ * runs npm install -g) so the next launch picks up the new version.
6
6
  */
7
7
  export declare function initUpdateChecker(): void;
8
8
  export declare function getUpdateNotice(): string | null;
@@ -1 +1 @@
1
- {"version":3,"file":"update-checker.d.ts","sourceRoot":"","sources":["../../src/utils/update-checker.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAqBH,wBAAgB,iBAAiB,IAAI,IAAI,CAsBxC;AAED,wBAAgB,eAAe,IAAI,MAAM,GAAG,IAAI,CAI/C"}
1
+ {"version":3,"file":"update-checker.d.ts","sourceRoot":"","sources":["../../src/utils/update-checker.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAmCH,wBAAgB,iBAAiB,IAAI,IAAI,CA+BxC;AAED,wBAAgB,eAAe,IAAI,MAAM,GAAG,IAAI,CAI/C"}
@@ -1,13 +1,14 @@
1
1
  /**
2
2
  * Background npm update checker — non-blocking fetch on startup.
3
3
  * Compares installed version against latest on npm registry.
4
- * If a newer version exists, produces a one-time notice
5
- * that gets appended to the first check_auth response.
4
+ * If a newer version exists, auto-updates (clears npx cache or
5
+ * runs npm install -g) so the next launch picks up the new version.
6
6
  */
7
- import { execFile } from "node:child_process";
7
+ import { exec } from "node:child_process";
8
8
  import { readFileSync } from "node:fs";
9
+ import { rm } from "node:fs/promises";
9
10
  import { fileURLToPath } from "node:url";
10
- import { dirname, resolve } from "node:path";
11
+ import { dirname, resolve, sep } from "node:path";
11
12
  const __filename = fileURLToPath(import.meta.url);
12
13
  const projectRoot = resolve(dirname(__filename), "..", "..");
13
14
  let notice = null;
@@ -20,20 +21,39 @@ function getInstalledVersion() {
20
21
  return "0.0.0";
21
22
  }
22
23
  }
24
+ function isNpxCache() {
25
+ const normalized = projectRoot.split(sep).join("/");
26
+ return /[\\/]_npx[\\/][^\\/]+[\\/]node_modules[\\/]brightspace-mcp-server/.test(normalized);
27
+ }
28
+ function getNpxHashDir() {
29
+ return resolve(projectRoot, "..", "..");
30
+ }
31
+ const FALLBACK_MSG = (old, latest) => `Update available: v${old} → v${latest}. ` +
32
+ "Run `npx brightspace-mcp-server@latest` or clear your npx cache to update.";
23
33
  export function initUpdateChecker() {
24
34
  const installed = getInstalledVersion();
25
- execFile("npm", ["view", "brightspace-mcp-server", "version"], { timeout: 10000, shell: true }, (err, stdout) => {
35
+ exec("npm view brightspace-mcp-server version", { timeout: 10000 }, (err, stdout) => {
26
36
  if (err)
27
37
  return;
28
38
  const latest = stdout.trim();
29
- if (!latest)
39
+ if (!latest || latest === installed)
30
40
  return;
31
- if (latest !== installed) {
32
- execFile("npm", ["install", "-g", "brightspace-mcp-server@latest"], { timeout: 60000, shell: true }, (installErr) => {
41
+ if (isNpxCache()) {
42
+ const hashDir = getNpxHashDir();
43
+ rm(hashDir, { recursive: true, force: true })
44
+ .then(() => {
45
+ notice =
46
+ `Auto-updated: npx cache cleared (v${installed} → v${latest}). ` +
47
+ "The new version will be downloaded on next restart.";
48
+ })
49
+ .catch(() => {
50
+ notice = FALLBACK_MSG(installed, latest);
51
+ });
52
+ }
53
+ else {
54
+ exec("npm install -g brightspace-mcp-server@latest", { timeout: 60000 }, (installErr) => {
33
55
  if (installErr) {
34
- notice =
35
- `Update available: v${installed} → v${latest}. ` +
36
- "Run `npx brightspace-mcp-server@latest` or clear your npx cache to update.";
56
+ notice = FALLBACK_MSG(installed, latest);
37
57
  }
38
58
  else {
39
59
  notice =
@@ -1 +1 @@
1
- {"version":3,"file":"update-checker.js","sourceRoot":"","sources":["../../src/utils/update-checker.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAE7C,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClD,MAAM,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AAE7D,IAAI,MAAM,GAAkB,IAAI,CAAC;AAEjC,SAAS,mBAAmB;IAC1B,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,WAAW,EAAE,cAAc,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;QACpF,OAAO,GAAG,CAAC,OAAO,IAAI,OAAO,CAAC;IAChC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,OAAO,CAAC;IACjB,CAAC;AACH,CAAC;AAED,MAAM,UAAU,iBAAiB;IAC/B,MAAM,SAAS,GAAG,mBAAmB,EAAE,CAAC;IAExC,QAAQ,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE,wBAAwB,EAAE,SAAS,CAAC,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE;QAC9G,IAAI,GAAG;YAAE,OAAO;QAChB,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC;QAC7B,IAAI,CAAC,MAAM;YAAE,OAAO;QAEpB,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACzB,QAAQ,CAAC,KAAK,EAAE,CAAC,SAAS,EAAE,IAAI,EAAE,+BAA+B,CAAC,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,UAAU,EAAE,EAAE;gBAClH,IAAI,UAAU,EAAE,CAAC;oBACf,MAAM;wBACJ,sBAAsB,SAAS,OAAO,MAAM,IAAI;4BAChD,4EAA4E,CAAC;gBACjF,CAAC;qBAAM,CAAC;oBACN,MAAM;wBACJ,sBAAsB,SAAS,QAAQ,MAAM,IAAI;4BACjD,iDAAiD,CAAC;gBACtD,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,eAAe;IAC7B,MAAM,MAAM,GAAG,MAAM,CAAC;IACtB,MAAM,GAAG,IAAI,CAAC;IACd,OAAO,MAAM,CAAC;AAChB,CAAC"}
1
+ {"version":3,"file":"update-checker.js","sourceRoot":"","sources":["../../src/utils/update-checker.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "brightspace-mcp-server",
3
- "version": "1.1.0",
3
+ "version": "1.1.2",
4
4
  "mcpName": "io.github.rohanmuppa/brightspace",
5
5
  "description": "MCP server for Brightspace (D2L). Check grades, due dates, announcements, rosters and more via Claude, ChatGPT, Cursor, or any MCP client.",
6
6
  "type": "module",