brightspace-mcp-server 3.7.11 → 3.7.12

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/README.md CHANGED
@@ -99,7 +99,7 @@ There is nothing to log into first. Ask for your grades and the sign-in happens
99
99
 
100
100
  Returning the next day normally requires no action. The server renews short-lived API tokens over HTTPS using the saved Brightspace session. If that session ends, a browser restores your saved Microsoft session and tries silent SSO. Approval and code-based modes stay headless; when an automatic run needs a code, run the auth command below to enter it securely in the terminal.
101
101
 
102
- If visible-browser mode is configured, the window stays open for up to five minutes so you can finish credentials and MFA manually when automatic sign-in cannot continue. Rerunning setup preserves your previous hidden or visible choice as the prompt default.
102
+ If visible-browser mode is configured, the auth command opens a window that stays open for up to five minutes so you can finish credentials and MFA manually when automatic sign-in cannot continue. Background recovery during a tool call always runs headless so it never opens a browser over your work; set `D2L_HEADLESS=false` in the server's environment to let it open one too. Rerunning setup preserves your previous hidden or visible choice as the prompt default.
103
103
 
104
104
  Your school's policy controls when MFA is required. There is no local 24-hour cutoff, and the server no longer discards browser state after one hour. A network outage preserves the saved session and returns a temporary error.
105
105
 
@@ -111,7 +111,8 @@ function forwardLines(stream, emit) {
111
111
  * re-authenticate when the current session has expired.
112
112
  *
113
113
  * The child inherits the parent's resolved environment and working directory,
114
- * so both processes read the same account configuration and .env file.
114
+ * so both processes read the same account configuration and .env file. It
115
+ * runs headless unless D2L_HEADLESS is set explicitly.
115
116
  *
116
117
  * run() settles as soon as the child reports an MFA challenge (with or
117
118
  * without a number to display) rather than waiting for the child to exit —
@@ -241,9 +242,13 @@ export class AuthRunner {
241
242
  const child = spawn(process.execPath, // use the same Node binary
242
243
  [this.scriptPath, "--automatic"], {
243
244
  cwd: process.cwd(),
244
- env: { ...process.env },
245
+ // Background recovery never opens a browser over the user's work
246
+ // unless D2L_HEADLESS explicitly asks for one; the saved
247
+ // visible-browser preference applies to manual sign-in only.
248
+ env: { D2L_HEADLESS: "true", ...process.env },
245
249
  stdio: ["ignore", "pipe", "pipe"],
246
250
  detached: process.platform !== "win32",
251
+ windowsHide: true,
247
252
  });
248
253
  let timedOut = false;
249
254
  // Whether the caller-facing promise above (resolve/reject) has
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "brightspace-mcp-server",
3
- "version": "3.7.11",
3
+ "version": "3.7.12",
4
4
  "mcpName": "io.github.rohanmuppa/brightspace",
5
5
  "description": "MCP server for Brightspace (D2L). Check grades, due dates, assignments, announcements, syllabus, rosters and more via Claude, ChatGPT, Cursor, Windsurf, or any MCP client.",
6
6
  "type": "module",