@floriscornel/teams-mcp 0.7.0 → 0.8.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.
Files changed (46) hide show
  1. package/README.md +91 -24
  2. package/dist/index.js +77 -32
  3. package/dist/index.js.map +1 -1
  4. package/dist/services/graph.d.ts +10 -0
  5. package/dist/services/graph.d.ts.map +1 -1
  6. package/dist/services/graph.js +24 -5
  7. package/dist/services/graph.js.map +1 -1
  8. package/dist/tools/auth.d.ts +1 -1
  9. package/dist/tools/auth.d.ts.map +1 -1
  10. package/dist/tools/auth.js +1 -1
  11. package/dist/tools/auth.js.map +1 -1
  12. package/dist/tools/chats.d.ts +2 -1
  13. package/dist/tools/chats.d.ts.map +1 -1
  14. package/dist/tools/chats.js +197 -2
  15. package/dist/tools/chats.js.map +1 -1
  16. package/dist/tools/search.d.ts +1 -1
  17. package/dist/tools/search.d.ts.map +1 -1
  18. package/dist/tools/search.js +1 -1
  19. package/dist/tools/search.js.map +1 -1
  20. package/dist/tools/teams.d.ts +1 -1
  21. package/dist/tools/teams.d.ts.map +1 -1
  22. package/dist/tools/teams.js +557 -460
  23. package/dist/tools/teams.js.map +1 -1
  24. package/dist/tools/users.d.ts +1 -1
  25. package/dist/tools/users.d.ts.map +1 -1
  26. package/dist/tools/users.js +1 -1
  27. package/dist/tools/users.js.map +1 -1
  28. package/dist/types/graph.d.ts +10 -2
  29. package/dist/types/graph.d.ts.map +1 -1
  30. package/dist/utils/attachments.d.ts +7 -0
  31. package/dist/utils/attachments.d.ts.map +1 -1
  32. package/dist/utils/attachments.js +22 -0
  33. package/dist/utils/attachments.js.map +1 -1
  34. package/dist/utils/content-type.d.ts +6 -0
  35. package/dist/utils/content-type.d.ts.map +1 -0
  36. package/dist/utils/content-type.js +43 -0
  37. package/dist/utils/content-type.js.map +1 -0
  38. package/dist/utils/file-upload.d.ts +51 -0
  39. package/dist/utils/file-upload.d.ts.map +1 -0
  40. package/dist/utils/file-upload.js +227 -0
  41. package/dist/utils/file-upload.js.map +1 -0
  42. package/dist/utils/html-to-markdown.d.ts +5 -2
  43. package/dist/utils/html-to-markdown.d.ts.map +1 -1
  44. package/dist/utils/html-to-markdown.js +92 -7
  45. package/dist/utils/html-to-markdown.js.map +1 -1
  46. package/package.json +2 -2
package/README.md CHANGED
@@ -75,6 +75,10 @@ To use this MCP server in Cursor/Claude/VS Code, add the following configuration
75
75
  - **Hosted Content**
76
76
  - Download hosted content (images, files) from chat and channel messages
77
77
  - Access inline images and attachments shared in conversations
78
+ - **File Upload**
79
+ - Upload and send any file type (PDF, DOCX, XLSX, ZIP, images, etc.) to channels and chats
80
+ - Large file support (>4 MB) via resumable upload sessions
81
+ - Optional message text, custom filename, formatting, and importance levels
78
82
 
79
83
  ### 🔍 Advanced Search & Discovery
80
84
  - **Message Search**
@@ -158,19 +162,23 @@ Use the `contentFormat` parameter to control how message content is returned:
158
162
 
159
163
  ### What Gets Converted
160
164
 
