@mindstone/mcp-server-microsoft-mail 0.1.0

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.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tools.js","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ export declare const SERVER_NAME = "mcp-server-microsoft-mail";
2
+ export declare const SERVER_VERSION: string;
3
+ export declare const MS_PACKAGE_ID_DEFAULT = "Microsoft365Mail";
4
+ export declare const AUTH_TOOL_NAME = "authenticate_microsoft_account";
5
+ export declare const REQUEST_TIMEOUT_MS: number;
6
+ export declare function getMsPackageId(): string;
7
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,WAAW,8BAA8B,CAAC;AACvD,eAAO,MAAM,cAAc,QAAc,CAAC;AAE1C,eAAO,MAAM,qBAAqB,qBAAqB,CAAC;AACxD,eAAO,MAAM,cAAc,mCAAmC,CAAC;AAkB/D,eAAO,MAAM,kBAAkB,QAA4B,CAAC;AAE5D,wBAAgB,cAAc,IAAI,MAAM,CAEvC"}
package/dist/types.js ADDED
@@ -0,0 +1,25 @@
1
+ import { createRequire } from 'node:module';
2
+ const require = createRequire(import.meta.url);
3
+ const pkg = require('../package.json');
4
+ export const SERVER_NAME = 'mcp-server-microsoft-mail';
5
+ export const SERVER_VERSION = pkg.version;
6
+ export const MS_PACKAGE_ID_DEFAULT = 'Microsoft365Mail';
7
+ export const AUTH_TOOL_NAME = 'authenticate_microsoft_account';
8
+ const DEFAULT_REQUEST_TIMEOUT_MS = 60_000;
9
+ const MAX_REQUEST_TIMEOUT_MS = 300_000;
10
+ function resolveRequestTimeoutMs() {
11
+ const raw = process.env.MICROSOFT_REQUEST_TIMEOUT_MS;
12
+ if (!raw)
13
+ return DEFAULT_REQUEST_TIMEOUT_MS;
14
+ const parsed = Number.parseInt(raw, 10);
15
+ if (Number.isFinite(parsed) && parsed > 0 && parsed <= MAX_REQUEST_TIMEOUT_MS) {
16
+ return parsed;
17
+ }
18
+ console.error(`[microsoft-mail-mcp] MICROSOFT_REQUEST_TIMEOUT_MS=${raw} is invalid; falling back to ${DEFAULT_REQUEST_TIMEOUT_MS}ms.`);
19
+ return DEFAULT_REQUEST_TIMEOUT_MS;
20
+ }
21
+ export const REQUEST_TIMEOUT_MS = resolveRequestTimeoutMs();
22
+ export function getMsPackageId() {
23
+ return process.env.MS_MCP_PACKAGE_ID ?? MS_PACKAGE_ID_DEFAULT;
24
+ }
25
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC/C,MAAM,GAAG,GAAG,OAAO,CAAC,iBAAiB,CAAwB,CAAC;AAE9D,MAAM,CAAC,MAAM,WAAW,GAAG,2BAA2B,CAAC;AACvD,MAAM,CAAC,MAAM,cAAc,GAAG,GAAG,CAAC,OAAO,CAAC;AAE1C,MAAM,CAAC,MAAM,qBAAqB,GAAG,kBAAkB,CAAC;AACxD,MAAM,CAAC,MAAM,cAAc,GAAG,gCAAgC,CAAC;AAE/D,MAAM,0BAA0B,GAAG,MAAM,CAAC;AAC1C,MAAM,sBAAsB,GAAG,OAAO,CAAC;AAEvC,SAAS,uBAAuB;IAC9B,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAC;IACrD,IAAI,CAAC,GAAG;QAAE,OAAO,0BAA0B,CAAC;IAC5C,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IACxC,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,MAAM,GAAG,CAAC,IAAI,MAAM,IAAI,sBAAsB,EAAE,CAAC;QAC9E,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,OAAO,CAAC,KAAK,CACX,qDAAqD,GAAG,gCAAgC,0BAA0B,KAAK,CACxH,CAAC;IACF,OAAO,0BAA0B,CAAC;AACpC,CAAC;AAED,MAAM,CAAC,MAAM,kBAAkB,GAAG,uBAAuB,EAAE,CAAC;AAE5D,MAAM,UAAU,cAAc;IAC5B,OAAO,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,qBAAqB,CAAC;AAChE,CAAC"}
@@ -0,0 +1,63 @@
1
+ import type { CallToolResult } from '@modelcontextprotocol/sdk/types.js';
2
+ import type { AuthRequiredReason } from '@mindstone/mcp-server-microsoft-shared';
3
+ /**
4
+ * Compose a per-call abort signal with the cohort timeout.
5
+ *
6
+ * Returns an AbortSignal that fires when EITHER the caller's signal aborts
7
+ * OR `REQUEST_TIMEOUT_MS` elapses, whichever is sooner.
8
+ */
9
+ export declare function abortableSignal(callerSignal?: AbortSignal): AbortSignal;
10
+ export declare function extractCallerSignal(extra: unknown): AbortSignal | undefined;
11
+ /**
12
+ * Race a promise against an AbortSignal as defence-in-depth.
13
+ *
14
+ * The composed signal is the primary cancellation mechanism: callers thread it
15
+ * into each Graph request via `GraphRequest.options({ signal })` so the
16
+ * underlying `fetch` is actually aborted on caller cancel or cohort timeout.
17
+ * This wrapper guarantees the tool call returns promptly even if some
18
+ * middleware path drops the signal — in that case the background fetch is
19
+ * left to settle silently while the host-visible timeout contract is honoured.
20
+ */
21
+ export declare function runWithSignal<T>(promise: Promise<T>, signal: AbortSignal): Promise<T>;
22
+ /**
23
+ * Host-orchestrated auth_required envelope. The OSS server emits structural-only
24
+ * payload — no URL, no port — and the host computes the OAuth URL.
25
+ *
26
+ * Mirrors Slack/Google Workspace cohort precedent.
27
+ */
28
+ export declare function buildAuthRequiredResponse(): Record<string, unknown>;
29
+ export declare function authRequiredJson(): string;
30
+ export interface ErrorPayload {
31
+ error: string;
32
+ action_required: string;
33
+ next_step: string;
34
+ reason?: string;
35
+ [key: string]: unknown;
36
+ }
37
+ /**
38
+ * Build a CallToolResult for a manual validation / business-rule rejection.
39
+ * Mirrors bundled microsoft-mail's `errorResult` parity: `isError: true` plus
40
+ * `{ ok: false, error, action_required, next_step }` payload.
41
+ */
42
+ export declare function errorResponse(payload: ErrorPayload): CallToolResult;
43
+ /**
44
+ * Encode a successful tool result as plain JSON, matching bundled
45
+ * microsoft-mail's `successResult` parity (no `ok: true` wrapper).
46
+ */
47
+ export declare function successJson(data: unknown): string;
48
+ /**
49
+ * Map a Microsoft Graph error / shared TokenProvider error into the right
50
+ * tool response. Returns `auth_required` for token-related failures, the
51
+ * generic recovery-guidance envelope otherwise.
52
+ */
53
+ export declare function buildErrorResponse(err: unknown): CallToolResult;
54
+ type ToolHandler<T> = (args: T, extra: unknown) => Promise<CallToolResult>;
55
+ /**
56
+ * Wrap a tool handler with consistent error handling. Handlers return either
57
+ * a CallToolResult (for already-shaped responses, e.g. validation errors) or
58
+ * a JSON string. ConnectorErrors and Graph 401/refresh failures translate to
59
+ * the structured `auth_required` shape via {@link buildErrorResponse}.
60
+ */
61
+ export declare function withErrorHandling<T>(fn: (args: T, extra: unknown) => Promise<string | CallToolResult>): ToolHandler<T>;
62
+ export type { AuthRequiredReason };
63
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AAMzE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,wCAAwC,CAAC;AAGjF;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,YAAY,CAAC,EAAE,WAAW,GAAG,WAAW,CAmBvE;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,OAAO,GAAG,WAAW,GAAG,SAAS,CAM3E;AAED;;;;;;;;;GASG;AACH,wBAAgB,aAAa,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,CAAC,CAAC,CA4BrF;AAED;;;;;GAKG;AACH,wBAAgB,yBAAyB,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAUnE;AAED,wBAAgB,gBAAgB,IAAI,MAAM,CAEzC;AAED,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,eAAe,EAAE,MAAM,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAMD;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,YAAY,GAAG,cAAc,CAKnE;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,CAEjD;AAkCD;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,OAAO,GAAG,cAAc,CAsC/D;AAED,KAAK,WAAW,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,OAAO,KAAK,OAAO,CAAC,cAAc,CAAC,CAAC;AAE3E;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,CAAC,EACjC,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,OAAO,KAAK,OAAO,CAAC,MAAM,GAAG,cAAc,CAAC,GAChE,WAAW,CAAC,CAAC,CAAC,CAYhB;AAED,YAAY,EAAE,kBAAkB,EAAE,CAAC"}
package/dist/utils.js ADDED
@@ -0,0 +1,218 @@
1
+ import { MicrosoftRefreshDisabledError, detectAuthRequiredReason, formatGraphError, } from '@mindstone/mcp-server-microsoft-shared';
2
+ import { AUTH_TOOL_NAME, REQUEST_TIMEOUT_MS, getMsPackageId } from './types.js';
3
+ /**
4
+ * Compose a per-call abort signal with the cohort timeout.
5
+ *
6
+ * Returns an AbortSignal that fires when EITHER the caller's signal aborts
7
+ * OR `REQUEST_TIMEOUT_MS` elapses, whichever is sooner.
8
+ */
9
+ export function abortableSignal(callerSignal) {
10
+ const timeoutSignal = AbortSignal.timeout(REQUEST_TIMEOUT_MS);
11
+ if (!callerSignal)
12
+ return timeoutSignal;
13
+ if (typeof AbortSignal.any === 'function') {
14
+ return AbortSignal.any([callerSignal, timeoutSignal]);
15
+ }
16
+ const controller = new AbortController();
17
+ const onAbort = (reason) => controller.abort(reason);
18
+ if (callerSignal.aborted) {
19
+ controller.abort(callerSignal.reason);
20
+ }
21
+ else {
22
+ callerSignal.addEventListener('abort', () => onAbort(callerSignal.reason), { once: true });
23
+ }
24
+ if (timeoutSignal.aborted) {
25
+ controller.abort(timeoutSignal.reason);
26
+ }
27
+ else {
28
+ timeoutSignal.addEventListener('abort', () => onAbort(timeoutSignal.reason), { once: true });
29
+ }
30
+ return controller.signal;
31
+ }
32
+ export function extractCallerSignal(extra) {
33
+ if (extra && typeof extra === 'object' && 'signal' in extra) {
34
+ const signal = extra.signal;
35
+ if (signal instanceof AbortSignal)
36
+ return signal;
37
+ }
38
+ return undefined;
39
+ }
40
+ /**
41
+ * Race a promise against an AbortSignal as defence-in-depth.
42
+ *
43
+ * The composed signal is the primary cancellation mechanism: callers thread it
44
+ * into each Graph request via `GraphRequest.options({ signal })` so the
45
+ * underlying `fetch` is actually aborted on caller cancel or cohort timeout.
46
+ * This wrapper guarantees the tool call returns promptly even if some
47
+ * middleware path drops the signal — in that case the background fetch is
48
+ * left to settle silently while the host-visible timeout contract is honoured.
49
+ */
50
+ export function runWithSignal(promise, signal) {
51
+ return new Promise((resolve, reject) => {
52
+ if (signal.aborted) {
53
+ reject(signal.reason ?? new Error('Request aborted'));
54
+ return;
55
+ }
56
+ let settled = false;
57
+ const onAbort = () => {
58
+ if (settled)
59
+ return;
60
+ settled = true;
61
+ reject(signal.reason ?? new Error('Request aborted'));
62
+ };
63
+ signal.addEventListener('abort', onAbort, { once: true });
64
+ promise.then((value) => {
65
+ if (settled)
66
+ return;
67
+ settled = true;
68
+ signal.removeEventListener('abort', onAbort);
69
+ resolve(value);
70
+ }, (err) => {
71
+ if (settled)
72
+ return;
73
+ settled = true;
74
+ signal.removeEventListener('abort', onAbort);
75
+ reject(err);
76
+ });
77
+ });
78
+ }
79
+ /**
80
+ * Host-orchestrated auth_required envelope. The OSS server emits structural-only
81
+ * payload — no URL, no port — and the host computes the OAuth URL.
82
+ *
83
+ * Mirrors Slack/Google Workspace cohort precedent.
84
+ */
85
+ export function buildAuthRequiredResponse() {
86
+ return {
87
+ status: 'auth_required',
88
+ user_action: { id: 'microsoft.connect_account' },
89
+ agent_action: {
90
+ instruction: "Connect your Microsoft 365 account to continue. The user will be redirected to Microsoft's sign-in.",
91
+ },
92
+ setupToolName: AUTH_TOOL_NAME,
93
+ };
94
+ }
95
+ export function authRequiredJson() {
96
+ return JSON.stringify(buildAuthRequiredResponse());
97
+ }
98
+ function errorJson(payload) {
99
+ return JSON.stringify({ ok: false, ...payload });
100
+ }
101
+ /**
102
+ * Build a CallToolResult for a manual validation / business-rule rejection.
103
+ * Mirrors bundled microsoft-mail's `errorResult` parity: `isError: true` plus
104
+ * `{ ok: false, error, action_required, next_step }` payload.
105
+ */
106
+ export function errorResponse(payload) {
107
+ return {
108
+ content: [{ type: 'text', text: errorJson(payload) }],
109
+ isError: true,
110
+ };
111
+ }
112
+ /**
113
+ * Encode a successful tool result as plain JSON, matching bundled
114
+ * microsoft-mail's `successResult` parity (no `ok: true` wrapper).
115
+ */
116
+ export function successJson(data) {
117
+ return JSON.stringify(data);
118
+ }
119
+ /**
120
+ * Recursively look through `cause`/`error`/`originalError` chains for a token-
121
+ * refresh-disabled signal. The Microsoft Graph SDK wraps middleware throws so
122
+ * the original `MicrosoftRefreshDisabledError` may be nested.
123
+ */
124
+ function isRefreshDisabledError(err) {
125
+ let cursor = err;
126
+ for (let depth = 0; depth < 6 && cursor != null; depth += 1) {
127
+ if (cursor instanceof MicrosoftRefreshDisabledError)
128
+ return true;
129
+ if (typeof cursor === 'object') {
130
+ const obj = cursor;
131
+ if (obj.code === 'MICROSOFT_REFRESH_DISABLED')
132
+ return true;
133
+ cursor = obj.cause ?? obj.originalError;
134
+ continue;
135
+ }
136
+ break;
137
+ }
138
+ if (err instanceof Error) {
139
+ const msg = err.message;
140
+ if (msg.includes('Microsoft token refresh is disabled by host'))
141
+ return true;
142
+ if (msg.includes('host has disabled refresh'))
143
+ return true;
144
+ }
145
+ return false;
146
+ }
147
+ function detectTokenProviderAuthReason(err) {
148
+ if (!(err instanceof Error))
149
+ return null;
150
+ const msg = err.message.toLowerCase();
151
+ if (msg.includes('microsoft token expired'))
152
+ return 'token_expired';
153
+ return null;
154
+ }
155
+ /**
156
+ * Map a Microsoft Graph error / shared TokenProvider error into the right
157
+ * tool response. Returns `auth_required` for token-related failures, the
158
+ * generic recovery-guidance envelope otherwise.
159
+ */
160
+ export function buildErrorResponse(err) {
161
+ if (isRefreshDisabledError(err)) {
162
+ return {
163
+ content: [{ type: 'text', text: authRequiredJson() }],
164
+ isError: true,
165
+ };
166
+ }
167
+ const reason = detectAuthRequiredReason(err) ?? detectTokenProviderAuthReason(err);
168
+ if (reason) {
169
+ return {
170
+ content: [
171
+ {
172
+ type: 'text',
173
+ text: JSON.stringify({
174
+ ...buildAuthRequiredResponse(),
175
+ reason,
176
+ error: formatGraphError(err),
177
+ package_id: getMsPackageId(),
178
+ }),
179
+ },
180
+ ],
181
+ isError: true,
182
+ };
183
+ }
184
+ return {
185
+ content: [
186
+ {
187
+ type: 'text',
188
+ text: errorJson({
189
+ error: formatGraphError(err),
190
+ action_required: 'Retry the call. If it continues to fail, run authenticate_microsoft_account to refresh the connection.',
191
+ next_step: AUTH_TOOL_NAME,
192
+ }),
193
+ },
194
+ ],
195
+ isError: true,
196
+ };
197
+ }
198
+ /**
199
+ * Wrap a tool handler with consistent error handling. Handlers return either
200
+ * a CallToolResult (for already-shaped responses, e.g. validation errors) or
201
+ * a JSON string. ConnectorErrors and Graph 401/refresh failures translate to
202
+ * the structured `auth_required` shape via {@link buildErrorResponse}.
203
+ */
204
+ export function withErrorHandling(fn) {
205
+ return async (args, extra) => {
206
+ try {
207
+ const result = await fn(args, extra);
208
+ if (typeof result === 'string') {
209
+ return { content: [{ type: 'text', text: result }] };
210
+ }
211
+ return result;
212
+ }
213
+ catch (err) {
214
+ return buildErrorResponse(err);
215
+ }
216
+ };
217
+ }
218
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,55 @@
1
+ {
2
+ "name": "@mindstone/mcp-server-microsoft-mail",
3
+ "version": "0.1.0",
4
+ "mcpName": "io.github.mindstone/mcp-server-microsoft-mail",
5
+ "description": "Microsoft 365 Outlook Mail MCP server — read, search, send, reply, forward, draft, move, and delete email via Microsoft Graph",
6
+ "license": "FSL-1.1-MIT",
7
+ "type": "module",
8
+ "bin": {
9
+ "mcp-server-microsoft-mail": "dist/index.js"
10
+ },
11
+ "files": [
12
+ "dist",
13
+ "README.md",
14
+ "LICENSE",
15
+ "CHANGELOG.md",
16
+ "server.json"
17
+ ],
18
+ "repository": {
19
+ "type": "git",
20
+ "url": "https://github.com/mindstone/mcp-servers.git",
21
+ "directory": "connectors/microsoft-mail"
22
+ },
23
+ "homepage": "https://github.com/mindstone/mcp-servers/tree/main/connectors/microsoft-mail",
24
+ "publishConfig": {
25
+ "access": "public"
26
+ },
27
+ "scripts": {
28
+ "build": "shx rm -rf dist && tsc && shx chmod +x dist/index.js && npm run security:internal-refs",
29
+ "prepare": "npm run build",
30
+ "prepublishOnly": "npm run build && npm test",
31
+ "watch": "tsc --watch",
32
+ "start": "node dist/index.js",
33
+ "test": "vitest run",
34
+ "test:watch": "vitest",
35
+ "test:coverage": "vitest run --coverage",
36
+ "security:internal-refs": "node scripts/check-internal-refs.mjs"
37
+ },
38
+ "dependencies": {
39
+ "@mindstone/mcp-server-microsoft-shared": "^0.1.0",
40
+ "@modelcontextprotocol/sdk": "^1.26.0",
41
+ "zod": "^3.23.0"
42
+ },
43
+ "devDependencies": {
44
+ "@mindstone/mcp-test-harness": "file:../../test-harness",
45
+ "@types/node": "^22",
46
+ "@vitest/coverage-v8": "^4.1.3",
47
+ "msw": "^2.13.2",
48
+ "shx": "^0.3.4",
49
+ "typescript": "^5.8.2",
50
+ "vitest": "^4.1.3"
51
+ },
52
+ "engines": {
53
+ "node": ">=20"
54
+ }
55
+ }
package/server.json ADDED
@@ -0,0 +1,71 @@
1
+ {
2
+ "$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
3
+ "name": "io.github.mindstone/mcp-server-microsoft-mail",
4
+ "title": "Microsoft 365 Mail",
5
+ "description": "Microsoft 365 Outlook Mail MCP server: list, search, read, send, reply, forward, draft, move, and delete email via Microsoft Graph",
6
+ "version": "0.1.0",
7
+ "repository": {
8
+ "url": "https://github.com/mindstone/mcp-servers",
9
+ "source": "github",
10
+ "subfolder": "connectors/microsoft-mail"
11
+ },
12
+ "packages": [
13
+ {
14
+ "registryType": "npm",
15
+ "registryBaseUrl": "https://registry.npmjs.org",
16
+ "identifier": "@mindstone/mcp-server-microsoft-mail",
17
+ "version": "0.1.0",
18
+ "runtimeHint": "npx",
19
+ "transport": {
20
+ "type": "stdio"
21
+ },
22
+ "environmentVariables": [
23
+ {
24
+ "name": "MS_CLIENT_ID",
25
+ "description": "Microsoft Entra (Azure AD) application client ID",
26
+ "isRequired": true,
27
+ "isSecret": false,
28
+ "format": "string"
29
+ },
30
+ {
31
+ "name": "MS_CONFIG_DIR",
32
+ "description": "Path to the per-user Microsoft config directory (credentials/, accounts.json)",
33
+ "isRequired": true,
34
+ "isSecret": false,
35
+ "format": "filepath"
36
+ },
37
+ {
38
+ "name": "MS_ACCOUNT_EMAIL",
39
+ "description": "Account email when running in multi-account per-instance mode (falls back to the first account in accounts.json)",
40
+ "isRequired": false,
41
+ "isSecret": false,
42
+ "format": "string"
43
+ },
44
+ {
45
+ "name": "MS_MCP_PACKAGE_ID",
46
+ "description": "Logical package ID surfaced in error responses",
47
+ "isRequired": false,
48
+ "isSecret": false,
49
+ "default": "Microsoft365Mail",
50
+ "format": "string"
51
+ },
52
+ {
53
+ "name": "MICROSOFT_REQUEST_TIMEOUT_MS",
54
+ "description": "Override the upstream Microsoft Graph request timeout in milliseconds (max 300000 = 5 min)",
55
+ "isRequired": false,
56
+ "isSecret": false,
57
+ "default": "60000",
58
+ "format": "number"
59
+ }
60
+ ]
61
+ }
62
+ ],
63
+ "_meta": {
64
+ "io.modelcontextprotocol.registry/publisher-provided": {
65
+ "com.mindstone.rebel": {
66
+ "catalogId": "bundled-microsoft-mail",
67
+ "provider": "rebel-oss"
68
+ }
69
+ }
70
+ }
71
+ }