@sam2kb/m365-mcp 1.1.0 → 1.1.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.
package/.env.example CHANGED
@@ -8,6 +8,10 @@ M365_TIMEZONE=America/New_York
8
8
  # and reject direct calls to them.
9
9
  # M365_MCP_READ_ONLY=true
10
10
 
11
+ # Optional organization directory access. Requires delegated User.Read.All
12
+ # and admin consent. Set for both authentication and server startup.
13
+ # M365_MCP_DIRECTORY_READ=true
14
+
11
15
  # Optional auth storage override (default: ~/.m365-mcp/auth)
12
16
  # Use an absolute path; variable expansion is not supported by every .env loader.
13
17
  # M365_MCP_AUTH_DIR=/absolute/path/to/m365-mcp-auth
package/README.md CHANGED
@@ -5,7 +5,7 @@
5
5
 
6
6
  **Production-grade Microsoft 365 MCP server** — Email, Calendar, Contacts, OneDrive, Teams, Tasks, and Users via delegated OAuth.
7
7
 
8
- Built from the best of both `office365-connector` (delegated OAuth, multi-account) and `mcp-microsoft365` (MCP protocol, full scope), with all the gaps fixed: pagination, rate limiting, retry logic, proper timezone handling, and TypeScript throughout.
8
+ Combines delegated OAuth and multiple accounts with MCP tools, pagination, rate-limit handling, timezone-aware calendars, and TypeScript.
9
9
 
10
10
  ## Why this exists
11
11
 
@@ -42,14 +42,14 @@ the storage and revocation details.
42
42
 
43
43
  ## Scope
44
44
 
45
- **Delegated permissions** — the app acts AS YOU, not as the tenant. It can only access YOUR data:
45
+ The app uses delegated permissions. Microsoft Graph limits access to the granted scopes and what the signed-in user can access, including shared resources where permitted.
46
46
 
47
47
  - `Mail.Read` / `Mail.ReadWrite` / `Mail.Send`
48
48
  - `Calendars.Read` / `Calendars.ReadWrite`
49
49
  - `Contacts.Read` / `Contacts.ReadWrite`
50
50
  - `People.Read` (relevance-ranked people search)
51
- - `Files.Read.All` (your OneDrive)
52
- - `Tasks.ReadWrite` (To Do)
51
+ - `Files.Read.All` / `Files.ReadWrite` (read accessible files and create folders in your drive)
52
+ - `Tasks.Read` / `Tasks.ReadWrite` (To Do)
53
53
  - `Chat.Read` / `Chat.ReadWrite` (Teams)
54
54
  - `User.Read` + `offline_access`
55
55
 
@@ -91,6 +91,8 @@ Contacts.Read
91
91
  Contacts.ReadWrite
92
92
  People.Read
93
93
  Files.Read.All
94
+ Files.ReadWrite
95
+ Tasks.Read
94
96
  Tasks.ReadWrite
95
97
  Chat.Read
96
98
  Chat.ReadWrite
@@ -98,7 +100,7 @@ Chat.ReadWrite
98
100
 
99
101
  Click **Grant admin consent** (or each user will consent individually during login).
100
102
 
101
- > Organization-wide user listing and lookup additionally requires delegated `User.Read.All` with admin consent. This broader scope is not requested by default.
103
+ > Organization-wide user listing and lookup require delegated `User.Read.All` with admin consent. To use these tools, add that permission to the registration and set `M365_MCP_DIRECTORY_READ=true` during authentication and server startup. This broader scope is off by default.
102
104
 
103
105
  ### 3. Install
104
106
 
@@ -203,6 +205,10 @@ node dist/auth-cli.js list
203
205
 
204
206
  Each account needs its own App Registration in its respective tenant. Tokens are isolated per account.
205
207
 
208
+ Changing an account's tenant or client ID clears that account's cached tokens.
209
+ Sign in again after changing permissions or the read-only/directory settings.
210
+ Login checks cached permissions before reusing a token.
211
+
206
212
  ## Available Tools (46)
207
213
 
208
214
  ### 📧 Mail (9 tools)
@@ -269,6 +275,9 @@ Outlook Contact Lists or their membership.
269
275
  | `m365_files_info` | File/folder metadata |
270
276
  | `m365_files_create_folder` | Create folder |
271
277
 
278
+ Text reads default to 50,000 bytes and accept `maxBytes` from 0 to 1,000,000.
279
+ The downloader stops reading at that limit, including when the server returns a larger file.
280
+
272
281
  ### 💬 Teams (3 tools)
273
282
  | Tool | Description |
274
283
  |---|---|