161
- | HTML Element | Markdown Output |
162
- |---|---|
163
- | `<at id="0">Name</at>` (Teams mention) | `@Name` |
164
- | `<strong>text</strong>` | `**text**` |
165
- | `<em>text</em>` | `*text*` |
166
- | `<code>text</code>` | `` `text` `` |
167
- | `<a href="url">text</a>` | `[text](url)` |
168
- | `<ul><li>item</li></ul>` | `- item` |
169
- | `<table>...</table>` | GFM Markdown table |
170
- | `<attachment id="...">` | *(removed)* |
171
- | `<systemEventMessage/>` | *(removed)* |
172
- | `<hr>` | `---` |
173
- | `&nbsp;`, `&amp;`, etc. | Decoded to plain characters |
165
+ | HTML Element | Markdown Output |
166
+ | -------------------------------------- | -------------------------------------------------------- |
167
+ | `<at id="0">Name</at>` (Teams mention) | `@Name` (multi-word names merged using mentions metadata) |
168
+ | `<strong>text</strong>` | `**text**` |
169
+ | `<em>text</em>` | `*text*` |
170
+ | `<code>text</code>` | `` `text` `` |
171
+ | `<a href="url">text</a>` | `[text](url)` |
172
+ | `<ul><li>item</li></ul>` | `- item` |
173
+ | `<table>...</table>` | GFM Markdown table |
174
+ | `<attachment id="...">` | `{attachment:id}` |
175
+ | `<systemEventMessage/>` | *(removed)* |
176
+ | `<hr>` | `---` |
177
+ | `&nbsp;`, `&amp;`, etc. | Decoded to plain characters |
178
+
179
+ ### Attachment Metadata
180
+
181
+ Messages that contain file attachments or inline images include an `attachments` array in the response with metadata for each attachment (id, name, contentType, contentUrl, thumbnailUrl). The inline `{attachment:id}` markers in the markdown content correlate with entries in this array, allowing consumers to identify and download attachments via `download_message_hosted_content` or `download_chat_hosted_content`.
174
182
 
175
183
  ### Example Usage
176
184
 
@@ -213,19 +221,28 @@ npm run auth
213
221
  - Azure App Registration with Microsoft Graph permissions
214
222
 
215
223
  ### Required Microsoft Graph Permissions
224
+
225
+ **Full mode (default):**
216
226
  - `User.Read` - Read user profile
217
227
  - `User.ReadBasic.All` - Read basic user info
218
228
  - `Team.ReadBasic.All` - Read team information
219
229
  - `Channel.ReadBasic.All` - Read channel information
220
230
  - `ChannelMessage.Read.All` - Read channel messages
221
- - `ChannelMessage.Send` - Send channel messages
231
+ - `ChannelMessage.Send` - Send channel messages and replies
222
232
  - `ChannelMessage.ReadWrite` - Edit and delete channel messages
223
- - `Chat.Read` - Read chat messages
224
- - `Chat.ReadWrite` - Create and manage chats (including edit/delete messages)
225
- - `Mail.Read` - Required for Microsoft Search API
226
- - `Calendars.Read` - Required for Microsoft Search API
227
- - `Files.Read.All` - Required for Microsoft Search API
228
- - `Sites.Read.All` - Required for Microsoft Search API
233
+ - `Chat.Read` - Read chat messages (included via read-only scopes)
234
+ - `Chat.ReadWrite` - Create and manage chats, send/edit/delete chat messages (supersedes `Chat.Read`)
235
+ - `TeamMember.Read.All` - Read team members
236
+ - `Files.ReadWrite.All` - Required for file uploads to channels and chats
237
+
238
+ **Read-only mode** (`TEAMS_MCP_READ_ONLY=true`) only these scopes are requested:
239
+ - `User.Read`
240
+ - `User.ReadBasic.All`
241
+ - `Team.ReadBasic.All`
242
+ - `Channel.ReadBasic.All`
243
+ - `ChannelMessage.Read.All`
244
+ - `TeamMember.Read.All`
245
+ - `Chat.Read`
229
246
 
230
247
  ## 🛠️ Usage
231
248
 
@@ -236,13 +253,54 @@ npm run dev
236
253
 
237
254
  # Production mode
238
255
  npm run build && node dist/index.js
