@softeria/ms-365-mcp-server 0.1.11 → 0.2.2

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
@@ -7,6 +7,12 @@ A Model Context Protocol (MCP) server for interacting with Microsoft 365 service
7
7
  [![Build Status](https://github.com/softeria-eu/ms-365-mcp-server/actions/workflows/build.yml/badge.svg)](https://github.com/softeria-eu/ms-365-mcp-server/actions/workflows/build.yml)
8
8
  [![npm version](https://img.shields.io/npm/v/@softeria/ms-365-mcp-server.svg)](https://www.npmjs.com/package/@softeria/ms-365-mcp-server)
9
9
 
10
+ ## Quick Start Example
11
+
12
+ Login and test authentication in Claude Desktop:
13
+
14
+ ![MS 365 MCP Server login example in Claude Desktop](https://github.com/user-attachments/assets/936d16bc-b3e1-437b-b3f1-03c54874a816)
15
+
10
16
  ## Features
11
17
 
12
18
  - Authentication using Microsoft Authentication Library (MSAL)
@@ -28,14 +34,6 @@ npx @softeria/ms-365-mcp-server
28
34
 
29
35
  ## Integration with Claude
30
36
 
31
- ### Claude Code CLI
32
-
33
- To add this MCP server to Claude Code CLI:
34
-
35
- ```bash
36
- claude mcp add ms -- npx @softeria/ms-365-mcp-server
37
- ```
38
-
39
37
  ### Claude Desktop
40
38
 
41
39
  To add this MCP server to Claude Desktop:
@@ -48,17 +46,32 @@ To add this MCP server to Claude Desktop:
48
46
  - Command: `npx @softeria/ms-365-mcp-server`
49
47
  - Click "Add"
50
48
 
51
- ### Direct Configuration
52
-
53
- You can also use this configuration JSON in compatible Claude interfaces:
49
+ Alternatively, you can edit Claude Desktop's configuration file directly. The location varies by platform, but you can
50
+ find it by going to Settings > Developer > Edit Config. Add this to your configuration file:
54
51
 
55
52
  ```json
56
53
  {
57
- "name": "ms",
58
- "command": "npx @softeria/ms-365-mcp-server"
54
+ "mcpServers": {
55
+ "ms": {
56
+ "command": "npx",
57
+ "args": [
58
+ "-y",
59
+ "@softeria/ms-365-mcp-server"
60
+ ]
61
+ }
62
+ }
59
63
  }
60
64
  ```
61
65
 
66
+ ### Using Claude Code CLI
67
+
68
+ Claude Code CLI integration is available but configuration methods may vary based on the current version. Please refer
69
+ to the [official Claude Code documentation](https://github.com/anthropics/claude-code) for the most up-to-date
70
+ instructions on adding MCP servers.
71
+
72
+ For other Claude interfaces that support MCPs, please refer to their respective documentation for the correct
73
+ integration method.
74
+
62
75
  ## Development
63
76
 
64
77
  ### Setup
@@ -88,17 +101,24 @@ This repository uses GitHub Actions for continuous integration and deployment:
88
101
  To create a new release:
89
102
 
90
103
  ```bash
104
+ # Default (patch version): 0.1.11 -> 0.1.12
91
105
  npm run release
106
+
107
+ # Minor version: 0.1.11 -> 0.2.0
108
+ npm run release minor
109
+
110
+ # Major version: 0.1.11 -> 1.0.0
111
+ npm run release major
92
112
  ```
93
113
 
94
114
  This script will:
95
115
 
96
116
  1. Run tests to verify everything works
97
- 2. Bump the version number
117
+ 2. Bump the version number according to the specified type (patch by default)
98
118
  3. Commit the version changes
99
119
  4. Push to GitHub
100
120
  5. Create a GitHub release
101
- 6. Trigger the publish workflow to publish to npm
121
+ 6. Trigger the publishing workflow to publish to npm
102
122
 
103
123
  ## Usage
104
124
 
@@ -160,12 +180,34 @@ Authentication tokens are cached securely in your system's credential store with
160
180
 
161
181
  ### MCP Tools
162
182
 
163
- This server provides several MCP tools for interacting with Excel files:
183
+ This server provides several MCP tools for interacting with Microsoft 365 services:
184
+
185
+ #### Authentication Tools
164
186
 
165
187
  - `login`: Start a new login process with Microsoft (returns login URL and code)
166
188
  - `verify-login`: Check if login was completed successfully and verify Graph API access
167
189
  - `logout`: Log out of Microsoft and clear credentials
168
190
  - `test-login`: Test current authentication status and verify Graph API access
191
+
192
+ #### Files/OneDrive Tools
193
+
194
+ - `list-files`: List files and folders in a specified path
195
+ - `get-file`: Get details of a specific file
196
+ - `create-folder`: Create a new folder
197
+ - `delete-item`: Delete a file or folder
198
+ - `copy-item`: Copy a file or folder to a new location
199
+ - `move-item`: Move a file or folder to a new location
200
+ - `rename-item`: Rename a file or folder
201
+ - `search-files`: Search for files matching a query
202
+ - `get-shared-items`: Get a list of items shared with you
203
+ - `create-sharing-link`: Create a sharing link for a file or folder
204
+ - `get-file-content`: Get the content of a file
205
+
206
+ #### Excel Tools
207
+
208
+ All Excel tools require a `filePath` parameter to specify which Excel file to operate on. You can use the Files tools to
209
+ find and manage your Excel files.
210
+
169
211
  - `update-excel`: Update cell values in an Excel worksheet
170
212
  - `create-chart`: Create a chart in an Excel worksheet
171
213
  - `format-range`: Apply formatting to a range of cells
@@ -173,6 +215,43 @@ This server provides several MCP tools for interacting with Excel files:
173
215
  - `create-table`: Create a table from a range of cells
174
216
  - `get-range`: Get values from a range of cells
175
217
  - `list-worksheets`: List all worksheets in the workbook
176
- - `close-session`: Close the current Excel session
218
+ - `close-session`: Close the session for a specific Excel file
219
+ - `close-all-sessions`: Close all active Excel sessions
177
220
  - `delete-chart`: Delete a chart from a worksheet
178
221
  - `get-charts`: Get all charts in a worksheet
222
+
223
+ Example workflow:
224
+
225
+ 1. Use `list-files` to find Excel files in your OneDrive
226
+ 2. Use `list-worksheets` with the file path to see available worksheets
227
+ 3. Use `get-range` to retrieve data from the Excel file
228
+ 4. Use other Excel tools to manipulate the file as needed
229
+
230
+ #### Calendar Tools
231
+
232
+ Tools for working with Outlook calendars.
233
+
234
+ - `list-calendars`: List all calendars
235
+ - `get-default-calendar`: Get information about the default calendar
236
+ - `list-events`: List events from a calendar with optional filtering, sorting, and date ranges
237
+ - `get-detailed-events`: Get events with expanded properties and options to include body, attendees, extensions, etc.
238
+ - `get-event`: Get detailed information about a specific calendar event
239
+ - `create-event`: Create a new calendar event with comprehensive options (sensitivity, importance, free/busy status,
240
+ optional attendees, reminders, online meetings, categories)
241
+ - `create-recurring-event`: Create recurring events (daily, weekly, monthly, yearly) with the same comprehensive options
242
+ and flexible recurrence patterns
243
+ - `update-event`: Update an existing calendar event
244
+ - `delete-event`: Delete a calendar event
245
+ - `accept-event`: Accept a calendar meeting invitation
246
+ - `decline-event`: Decline a calendar meeting invitation
247
+ - `tentatively-accept-event`: Tentatively accept a calendar meeting invitation
248
+ - `find-meeting-times`: Find available meeting times for a set of attendees
249
+ - `get-schedules`: Get availability information for multiple users or resource rooms
250
+
251
+ #### Mail Tools
252
+
253
+ Tools for working with Outlook email.
254
+
255
+ - `list-messages`: List emails from any mail folder with powerful filtering, searching, and sorting options
256
+ - `get-message`: Get detailed information about a specific email message with options to include attachments and other
257
+ metadata
package/bin/release.mjs CHANGED
@@ -3,6 +3,43 @@
3
3
  import { execSync } from 'child_process';
4
4
  import fs from 'fs';
5
5
 
6
+ try {
7
+ const currentBranch = execSync('git rev-parse --abbrev-ref HEAD').toString().trim();
8
+ if (currentBranch !== 'main') {
9
+ console.error(
10
+ `Error: You must be on the 'main' branch to create a release. Current branch: ${currentBranch}`
11
+ );
12
+ process.exit(1);
13
+ }
14
+ } catch (error) {
15
+ console.error('Failed to determine current git branch:', error.message);
16
+ process.exit(1);
17
+ }
18
+
19
+ try {
20
+ const changes = execSync('git status --porcelain').toString();
21
+ if (changes.length > 0) {
22
+ console.error(
23
+ 'Error: You have uncommitted changes. Please commit or stash them before creating a release.'
24
+ );
25
+ console.error(changes);
26
+ process.exit(1);
27
+ }
28
+ } catch (error) {
29
+ console.error('Failed to check git status:', error.message);
30
+ process.exit(1);
31
+ }
32
+
33
+ const args = process.argv.slice(2);
34
+ const releaseType = args[0] || 'patch';
35
+
36
+ if (!['major', 'minor', 'patch'].includes(releaseType)) {
37
+ console.error('Invalid release type. Must be one of: major, minor, patch');
38
+ process.exit(1);
39
+ }
40
+
41
+ console.log(`Release type: ${releaseType}`);
42
+
6
43
  console.log('Running tests...');
7
44
  try {
8
45
  execSync('npm test', { stdio: 'inherit' });
@@ -11,8 +48,8 @@ try {
11
48
  process.exit(1);
12
49
  }
13
50
 
14
- console.log('Bumping version...');
15
- execSync('npm version --no-git-tag-version patch');
51
+ console.log(`Bumping ${releaseType} version...`);
52
+ execSync(`npm version --no-git-tag-version ${releaseType}`);
16
53
 
17
54
  const packageJson = JSON.parse(fs.readFileSync('./package.json', 'utf8'));
18
55
  const version = packageJson.version;