@@ -294,6 +303,8 @@ Outlook Contact Lists or their membership.
294
303
 
295
304
  ## Development
296
305
 
306
+ Use Node.js 20 or later for the development test runner. CI tests on Linux and Windows with Node.js 24.
307
+
297
308
  ```bash
298
309
  npm install
299
310
  npm run dev # tsx watch mode
@@ -319,7 +330,11 @@ npm run build # compile TypeScript
319
330
  by `0700` directories and `0600` files where supported. Protect
320
331
  `~/.m365-mcp/auth/` or your configured `M365_MCP_AUTH_DIR`.
321
332
  - **Auto-refresh** — tokens refreshed before expiry, expired refresh tokens trigger re-auth.
322
- - **No telemetry, no analytics, no third-party calls** besides `login.microsoftonline.com` and `graph.microsoft.com`.
333
+ - **Network destinations** — OAuth uses `login.microsoftonline.com`; API calls use `graph.microsoft.com`. File reads also follow HTTPS download URLs supplied by Graph, such as OneDrive and SharePoint URLs. The Graph bearer token is attached only to Graph-origin requests. The server has no telemetry or analytics.
334
+
335
+ Reads retry temporary failures and honor `Retry-After` for 429 and 503 responses.
336
+ Writes retry explicit throttling responses, but connection failures or server errors
337
+ can leave their outcome uncertain. Check the target before trying those writes again.
323
338
 
324
339
  To delete a local token, remove its account:
325
340
 
package/SKILL.md CHANGED
@@ -21,6 +21,9 @@ metadata:
21
21
  - name: M365_MCP_READ_ONLY
22
22
  required: false
23
23
  description: Set true to request read-only scopes and disable all mutating tools.
24
+ - name: M365_MCP_DIRECTORY_READ
25
+ required: false
26
+ description: Opt in to delegated User.Read.All for organization directory tools; requires admin consent.
24
27
  install:
25
28
  - kind: node
26
29
  package: "@sam2kb/m365-mcp"
@@ -71,8 +74,9 @@ Production-grade Microsoft 365 MCP server combining the best of office365-connec
71
74
 
72
75
  ## Security and consent
73
76
 
74
- - The server contacts only Microsoft's OAuth and Graph services:
75
- `login.microsoftonline.com` and `graph.microsoft.com`.
77
+ - OAuth and API requests use `login.microsoftonline.com` and `graph.microsoft.com`.
78
+ File reads also use HTTPS download URLs supplied by Graph, including OneDrive
79
+ and SharePoint hosts. Off-origin downloads do not receive the Graph bearer token.
76
80
  - Device-code OAuth grants delegated access as the signed-in user. Read tools can
77
81
  expose private mail, files, calendars, contacts, Teams chats, tasks, and user data.
78
82
  - Send, reply, move, create, update, cancel, decline, and delete tools change real Microsoft 365
@@ -86,6 +90,10 @@ Production-grade Microsoft 365 MCP server combining the best of office365-connec
86
90
  `~/.m365-mcp/auth/` (or `M365_MCP_AUTH_DIR`), protected with directory mode
87
91
  `0700` and file mode `0600` where supported. Protect that directory and revoke
88
92
  the app's Microsoft account consent if a token or device is compromised.
93
+ - File reads stop at `maxBytes` (50,000 by default; maximum 1,000,000).
94
+ - Set `M365_MCP_DIRECTORY_READ=true` during login and server startup to request
95
+ organization directory access with admin consent. Sign in again after changing
96
+ scope settings or an account's tenant/client registration.
89
97
 
90
98
  ## Setup
91
99
 
package/dist/auth-cli.js CHANGED
@@ -16,7 +16,7 @@ async function main() {
16
16
  const cmd = args[0];
17
17
  const rest = args.slice(1);
18
18
  const accountArg = rest.find((a) => a.startsWith("--account="));
19
- const accountName = accountArg ? accountArg.split("=")[1] : undefined;
19
+ const accountName = accountArg ? accountArg.slice("--account=".length) : undefined;
20
20
  const positional = rest.filter((a) => !a.startsWith("--"));
21
21
  try {
22
22
  switch (cmd) {
@@ -1 +1 @@
1
- {"version":3,"file":"auth-cli.js","sourceRoot":"","sources":["../src/auth-cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"auth-cli.js","sourceRoot":"","sources":["../src/auth-cli.ts"],"names":[],"mappings":"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"}
package/dist/auth.js CHANGED
@@ -7,6 +7,7 @@
7
7
  import * as fs from "node:fs";
8
8
  import * as path from "node:path";
9
9
  import * as os from "node:os";
10
+ import { randomUUID } from "node:crypto";
10
11
  import { envFlag } from "./security.js";
11
12
  export function resolveAuthDir(env = process.env, homeDir = os.homedir()) {
12
13
  const configuredDir = env.M365_MCP_AUTH_DIR?.trim();
@@ -15,7 +16,7 @@ export function resolveAuthDir(env = process.env, homeDir = os.homedir()) {
15
16
  const AUTH_DIR = resolveAuthDir();
16
17
  const ACCOUNTS_PATH = path.join(AUTH_DIR, "accounts.json");
17
18
  const TOKENS_DIR = path.join(AUTH_DIR, "tokens");
18
- // Scopes for delegated access — reads/writes YOUR data only, not the whole tenant.
19
+ // Delegated scopes: Graph combines consent with the signed-in user's access.
19
20
  export function resolveScopes(env = process.env) {
20
21
  const scopes = [
21
22
  "offline_access",
@@ -29,8 +30,10 @@ export function resolveScopes(env = process.env) {
29
30
  "Chat.Read",
30
31
  ];
31
32
  if (!envFlag(env.M365_MCP_READ_ONLY)) {
32
- scopes.push("Mail.ReadWrite", "Mail.Send", "Calendars.ReadWrite", "Contacts.ReadWrite", "Tasks.ReadWrite", "Chat.ReadWrite");
33
+ scopes.push("Mail.ReadWrite", "Mail.Send", "Calendars.ReadWrite", "Contacts.ReadWrite", "Tasks.ReadWrite", "Chat.ReadWrite", "Files.ReadWrite");
33
34
  }
35
+ if (envFlag(env.M365_MCP_DIRECTORY_READ))
36
+ scopes.push("User.Read.All");
34
37
  return scopes.join(" ");
35
38
  }
36
39
  const SCOPES = resolveScopes();
@@ -40,8 +43,33 @@ export function ensureDirs() {
40
43
  fs.mkdirSync(TOKENS_DIR, { recursive: true, mode: 0o700 });
41
44
  }
42
45
  export function getTokenPath(accountName) {
46
+ validateAccountName(accountName);
43
47
  return path.join(TOKENS_DIR, `${accountName}.json`);
44
48
  }
49
+ function validateAccountName(name) {
50
+ if (!/^[a-zA-Z0-9][a-zA-Z0-9._-]{0,63}$/.test(name) || /\.$/.test(name)) {
51
+ throw new Error("Account name must start with a letter or digit and contain at most 64 letters, digits, dots, underscores or hyphens");
52
+ }
53
+ }
54
+ function writePrivateJson(file, data) {
55
+ const temporary = `${file}.${randomUUID()}.tmp`;
56
+ try {
57
+ fs.writeFileSync(temporary, JSON.stringify(data, null, 2), { mode: 0o600, flag: "wx" });
58
+ fs.renameSync(temporary, file);
59
+ }
60
+ finally {
61
+ if (fs.existsSync(temporary))
62
+ fs.unlinkSync(temporary);
63
+ }
64
+ }
65
+ function hasRequestedScopes(scope) {
66
+ const granted = new Set(scope.split(/\s+/));
67
+ const required = SCOPES.split(" ").filter((value) => value !== "offline_access");
68
+ if (!required.every((value) => granted.has(value)))
69
+ return false;
70
+ return !envFlag(process.env.M365_MCP_READ_ONLY) ||
71
+ ![...granted].some((value) => /(?:\.ReadWrite(?:\.All)?|\.Send)$/.test(value));
72
+ }
45
73
  // ─── account store ──────────────────────────────────────────────────
46
74
  export function loadAccounts() {
47
75
  ensureDirs();
@@ -49,18 +77,31 @@ export function loadAccounts() {
49
77
  return { default: null, accounts: {} };
50
78
  }
51
79
  try {
52
- return JSON.parse(fs.readFileSync(ACCOUNTS_PATH, "utf8"));
80
+ const store = JSON.parse(fs.readFileSync(ACCOUNTS_PATH, "utf8"));
81
+ if (!store || !store.accounts || typeof store.accounts !== "object" || Array.isArray(store.accounts) ||
82
+ (store.default !== null && typeof store.default !== "string"))
83
+ throw new Error("Invalid account registry");
84
+ return store;
53
85
  }
54
- catch {
55
- return { default: null, accounts: {} };
86
+ catch (error) {
87
+ throw new Error("Cannot read account registry; restore accounts.json before changing accounts", { cause: error });
56
88
  }
57
89
  }
58
90
  function saveAccounts(store) {
59
91
  ensureDirs();
60
- fs.writeFileSync(ACCOUNTS_PATH, JSON.stringify(store, null, 2), { mode: 0o600 });
92
+ writePrivateJson(ACCOUNTS_PATH, store);
61
93
  }
62
94
  export function addAccount(name, tenantId, clientId, email, description) {
95
+ validateAccountName(name);
96
+ if (!tenantId.trim() || !clientId.trim())
97
+ throw new Error("tenantId and clientId are required");
63
98
  const store = loadAccounts();
99
+ const existing = Object.hasOwn(store.accounts, name) ? store.accounts[name] : undefined;
100
+ if (existing && (existing.tenantId !== tenantId || existing.clientId !== clientId)) {
101
+ const tokenPath = getTokenPath(name);
102
+ if (fs.existsSync(tokenPath))
103
+ fs.unlinkSync(tokenPath);
104
+ }
64
105
  store.accounts[name] = {
65
106
  tenantId,
66
107
  clientId,
@@ -73,6 +114,7 @@ export function addAccount(name, tenantId, clientId, email, description) {
73
114
  saveAccounts(store);
74
115
  }
75
116
  export function removeAccount(name) {
117
+ validateAccountName(name);
76
118
  const store = loadAccounts();
77
119
  delete store.accounts[name];
78
120
  const tokenPath = getTokenPath(name);
@@ -85,7 +127,8 @@ export function removeAccount(name) {
85
127
  }
86
128
  export function setDefaultAccount(name) {
87
129
  const store = loadAccounts();
88
- if (!store.accounts[name])
130
+ validateAccountName(name);
131
+ if (!Object.hasOwn(store.accounts, name))
89
132
  throw new Error(`Account "${name}" not found`);
90
133
  store.default = name;
91
134
  saveAccounts(store);
@@ -95,9 +138,10 @@ export function resolveAccount(accountName) {
95
138
  const name = accountName ?? store.default;
96
139
  if (!name)
97
140
  throw new Error("No account configured. Run: m365-mcp-auth add <name> <tenantId> <clientId>");
98
- const acc = store.accounts[name];
99
- if (!acc)
141
+ validateAccountName(name);
142
+ if (!Object.hasOwn(store.accounts, name))
100
143
  throw new Error(`Account "${name}" not found`);
144
+ const acc = store.accounts[name];
101
145
  return { name, ...acc, tokenPath: getTokenPath(name) };
102
146
  }
103
147
  export function listAccounts() {
@@ -118,7 +162,9 @@ export function loadTokens(config) {
118
162
  return null;
119
163
  try {
120
164
  const data = JSON.parse(fs.readFileSync(config.tokenPath, "utf8"));
121
- if (!data.access_token || !data.refresh_token)
165
+ if (typeof data?.access_token !== "string" || !data.access_token ||
166
+ typeof data.refresh_token !== "string" || !data.refresh_token ||
167
+ !Number.isFinite(data.expires_at) || data.expires_at <= 0 || typeof data.scope !== "string")
122
168
  return null;
123
169
  return data;
124
170
  }
@@ -135,7 +181,7 @@ function saveTokens(config, tokens) {
135
181
  expires_at: tokens.expires_at,
136
182
  scope: tokens.scope ?? SCOPES,
137
183
  };
138
- fs.writeFileSync(config.tokenPath, JSON.stringify(data, null, 2), { mode: 0o600 });
184
+ writePrivateJson(config.tokenPath, data);
139
185
  return data;
140
186
  }
141
187
  // ─── HTTPS helper ───────────────────────────────────────────────────
@@ -152,6 +198,7 @@ async function httpsPost(url, body) {
152
198
  method: "POST",
153
199
  headers: { "Content-Type": "application/x-www-form-urlencoded" },
154
200
  body: body.toString(),
201
+ signal: AbortSignal.timeout(30_000),
155
202
  });
156
203
  const data = await resp.json();
157
204
  if (!resp.ok) {
@@ -161,10 +208,10 @@ async function httpsPost(url, body) {
161
208
  }
162
209
  // ─── device code flow ───────────────────────────────────────────────
163
210
  export async function requestDeviceCode(config) {
164
- return httpsPost(`https://login.microsoftonline.com/${config.tenantId}/oauth2/v2.0/devicecode`, new URLSearchParams({ client_id: config.clientId, scope: SCOPES }));
211
+ return httpsPost(`https://login.microsoftonline.com/${encodeURIComponent(config.tenantId)}/oauth2/v2.0/devicecode`, new URLSearchParams({ client_id: config.clientId, scope: SCOPES }));
165
212
  }