256
+
257
+ # Start in read-only mode (disables all write tools)
258
+ TEAMS_MCP_READ_ONLY=true node dist/index.js
259
+ ```
260
+
261
+ ### Read-Only Mode
262
+
263
+ The server supports a read-only mode that disables all write operations (sending messages, creating chats, uploading files, editing/deleting messages) and requests only read-permission scopes from Microsoft Graph.
264
+
265
+ **Enable read-only mode** using either:
266
+ - Environment variable: `TEAMS_MCP_READ_ONLY=true`
267
+ - CLI flag: `--read-only`
268
+
269
+ **Authenticate with reduced scopes:**
270
+ ```bash
271
+ npx @floriscornel/teams-mcp@latest authenticate --read-only
239
272
  ```
240
273
 
274
+ **MCP server configuration (read-only):**
275
+ ```json
276
+ {
277
+ "mcpServers": {
278
+ "teams-mcp": {
279
+ "command": "npx",
280
+ "args": ["-y", "@floriscornel/teams-mcp@latest"],
281
+ "env": {
282
+ "TEAMS_MCP_READ_ONLY": "true"
283
+ }
284
+ }
285
+ }
286
+ }
287
+ ```
288
+
289
+ **Switching modes:** When switching from read-only to full mode, the server detects the scope mismatch and warns you to re-authenticate:
290
+ ```bash
291
+ npx @floriscornel/teams-mcp@latest authenticate
292
+ ```
293
+
294
+ **Read-only tools (15):**
295
+ `auth_status`, `get_current_user`, `search_users`, `get_user`, `list_teams`, `list_channels`, `get_channel_messages`, `get_channel_message_replies`, `list_team_members`, `search_users_for_mentions`, `download_message_hosted_content`, `list_chats`, `get_chat_messages`, `search_messages`, `get_my_mentions`
296
+
297
+ **Write tools disabled in read-only mode (10):**
298
+ `send_channel_message`, `reply_to_channel_message`, `update_channel_message`, `delete_channel_message`, `send_file_to_channel`, `send_chat_message`, `create_chat`, `update_chat_message`, `delete_chat_message`, `send_file_to_chat`
299
+
241
300
  ### Available MCP Tools
242
301
 
243
302
  #### Authentication
244
- - `authenticate` - Initiate OAuth authentication flow
245
- - `logout` - Clear authentication tokens
303
+ - `auth_status` - Check current authentication status
246
304
  - `get_current_user` - Get authenticated user information
247
305
 
248
306
  #### User Operations
@@ -253,10 +311,14 @@ npm run build && node dist/index.js
253
311
  - `list_teams` - List user's joined teams
254
312
  - `list_channels` - List channels in a specific team
255
313
  - `get_channel_messages` - Retrieve messages from a team channel with pagination and filtering
314
+ - `get_channel_message_replies` - Get replies to a specific channel message
256
315
  - `send_channel_message` - Send a message to a team channel
316
+ - `reply_to_channel_message` - Reply to an existing channel message
257
317
  - `update_channel_message` - Edit a previously sent channel message
258
318
  - `delete_channel_message` - Soft delete a channel message (supports replies)
259
319
  - `list_team_members` - List members of a specific team
320
+ - `search_users_for_mentions` - Search for team members to @mention in messages
321
+ - `send_file_to_channel` - Upload a local file and send it as a message to a channel
260
322
 
261
323
  #### Chat Operations
262
324
  - `list_chats` - List user's chats (1:1 and group)
@@ -265,13 +327,14 @@ npm run build && node dist/index.js
265
327
  - `create_chat` - Create a new 1:1 or group chat
266
328
  - `update_chat_message` - Edit a previously sent chat message
267
329
  - `delete_chat_message` - Soft delete a chat message
330
+ - `send_file_to_chat` - Upload a local file and send it as a message to a chat
268
331
 
269
332
  #### Media Operations
270
- - `download_message_hosted_content` - Download hosted content (images, files) from messages
333
+ - `download_message_hosted_content` - Download hosted content (images, files) from channel messages
334
+ - `download_chat_hosted_content` - Download hosted content (images, files) from chat messages
271
335
 
272
336
  #### Search Operations
273
337
  - `search_messages` - Search across all Teams messages using KQL syntax
274
- - `get_recent_messages` - Get recent messages with advanced filtering options
275
338
  - `get_my_mentions` - Find messages mentioning the current user
276
339
 
277
340
  ## 📋 Examples
@@ -281,7 +344,11 @@ npm run build && node dist/index.js
281
344
  First, authenticate with Microsoft Graph:
282
345
 
283
346
  ```bash
347
+ # Full access (default)
284
348
  npx @floriscornel/teams-mcp@latest authenticate
