@softeria/ms-365-mcp-server 0.78.0 → 0.79.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.
@@ -352,6 +352,7 @@
352
352
  "pathPattern": "/me/calendar/getSchedule",
353
353
  "method": "post",
354
354
  "toolName": "get-schedule",
355
+ "readOnly": true,
355
356
  "workScopes": ["Calendars.Read"]
356
357
  },
357
358
  {
@@ -407,6 +408,7 @@
407
408
  "pathPattern": "/me/findMeetingTimes",
408
409
  "method": "post",
409
410
  "toolName": "find-meeting-times",
411
+ "readOnly": true,
410
412
  "workScopes": ["Calendars.Read.Shared"]
411
413
  },
412
414
  {
@@ -310,10 +310,13 @@ function registerGraphTools(server, graphClient, readOnly = false, enabledToolsP
310
310
  skippedCount++;
311
311
  continue;
312
312
  }
313
- if (readOnly && tool.method.toUpperCase() !== "GET") {
314
- logger.info(`Skipping write operation ${tool.alias} in read-only mode`);
315
- skippedCount++;
316
- continue;
313
+ const method = tool.method.toUpperCase();
314
+ if (readOnly && method !== "GET") {
315
+ if (!(method === "POST" && endpointConfig?.readOnly)) {
316
+ logger.info(`Skipping write operation ${tool.alias} in read-only mode`);
317
+ skippedCount++;
318
+ continue;
319
+ }
317
320
  }
318
321
  if (enabledToolsRegex && !enabledToolsRegex.test(tool.alias)) {
319
322
  logger.info(`Skipping tool ${tool.alias} - doesn't match filter pattern`);
@@ -464,8 +467,11 @@ function buildToolsRegistry(readOnly, orgMode) {
464
467
  if (!orgMode && endpointConfig && !endpointConfig.scopes && endpointConfig.workScopes) {
465
468
  continue;
466
469
  }
467
- if (readOnly && tool.method.toUpperCase() !== "GET") {
468
- continue;
470
+ const method = tool.method.toUpperCase();
471
+ if (readOnly && method !== "GET") {
472
+ if (!(method === "POST" && endpointConfig?.readOnly)) {
473
+ continue;
474
+ }
469
475
  }
470
476
  toolsMap.set(tool.alias, { tool, config: endpointConfig });
471
477
  }
@@ -1,11 +1,11 @@
1
- 2026-04-14 20:54:17 INFO: [GRAPH CLIENT] Final URL being sent to Microsoft: https://graph.microsoft.com/v1.0/me
2
- 2026-04-14 20:54:17 INFO: [GRAPH CLIENT] Final URL being sent to Microsoft: https://graph.microsoft.com/v1.0/me
3
- 2026-04-14 20:54:17 INFO: [GRAPH CLIENT] Final URL being sent to Microsoft: https://graph.microsoft.com/v1.0/me
4
- 2026-04-14 20:54:17 INFO: [GRAPH CLIENT] Final URL being sent to Microsoft: https://graph.microsoft.com/v1.0/me/messages
5
- 2026-04-14 20:54:17 INFO: [GRAPH CLIENT] Final URL being sent to Microsoft: https://graph.microsoft.com/v1.0/me/calendar
6
- 2026-04-14 20:54:17 INFO: [GRAPH CLIENT] Final URL being sent to Microsoft: https://graph.microsoft.com/v1.0/me/photo/$value
7
- 2026-04-14 20:54:18 INFO: Using environment variables for secrets
8
- 2026-04-14 20:54:18 INFO: Using environment variables for secrets
9
- 2026-04-14 20:54:18 INFO: Using environment variables for secrets
10
- 2026-04-14 20:54:18 INFO: Using environment variables for secrets
11
- 2026-04-14 20:54:18 INFO: Using environment variables for secrets
1
+ 2026-04-14 21:33:26 INFO: [GRAPH CLIENT] Final URL being sent to Microsoft: https://graph.microsoft.com/v1.0/me
2
+ 2026-04-14 21:33:26 INFO: [GRAPH CLIENT] Final URL being sent to Microsoft: https://graph.microsoft.com/v1.0/me
3
+ 2026-04-14 21:33:26 INFO: [GRAPH CLIENT] Final URL being sent to Microsoft: https://graph.microsoft.com/v1.0/me
4
+ 2026-04-14 21:33:26 INFO: [GRAPH CLIENT] Final URL being sent to Microsoft: https://graph.microsoft.com/v1.0/me/messages
5
+ 2026-04-14 21:33:26 INFO: [GRAPH CLIENT] Final URL being sent to Microsoft: https://graph.microsoft.com/v1.0/me/calendar
6
+ 2026-04-14 21:33:27 INFO: [GRAPH CLIENT] Final URL being sent to Microsoft: https://graph.microsoft.com/v1.0/me/photo/$value
7
+ 2026-04-14 21:33:28 INFO: Using environment variables for secrets
8
+ 2026-04-14 21:33:28 INFO: Using environment variables for secrets
9
+ 2026-04-14 21:33:28 INFO: Using environment variables for secrets
10
+ 2026-04-14 21:33:28 INFO: Using environment variables for secrets
11
+ 2026-04-14 21:33:28 INFO: Using environment variables for secrets
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@softeria/ms-365-mcp-server",
3
- "version": "0.78.0",
3
+ "version": "0.79.1",
4
4
  "description": " A Model Context Protocol (MCP) server for interacting with Microsoft 365 and Office services through the Graph API",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -352,6 +352,7 @@
352
352
  "pathPattern": "/me/calendar/getSchedule",
353
353
  "method": "post",
354
354
  "toolName": "get-schedule",
355
+ "readOnly": true,
355
356
  "workScopes": ["Calendars.Read"]
356
357
  },
357
358
  {
@@ -407,6 +408,7 @@
407
408
  "pathPattern": "/me/findMeetingTimes",
408
409
  "method": "post",
409
410
  "toolName": "find-meeting-times",
411
+ "readOnly": true,
410
412
  "workScopes": ["Calendars.Read.Shared"]
411
413
  },
412
414
  {