166
213
  async function pollForToken(deviceCode, config) {
167
- const data = await httpsPost(`https://login.microsoftonline.com/${config.tenantId}/oauth2/v2.0/token`, new URLSearchParams({
214
+ const data = await httpsPost(`https://login.microsoftonline.com/${encodeURIComponent(config.tenantId)}/oauth2/v2.0/token`, new URLSearchParams({
168
215
  grant_type: "urn:ietf:params:oauth:grant-type:device_code",
169
216
  client_id: config.clientId,
170
217
  device_code: deviceCode,
@@ -178,7 +225,7 @@ async function pollForToken(deviceCode, config) {
178
225
  }
179
226
  // ─── token refresh ──────────────────────────────────────────────────
180
227
  async function refreshAccessToken(config, refreshToken) {
181
- const data = await httpsPost(`https://login.microsoftonline.com/${config.tenantId}/oauth2/v2.0/token`, new URLSearchParams({
228
+ const data = await httpsPost(`https://login.microsoftonline.com/${encodeURIComponent(config.tenantId)}/oauth2/v2.0/token`, new URLSearchParams({
182
229
  grant_type: "refresh_token",
183
230
  client_id: config.clientId,
184
231
  refresh_token: refreshToken,
@@ -207,6 +254,8 @@ export async function getAccessToken(accountName) {
207
254
  }
208
255
  // Still valid with 5-minute buffer
209
256
  if (tokens.expires_at > Date.now() + 5 * 60 * 1000) {
257
+ if (!hasRequestedScopes(tokens.scope))
258
+ throw new Error(`Permissions changed for "${config.name}". Re-authenticate: m365-mcp-auth login --account=${config.name}`);
210
259
  return tokens.access_token;
211
260
  }
212
261
  // Serialise refresh — if another caller is already refreshing, wait for it
@@ -222,7 +271,7 @@ export async function getAccessToken(accountName) {
222
271
  async function doRefresh(config, refreshToken) {
223
272
  // Double-check tokens haven't been refreshed by a concurrent caller
224
273
  const current = loadTokens(config);
225
- if (current && current.expires_at > Date.now() + 5 * 60 * 1000) {
274
+ if (current && current.expires_at > Date.now() + 5 * 60 * 1000 && hasRequestedScopes(current.scope)) {
226
275
  return current.access_token;
227
276
  }
228
277
  let attempt = 0;
@@ -254,7 +303,7 @@ export async function authenticate(accountName, onPrompt) {
254
303
  const config = resolveAccount(accountName);
255
304
  // Check existing
256
305
  const existing = loadTokens(config);
257
- if (existing && existing.expires_at > Date.now() + 5 * 60 * 1000) {
306
+ if (existing && existing.expires_at > Date.now() + 5 * 60 * 1000 && hasRequestedScopes(existing.scope)) {
258
307
  return existing;
259
308
  }
260
309
  // Request device code
@@ -262,14 +311,21 @@ export async function authenticate(accountName, onPrompt) {
262
311
  onPrompt(dc.verification_uri, dc.user_code);
263
312
  // Poll
264
313
  const deadline = Date.now() + dc.expires_in * 1000;
314
+ let interval = dc.interval ?? 5;
265
315
  while (Date.now() < deadline) {
266
- await new Promise((r) => setTimeout(r, dc.interval * 1000));
316
+ await new Promise((r) => setTimeout(r, interval * 1000));
317
+ if (Date.now() >= deadline)
318
+ break;
267
319
  try {
268
320
  const tokens = await pollForToken(dc.device_code, config);
269
321
  return saveTokens(config, tokens);
270
322
  }
271
323
  catch (err) {
272
324
  const errorCode = err instanceof OAuthError ? err.code : undefined;
325
+ if (errorCode === "slow_down") {
326
+ interval += 5;
327
+ continue;
328
+ }
273
329
  if (errorCode === "authorization_pending" ||
274
330
  err.message.includes("AADSTS70016")) {
275
331
  continue;
package/dist/auth.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"auth.js","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"auth.js","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"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"}
package/dist/graph.d.ts CHANGED
@@ -17,7 +17,9 @@ export declare class GraphClient {
17
17
  /** Paginated GET — yields pages lazily */
18
18
  paginate<T>(path: string, maxPages?: number, additionalHeaders?: Readonly<Record<string, string>>): AsyncGenerator<T[]>;
19
19
  /** POST */
20
- post<T>(path: string, body: unknown): Promise<T>;
20
+ post<T>(path: string, body: unknown, options?: {
21
+ retrySafe?: boolean;
22
+ }): Promise<T>;
21
23
  /** PATCH */
22
24
  patch<T>(path: string, body: unknown): Promise<T>;
23
25
  /** DELETE */