349
+
350
+ # Read-only (reduced permission scopes)
351
+ npx @floriscornel/teams-mcp@latest authenticate --read-only
285
352
  ```
286
353
 
287
354
  Check your authentication status:
package/dist/index.js CHANGED
@@ -6,7 +6,7 @@ import { PublicClientApplication, } from "@azure/msal-node";
6
6
  import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
7
7
  import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
8
8
  import { cachePlugin } from "./msal-cache.js";
9
- import { GraphService } from "./services/graph.js";
9
+ import { FULL_SCOPES, GraphService, READ_ONLY_SCOPES } from "./services/graph.js";
10
10
  import { registerAuthTools } from "./tools/auth.js";
11
11
  import { registerChatTools } from "./tools/chats.js";
12
12
  import { registerSearchTools } from "./tools/search.js";
@@ -16,23 +16,27 @@ import { registerUsersTools } from "./tools/users.js";
16
16
  const CLIENT_ID = "14d82eec-204b-4c2f-b7e8-296a70dab67e";
17
17
  const AUTHORITY = "https://login.microsoftonline.com/common";
18
18
  const AUTH_INFO_PATH = join(homedir(), ".msgraph-mcp-auth.json");
19
- // Scopes for delegated (user) authentication
20
- const DELEGATED_SCOPES = [
21
- "User.Read",
22
- "User.ReadBasic.All",
23
- "Team.ReadBasic.All",
24
- "Channel.ReadBasic.All",
25
- "ChannelMessage.Read.All",
26
- "ChannelMessage.Send",
27
- "TeamMember.Read.All",
28
- "Chat.ReadBasic",
29
- "Chat.ReadWrite",
30
- ];
19
+ /** Check whether CLI args contain --read-only. */
20
+ function hasReadOnlyFlag(args) {
21
+ return args.includes("--read-only");
22
+ }
23
+ /** Read the persisted auth info file (best-effort). */
24
+ async function readAuthInfo() {
25
+ try {
26
+ const data = await fs.readFile(AUTH_INFO_PATH, "utf8");
27
+ return JSON.parse(data);
28
+ }
29
+ catch {
30
+ return undefined;
31
+ }
32
+ }
31
33
  // Authentication functions
32
- async function authenticate() {
34
+ async function authenticate(readOnly) {
35
+ const scopes = readOnly ? READ_ONLY_SCOPES : FULL_SCOPES;
36
+ const modeLabel = readOnly ? "read-only" : "full access";
33
37
  console.log("🔐 Microsoft Graph Authentication for MCP Server");
34
38
  console.log("=".repeat(50));
35
- console.log("Using Microsoft Graph CLI app");
39
+ console.log(`Using Microsoft Graph CLI app (${modeLabel})`);
36
40
  try {
37
41
  console.log("\n📱 Using device code flow...");
38
42
  const msalConfig = {
@@ -46,7 +50,7 @@ async function authenticate() {
46
50
  };
47
51
  const client = new PublicClientApplication(msalConfig);
48
52
  const result = await client.acquireTokenByDeviceCode({
49
- scopes: DELEGATED_SCOPES,
53
+ scopes,
50
54
  deviceCodeCallback: (response) => {
51
55
  console.log("\n📱 Please complete authentication:");
52
56
  console.log(`🌐 Visit: ${response.verificationUri}`);
@@ -62,10 +66,12 @@ async function authenticate() {
62
66
  timestamp: new Date().toISOString(),
63
67
  expiresAt: result.expiresOn?.toISOString(),
64
68
  account: result.account?.username,
69
+ grantedScopes: result.scopes,
65
70
  };
66
71
  await fs.writeFile(AUTH_INFO_PATH, JSON.stringify(authInfo, null, 2));
67
72
  console.log("\n✅ Authentication successful!");
68
73
  console.log(`👤 Signed in as: ${result.account?.username || "Unknown"}`);
74
+ console.log(`🔒 Mode: ${modeLabel}`);
69
75
  console.log(`💾 Credentials saved to: ${AUTH_INFO_PATH}`);
70
76
  console.log("🔄 Refresh token cached for automatic renewal");
71
77
  console.log("\n🚀 You can now use the MCP server in Cursor!");
@@ -96,6 +102,18 @@ async function checkAuth() {
96
102
  console.log("✅ Authentication found");
97
103
  console.log(`👤 Account: ${authInfo.account || "Unknown"}`);
98
104
  console.log(`📅 Authenticated on: ${authInfo.timestamp}`);
105
+ // Show granted scope mode
106
+ const grantedScopes = authInfo.grantedScopes;
107
+ if (grantedScopes) {
108
+ const hasWriteScopes = grantedScopes.some((s) => s === "ChannelMessage.Send" ||
109
+ s === "ChannelMessage.ReadWrite" ||
110
+ s === "Chat.ReadWrite" ||
111
+ s === "Files.ReadWrite.All");
112
+ console.log(`🔒 Scope mode: ${hasWriteScopes ? "full access" : "read-only"}`);
113
+ }
114
+ else {
115
+ console.log("⚠️ Scope mode: unknown (authenticated before read-only support)");
116
+ }
99
117
  // Check if we have expiration info
100
118
  if (authInfo.expiresAt) {
101
119
  const expiresAt = new Date(authInfo.expiresAt);
@@ -140,34 +158,56 @@ async function logout() {
140
158
  console.log("🔄 Run 'npx @floriscornel/teams-mcp@latest authenticate' to re-authenticate");
141
159
  }
142
160
  // MCP Server setup
143
- async function startMcpServer() {
161
+ async function startMcpServer(readOnly) {
144
162
  // Create MCP server
145
163
  const server = new McpServer({
146
164
  name: "teams-mcp",
147
- version: "0.7.0",
165
+ version: "0.8.0",
148
166
  });
149
167
  // Initialize Graph service (singleton)
150
168
  const graphService = GraphService.getInstance();
151
- // Register all tools
152
- registerAuthTools(server, graphService);
153
- registerUsersTools(server, graphService);
154
- registerTeamsTools(server, graphService);
155
- registerChatTools(server, graphService);
156
- registerSearchTools(server, graphService);
169
+ graphService.readOnlyMode = readOnly;
170
+ // Detect scope mismatch: warn when switching from read-only → full mode
171
+ if (!readOnly && !process.env.AUTH_TOKEN) {
172
+ const authInfo = await readAuthInfo();
173
+ if (authInfo) {
174
+ const grantedScopes = authInfo.grantedScopes;
175
+ const hasWriteScopes = grantedScopes?.some((s) => s === "ChannelMessage.Send" ||
176
+ s === "ChannelMessage.ReadWrite" ||
177
+ s === "Chat.ReadWrite" ||
178
+ s === "Files.ReadWrite.All");
179
+ if (grantedScopes && !hasWriteScopes) {
180
+ console.error("⚠️ Warning: You authenticated with read-only scopes but the server is running in full mode.");
181
+ console.error(" Write operations may fail. Re-authenticate without --read-only:");
182
+ console.error(" npx @floriscornel/teams-mcp@latest authenticate");
183
+ }
184
+ else if (!grantedScopes) {
185
+ console.error("⚠️ Warning: Could not determine granted scopes. If you experience permission errors,");
186
+ console.error(" re-authenticate: npx @floriscornel/teams-mcp@latest authenticate");
187
+ }
188
+ }
189
+ }
190
+ // Register all tools (write tools are skipped when readOnly is true)
191
+ registerAuthTools(server, graphService, readOnly);
192
+ registerUsersTools(server, graphService, readOnly);
193
+ registerTeamsTools(server, graphService, readOnly);
194
+ registerChatTools(server, graphService, readOnly);
195
+ registerSearchTools(server, graphService, readOnly);
157
196
  // Start server
158
197
  const transport = new StdioServerTransport();
159
198
  await server.connect(transport);
160
- console.error("Microsoft Graph MCP Server started");
199
+ console.error(`Microsoft Graph MCP Server started${readOnly ? " (read-only mode)" : ""}`);
161
200
  }
162
201
  // Main function to handle both CLI and MCP server modes
163
202
  async function main() {
164
203
  const args = process.argv.slice(2);
165
- const command = args[0];
204
+ const command = args.find((arg) => arg !== "--read-only");
205
+ const readOnly = hasReadOnlyFlag(args) || process.env.TEAMS_MCP_READ_ONLY === "true";
166
206
  // CLI commands
167
207
  switch (command) {
168
208
  case "authenticate":
169
209
  case "auth":
170
- await authenticate();
210
+ await authenticate(readOnly);
171
211
  return;
172
212
  case "check":
173
213
  await checkAuth();
@@ -181,14 +221,19 @@ async function main() {
181
221
  console.log("Microsoft Graph MCP Server");
182
222
  console.log("");
183
223
  console.log("Usage:");
184
- console.log(" npx @floriscornel/teams-mcp@latest authenticate # Authenticate with Microsoft");
185
- console.log(" npx @floriscornel/teams-mcp@latest check # Check authentication status");
186
- console.log(" npx @floriscornel/teams-mcp@latest logout # Clear authentication");
187
- console.log(" npx @floriscornel/teams-mcp@latest # Start MCP server (default)");
224
+ console.log(" npx @floriscornel/teams-mcp@latest authenticate # Authenticate with full scopes");
225
+ console.log(" npx @floriscornel/teams-mcp@latest authenticate --read-only # Authenticate with read-only scopes");
226
+ console.log(" npx @floriscornel/teams-mcp@latest check # Check authentication status");
227
+ console.log(" npx @floriscornel/teams-mcp@latest logout # Clear authentication");
228
+ console.log(" npx @floriscornel/teams-mcp@latest # Start MCP server (default)");
229
+ console.log("");
230
+ console.log("Environment variables:");
231
+ console.log(" TEAMS_MCP_READ_ONLY=true # Start MCP server in read-only mode");
232
+ console.log(" AUTH_TOKEN=<jwt> # Use a pre-existing access token");
188
233
  return;
189
234
  case undefined:
190
235
  // No command = start MCP server
191
- await startMcpServer();
236
+ await startMcpServer(readOnly);
192
237
  return;
193
238
  default:
194
239
  console.error(`Unknown command: ${command}`);
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,8 @@
1
1
  import { Client } from "@microsoft/microsoft-graph-client";
2
+ /** Scopes sufficient for read-only operations (no message sending, no file uploads). */
3
+ export declare const READ_ONLY_SCOPES: string[];
4
+ /** Full scopes including write operations. */
5
+ export declare const FULL_SCOPES: string[];
2
6
  export interface AuthStatus {
3
7
  isAuthenticated: boolean;
4
8
  userPrincipalName?: string | undefined;
@@ -12,7 +16,13 @@ export declare class GraphService {
12
16
  private tokenExpiresAt;
13
17
  private msalApp;
14
18
  private msalAccount;
19
+ private _readOnlyMode;
15
20
  static getInstance(): GraphService;
21
+ /** Whether the service operates in read-only mode (reduced permission scopes). */
22
+ get readOnlyMode(): boolean;
23
+ set readOnlyMode(value: boolean);
24
+ /** Returns the scopes to request based on the current mode. */
25
+ get scopes(): string[];
16
26
  private initializeClient;
17
27
  private acquireToken;
18
28
  getAuthStatus(): Promise<AuthStatus>;
@@ -1 +1 @@
1
- {"version":3,"file":"graph.d.ts","sourceRoot":"","sources":["../../src/services/graph.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,mCAAmC,CAAC;AAkB3D,MAAM,WAAW,UAAU;IACzB,eAAe,EAAE,OAAO,CAAC;IACzB,iBAAiB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACvC,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACjC,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAChC;AAED,qBAAa,YAAY;IACvB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAe;IACtC,OAAO,CAAC,MAAM,CAAqB;IACnC,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,cAAc,CAAmB;IACzC,OAAO,CAAC,OAAO,CAAsC;IACrD,OAAO,CAAC,WAAW,CAA0B;IAE7C,MAAM,CAAC,WAAW,IAAI,YAAY;YAOpB,gBAAgB;YA8DhB,YAAY;IAoBpB,aAAa,IAAI,OAAO,CAAC,UAAU,CAAC;IAqBpC,SAAS,IAAI,OAAO,CAAC,MAAM,CAAC;IAWlC,eAAe,IAAI,OAAO;IAI1B,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;CAqBjD"}
1
+ {"version":3,"file":"graph.d.ts","sourceRoot":"","sources":["../../src/services/graph.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,mCAAmC,CAAC;AAM3D,wFAAwF;AACxF,eAAO,MAAM,gBAAgB,UAQ5B,CAAC;AAEF,8CAA8C;AAC9C,eAAO,MAAM,WAAW,UAMvB,CAAC;AAEF,MAAM,WAAW,UAAU;IACzB,eAAe,EAAE,OAAO,CAAC;IACzB,iBAAiB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACvC,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACjC,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAChC;AAED,qBAAa,YAAY;IACvB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAe;IACtC,OAAO,CAAC,MAAM,CAAqB;IACnC,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,cAAc,CAAmB;IACzC,OAAO,CAAC,OAAO,CAAsC;IACrD,OAAO,CAAC,WAAW,CAA0B;IAC7C,OAAO,CAAC,aAAa,CAAS;IAE9B,MAAM,CAAC,WAAW,IAAI,YAAY;IAOlC,kFAAkF;IAClF,IAAI,YAAY,IAAI,OAAO,CAE1B;IAED,IAAI,YAAY,CAAC,KAAK,EAAE,OAAO,EAE9B;IAED,+DAA+D;IAC/D,IAAI,MAAM,IAAI,MAAM,EAAE,CAErB;YAEa,gBAAgB;YA8DhB,YAAY;IAoBpB,aAAa,IAAI,OAAO,CAAC,UAAU,CAAC;IAqBpC,SAAS,IAAI,OAAO,CAAC,MAAM,CAAC;IAWlC,eAAe,IAAI,OAAO;IAI1B,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;CAqBjD"}
@@ -3,16 +3,23 @@ import { Client } from "@microsoft/microsoft-graph-client";
3
3
  import { cachePlugin } from "../msal-cache.js";
4
4
  const CLIENT_ID = "14d82eec-204b-4c2f-b7e8-296a70dab67e";
5
5
  const AUTHORITY = "https://login.microsoftonline.com/common";
6
- const DELEGATED_SCOPES = [
6
+ /** Scopes sufficient for read-only operations (no message sending, no file uploads). */
7
+ export const READ_ONLY_SCOPES = [
7
8
  "User.Read",
8
9
  "User.ReadBasic.All",
9
10
  "Team.ReadBasic.All",
10
11
  "Channel.ReadBasic.All",
11
12
  "ChannelMessage.Read.All",
12
- "ChannelMessage.Send",
13
13
  "TeamMember.Read.All",
14
- "Chat.ReadBasic",
14
+ "Chat.Read",
15
+ ];
16
+ /** Full scopes including write operations. */
17
+ export const FULL_SCOPES = [
18
+ ...READ_ONLY_SCOPES,
19
+ "ChannelMessage.Send",
20
+ "ChannelMessage.ReadWrite",
15
21
  "Chat.ReadWrite",
22
+ "Files.ReadWrite.All",
16
23
  ];
17
24
  export class GraphService {
18
25
  static instance;
@@ -21,12 +28,24 @@ export class GraphService {
21
28
  tokenExpiresAt;
22
29
  msalApp;
23
30
  msalAccount;
31
+ _readOnlyMode = false;
24
32
  static getInstance() {
25
33
  if (!GraphService.instance) {
26
34
  GraphService.instance = new GraphService();
27
35
  }
28
36
  return GraphService.instance;
29
37
  }
38
+ /** Whether the service operates in read-only mode (reduced permission scopes). */
39
+ get readOnlyMode() {
40
+ return this._readOnlyMode;
41
+ }
42
+ set readOnlyMode(value) {
43
+ this._readOnlyMode = value;
44
+ }
45
+ /** Returns the scopes to request based on the current mode. */
46
+ get scopes() {
47
+ return this._readOnlyMode ? READ_ONLY_SCOPES : FULL_SCOPES;
48
+ }
30
49
  async initializeClient() {
31
50
  if (this.isInitialized)
32
51
  return;
@@ -62,7 +81,7 @@ export class GraphService {
62
81
  this.msalAccount = accounts[0];
63
82
  // Verify we can acquire a token
64
83
  const result = await this.msalApp.acquireTokenSilent({
65
- scopes: DELEGATED_SCOPES,
84
+ scopes: this.scopes,
66
85
  account: this.msalAccount,
67
86
  });
68
87
  if (!result) {
@@ -86,7 +105,7 @@ export class GraphService {
86
105
  throw new Error("MSAL not initialized");
87
106
  }
88
107
  const result = await this.msalApp.acquireTokenSilent({
89
- scopes: DELEGATED_SCOPES,
108
+ scopes: this.scopes,
90
109
  account: this.msalAccount,
91
110
  });
92
111
  if (!result) {
@@ -1 +1 @@
1
- {"version":3,"file":"graph.js","sourceRoot":"","sources":["../../src/services/graph.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"graph.js","sourceRoot":"","sources":["../../src/services/graph.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
1
  import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
2
  import type { GraphService } from "../services/graph.js";
3
- export declare function registerAuthTools(server: McpServer, graphService: GraphService): void;
3
+ export declare function registerAuthTools(server: McpServer, graphService: GraphService, _readOnly: boolean): void;
4
4
  //# sourceMappingURL=auth.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/tools/auth.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEzD,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,SAAS,EAAE,YAAY,EAAE,YAAY,QAoB9E"}
1
+ {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/tools/auth.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEzD,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,SAAS,EACjB,YAAY,EAAE,YAAY,EAC1B,SAAS,EAAE,OAAO,QAqBnB"}
@@ -1,4 +1,4 @@
1
- export function registerAuthTools(server, graphService) {
1
+ export function registerAuthTools(server, graphService, _readOnly) {
2
2
  // Authentication status tool
3
3
  server.tool("auth_status", "Check the authentication status of the Microsoft Graph connection. Returns whether the user is authenticated and shows their basic profile information.", {}, async () => {
4
4
  const status = await graphService.getAuthStatus();
@@ -1 +1 @@
1
- {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/tools/auth.ts"],"names":[],"mappings":"AAGA,MAAM,UAAU,iBAAiB,CAAC,MAAiB,EAAE,YAA0B;IAC7E,6BAA6B;IAC7B,MAAM,CAAC,IAAI,CACT,aAAa,EACb,yJAAyJ,EACzJ,EAAE,EACF,KAAK,IAAI,EAAE;QACT,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,aAAa,EAAE,CAAC;QAClD,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,MAAM,CAAC,eAAe;wBAC1B,CAAC,CAAC,sBAAsB,MAAM,CAAC,WAAW,IAAI,cAAc,KAAK,MAAM,CAAC,iBAAiB,IAAI,oBAAoB,GAAG;wBACpH,CAAC,CAAC,kFAAkF;iBACvF;aACF;SACF,CAAC;IACJ,CAAC,CACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/tools/auth.ts"],"names":[],"mappings":"AAGA,MAAM,UAAU,iBAAiB,CAC/B,MAAiB,EACjB,YAA0B,EAC1B,SAAkB;IAElB,6BAA6B;IAC7B,MAAM,CAAC,IAAI,CACT,aAAa,EACb,yJAAyJ,EACzJ,EAAE,EACF,KAAK,IAAI,EAAE;QACT,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,aAAa,EAAE,CAAC;QAClD,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,MAAM,CAAC,eAAe;wBAC1B,CAAC,CAAC,sBAAsB,MAAM,CAAC,WAAW,IAAI,cAAc,KAAK,MAAM,CAAC,iBAAiB,IAAI,oBAAoB,GAAG;wBACpH,CAAC,CAAC,kFAAkF;iBACvF;aACF;SACF,CAAC;IACJ,CAAC,CACF,CAAC;AACJ,CAAC"}
@@ -7,6 +7,7 @@ import type { GraphService } from "../services/graph.js";
7
7
  *
8
8
  * @param server - The MCP server instance to register tools on.
9
9
  * @param graphService - The Microsoft Graph service used for API calls.
10
+ * @param readOnly - When true, skips registration of write tools (send, create, update, delete, file upload).
10
11
  */
11
- export declare function registerChatTools(server: McpServer, graphService: GraphService): void;
12
+ export declare function registerChatTools(server: McpServer, graphService: GraphService, readOnly: boolean): void;
12
13
  //# sourceMappingURL=chats.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"chats.d.ts","sourceRoot":"","sources":["../../src/tools/chats.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEzE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAezD;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,SAAS,EAAE,YAAY,EAAE,YAAY,QAmoB9E"}
1
+ {"version":3,"file":"chats.d.ts","sourceRoot":"","sources":["../../src/tools/chats.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEzE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAuBzD;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,SAAS,EACjB,YAAY,EAAE,YAAY,EAC1B,QAAQ,EAAE,OAAO,QA83BlB"}