@softeria/ms-365-mcp-server 0.153.1 → 0.154.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.
- package/README.md +1 -1
- package/dist/endpoints.json +9 -9
- package/package.json +1 -1
- package/src/endpoints.json +9 -9
package/README.md
CHANGED
|
@@ -154,7 +154,7 @@ SharePoint supports two enterprise permission models:
|
|
|
154
154
|
- Broad tenant scopes such as `Sites.Read.All`, `Sites.ReadWrite.All`, and `Sites.Manage.All`.
|
|
155
155
|
- Microsoft Graph `Sites.Selected`, where SharePoint site access is granted to the app on specific site collections and Graph evaluates the signed-in user's own permissions at request time.
|
|
156
156
|
|
|
157
|
-
The default org-mode behavior continues to request the broad SharePoint scopes used by existing deployments. Enterprises that want selected-site SharePoint access can set an allowlist containing `Sites.Selected` instead of broad `Sites.*.All` scopes. Direct site/list/item tools that target an explicit SharePoint site can run with `Sites.Selected`; tenant-wide SharePoint discovery and search tools still require broad SharePoint scopes.
|
|
157
|
+
The default org-mode behavior continues to request the broad SharePoint scopes used by existing deployments. Enterprises that want selected-site SharePoint access can set an allowlist containing `Sites.Selected` instead of broad `Sites.*.All` scopes. Direct site/list/item tools that target an explicit SharePoint site, and the `/drives/{drive-id}/...` item tools (list, get, upload, folder, move/rename, copy, versions) for drives of a granted site, can run with `Sites.Selected`; tenant-wide SharePoint discovery and search tools still require broad SharePoint scopes.
|
|
158
158
|
|
|
159
159
|
```bash
|
|
160
160
|
npx @softeria/ms-365-mcp-server \
|
package/dist/endpoints.json
CHANGED
|
@@ -621,14 +621,14 @@
|
|
|
621
621
|
"method": "get",
|
|
622
622
|
"toolName": "get-drive-root-item",
|
|
623
623
|
"presets": ["files", "onedrive", "personal"],
|
|
624
|
-
"scopes": ["Files.Read"]
|
|
624
|
+
"scopes": [["Files.Read"], ["Sites.Selected"]]
|
|
625
625
|
},
|
|
626
626
|
{
|
|
627
627
|
"pathPattern": "/drives/{drive-id}/items/{driveItem-id}/children",
|
|
628
628
|
"method": "get",
|
|
629
629
|
"toolName": "list-folder-files",
|
|
630
630
|
"presets": ["files", "onedrive", "personal"],
|
|
631
|
-
"scopes": ["Files.Read"]
|
|
631
|
+
"scopes": [["Files.Read"], ["Sites.Selected"]]
|
|
632
632
|
},
|
|
633
633
|
{
|
|
634
634
|
"pathPattern": "/drives/{drive-id}/items/{driveItem-id}",
|
|
@@ -642,7 +642,7 @@
|
|
|
642
642
|
"method": "put",
|
|
643
643
|
"toolName": "upload-file-content",
|
|
644
644
|
"presets": ["files", "onedrive", "personal"],
|
|
645
|
-
"scopes": ["Files.ReadWrite"],
|
|
645
|
+
"scopes": [["Files.ReadWrite"], ["Sites.Selected"]],
|
|
646
646
|
"llmTip": "Body is a base64-encoded string of the file bytes; the server decodes it before PUT. Graph accepts up to 250MB here, but the whole string travels as a tool argument and a truncated one decodes to a truncated file with no error, so use create-upload-session rather than emitting a large base64 string. For new files use path format: /items/root:/path/to/file.txt:/content. Overwrites existing files without warning."
|
|
647
647
|
},
|
|
648
648
|
{
|
|
@@ -650,7 +650,7 @@
|
|
|
650
650
|
"method": "post",
|
|
651
651
|
"toolName": "create-upload-session",
|
|
652
652
|
"presets": ["files", "onedrive", "personal"],
|
|
653
|
-
"scopes": ["Files.ReadWrite"],
|
|
653
|
+
"scopes": [["Files.ReadWrite"], ["Sites.Selected"]],
|
|
654
654
|
"llmTip": "For large file uploads (no size limit, and no minimum unlike the Outlook attachment session). Returns a pre-authenticated uploadUrl; the caller PUTs the bytes there itself. This server does not perform the PUT. For new files use path: /items/{parentId}:/{fileName}:/createUploadSession. Body (optional): { item: { '@microsoft.graph.conflictBehavior': 'rename' } }."
|
|
655
655
|
},
|
|
656
656
|
{
|
|
@@ -658,7 +658,7 @@
|
|
|
658
658
|
"method": "get",
|
|
659
659
|
"toolName": "get-drive-item",
|
|
660
660
|
"presets": ["files", "onedrive", "personal"],
|
|
661
|
-
"scopes": ["Files.Read"],
|
|
661
|
+
"scopes": [["Files.Read"], ["Sites.Selected"]],
|
|
662
662
|
"llmTip": "Gets metadata for a file or folder: name, size, lastModifiedDateTime, createdBy, webUrl, file (mimeType, hashes), folder (childCount), parentReference, and @microsoft.graph.downloadUrl. For large drive/SharePoint files, call get-download-url with target=/drives/{drive-id}/items/{driveItem-id}/content to fetch out-of-band with no Authorization header. For small files where base64 in the tool response is acceptable, call download-bytes with the same /content target."
|
|
663
663
|
},
|
|
664
664
|
{
|
|
@@ -666,7 +666,7 @@
|
|
|
666
666
|
"method": "patch",
|
|
667
667
|
"toolName": "move-rename-onedrive-item",
|
|
668
668
|
"presets": ["files", "onedrive", "personal"],
|
|
669
|
-
"scopes": ["Files.ReadWrite"],
|
|
669
|
+
"scopes": [["Files.ReadWrite"], ["Sites.Selected"]],
|
|
670
670
|
"llmTip": "Move and/or rename a file or folder. To move, provide parentReference with the target folder's id. To rename, provide a new name. Both can be done in a single request."
|
|
671
671
|
},
|
|
672
672
|
{
|
|
@@ -674,7 +674,7 @@
|
|
|
674
674
|
"method": "post",
|
|
675
675
|
"toolName": "create-onedrive-folder",
|
|
676
676
|
"presets": ["files", "onedrive", "personal"],
|
|
677
|
-
"scopes": ["Files.ReadWrite"],
|
|
677
|
+
"scopes": [["Files.ReadWrite"], ["Sites.Selected"]],
|
|
678
678
|
"llmTip": "Creates a new folder inside the specified drive item. Body must include name (string) and folder ({}) fields. Use @microsoft.graph.conflictBehavior to control behavior on name conflict: 'rename' (default), 'replace', or 'fail'."
|
|
679
679
|
},
|
|
680
680
|
{
|
|
@@ -698,7 +698,7 @@
|
|
|
698
698
|
"method": "post",
|
|
699
699
|
"toolName": "copy-drive-item",
|
|
700
700
|
"presets": ["files", "onedrive", "personal"],
|
|
701
|
-
"scopes": ["Files.ReadWrite"],
|
|
701
|
+
"scopes": [["Files.ReadWrite"], ["Sites.Selected"]],
|
|
702
702
|
"llmTip": "Asynchronously copy a file or folder to a new location and/or name. Body: { parentReference: { driveId: '...', id: '...' }, name?: 'New Name.xlsx' }. Returns 202 Accepted with a Location header pointing at a monitor URL for the async job. Ideal for duplicating templates (e.g. clone an Armhr Census Template per prospect), bulk file provisioning, or preserving an immutable snapshot of a working file."
|
|
703
703
|
},
|
|
704
704
|
{
|
|
@@ -738,7 +738,7 @@
|
|
|
738
738
|
"method": "get",
|
|
739
739
|
"toolName": "list-drive-item-versions",
|
|
740
740
|
"presets": ["files", "onedrive", "personal"],
|
|
741
|
-
"scopes": ["Files.Read"],
|
|
741
|
+
"scopes": [["Files.Read"], ["Sites.Selected"]],
|
|
742
742
|
"llmTip": "Lists version history of a file. Each version has id, lastModifiedDateTime, lastModifiedBy, and size. Use the version id with /versions/{id}/content to download a specific version."
|
|
743
743
|
},
|
|
744
744
|
{
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@softeria/ms-365-mcp-server",
|
|
3
3
|
"mcpName": "io.github.Softeria/ms-365-mcp-server",
|
|
4
|
-
"version": "0.
|
|
4
|
+
"version": "0.154.0",
|
|
5
5
|
"description": " A Model Context Protocol (MCP) server for interacting with Microsoft 365 and Office services through the Graph API",
|
|
6
6
|
"type": "module",
|
|
7
7
|
"main": "dist/index.js",
|
package/src/endpoints.json
CHANGED
|
@@ -621,14 +621,14 @@
|
|
|
621
621
|
"method": "get",
|
|
622
622
|
"toolName": "get-drive-root-item",
|
|
623
623
|
"presets": ["files", "onedrive", "personal"],
|
|
624
|
-
"scopes": ["Files.Read"]
|
|
624
|
+
"scopes": [["Files.Read"], ["Sites.Selected"]]
|
|
625
625
|
},
|
|
626
626
|
{
|
|
627
627
|
"pathPattern": "/drives/{drive-id}/items/{driveItem-id}/children",
|
|
628
628
|
"method": "get",
|
|
629
629
|
"toolName": "list-folder-files",
|
|
630
630
|
"presets": ["files", "onedrive", "personal"],
|
|
631
|
-
"scopes": ["Files.Read"]
|
|
631
|
+
"scopes": [["Files.Read"], ["Sites.Selected"]]
|
|
632
632
|
},
|
|
633
633
|
{
|
|
634
634
|
"pathPattern": "/drives/{drive-id}/items/{driveItem-id}",
|
|
@@ -642,7 +642,7 @@
|
|
|
642
642
|
"method": "put",
|
|
643
643
|
"toolName": "upload-file-content",
|
|
644
644
|
"presets": ["files", "onedrive", "personal"],
|
|
645
|
-
"scopes": ["Files.ReadWrite"],
|
|
645
|
+
"scopes": [["Files.ReadWrite"], ["Sites.Selected"]],
|
|
646
646
|
"llmTip": "Body is a base64-encoded string of the file bytes; the server decodes it before PUT. Graph accepts up to 250MB here, but the whole string travels as a tool argument and a truncated one decodes to a truncated file with no error, so use create-upload-session rather than emitting a large base64 string. For new files use path format: /items/root:/path/to/file.txt:/content. Overwrites existing files without warning."
|
|
647
647
|
},
|
|
648
648
|
{
|
|
@@ -650,7 +650,7 @@
|
|
|
650
650
|
"method": "post",
|
|
651
651
|
"toolName": "create-upload-session",
|
|
652
652
|
"presets": ["files", "onedrive", "personal"],
|
|
653
|
-
"scopes": ["Files.ReadWrite"],
|
|
653
|
+
"scopes": [["Files.ReadWrite"], ["Sites.Selected"]],
|
|
654
654
|
"llmTip": "For large file uploads (no size limit, and no minimum unlike the Outlook attachment session). Returns a pre-authenticated uploadUrl; the caller PUTs the bytes there itself. This server does not perform the PUT. For new files use path: /items/{parentId}:/{fileName}:/createUploadSession. Body (optional): { item: { '@microsoft.graph.conflictBehavior': 'rename' } }."
|
|
655
655
|
},
|
|
656
656
|
{
|
|
@@ -658,7 +658,7 @@
|
|
|
658
658
|
"method": "get",
|
|
659
659
|
"toolName": "get-drive-item",
|
|
660
660
|
"presets": ["files", "onedrive", "personal"],
|
|
661
|
-
"scopes": ["Files.Read"],
|
|
661
|
+
"scopes": [["Files.Read"], ["Sites.Selected"]],
|
|
662
662
|
"llmTip": "Gets metadata for a file or folder: name, size, lastModifiedDateTime, createdBy, webUrl, file (mimeType, hashes), folder (childCount), parentReference, and @microsoft.graph.downloadUrl. For large drive/SharePoint files, call get-download-url with target=/drives/{drive-id}/items/{driveItem-id}/content to fetch out-of-band with no Authorization header. For small files where base64 in the tool response is acceptable, call download-bytes with the same /content target."
|
|
663
663
|
},
|
|
664
664
|
{
|
|
@@ -666,7 +666,7 @@
|
|
|
666
666
|
"method": "patch",
|
|
667
667
|
"toolName": "move-rename-onedrive-item",
|
|
668
668
|
"presets": ["files", "onedrive", "personal"],
|
|
669
|
-
"scopes": ["Files.ReadWrite"],
|
|
669
|
+
"scopes": [["Files.ReadWrite"], ["Sites.Selected"]],
|
|
670
670
|
"llmTip": "Move and/or rename a file or folder. To move, provide parentReference with the target folder's id. To rename, provide a new name. Both can be done in a single request."
|
|
671
671
|
},
|
|
672
672
|
{
|
|
@@ -674,7 +674,7 @@
|
|
|
674
674
|
"method": "post",
|
|
675
675
|
"toolName": "create-onedrive-folder",
|
|
676
676
|
"presets": ["files", "onedrive", "personal"],
|
|
677
|
-
"scopes": ["Files.ReadWrite"],
|
|
677
|
+
"scopes": [["Files.ReadWrite"], ["Sites.Selected"]],
|
|
678
678
|
"llmTip": "Creates a new folder inside the specified drive item. Body must include name (string) and folder ({}) fields. Use @microsoft.graph.conflictBehavior to control behavior on name conflict: 'rename' (default), 'replace', or 'fail'."
|
|
679
679
|
},
|
|
680
680
|
{
|
|
@@ -698,7 +698,7 @@
|
|
|
698
698
|
"method": "post",
|
|
699
699
|
"toolName": "copy-drive-item",
|
|
700
700
|
"presets": ["files", "onedrive", "personal"],
|
|
701
|
-
"scopes": ["Files.ReadWrite"],
|
|
701
|
+
"scopes": [["Files.ReadWrite"], ["Sites.Selected"]],
|
|
702
702
|
"llmTip": "Asynchronously copy a file or folder to a new location and/or name. Body: { parentReference: { driveId: '...', id: '...' }, name?: 'New Name.xlsx' }. Returns 202 Accepted with a Location header pointing at a monitor URL for the async job. Ideal for duplicating templates (e.g. clone an Armhr Census Template per prospect), bulk file provisioning, or preserving an immutable snapshot of a working file."
|
|
703
703
|
},
|
|
704
704
|
{
|
|
@@ -738,7 +738,7 @@
|
|
|
738
738
|
"method": "get",
|
|
739
739
|
"toolName": "list-drive-item-versions",
|
|
740
740
|
"presets": ["files", "onedrive", "personal"],
|
|
741
|
-
"scopes": ["Files.Read"],
|
|
741
|
+
"scopes": [["Files.Read"], ["Sites.Selected"]],
|
|
742
742
|
"llmTip": "Lists version history of a file. Each version has id, lastModifiedDateTime, lastModifiedBy, and size. Use the version id with /versions/{id}/content to download a specific version."
|
|
743
743
|
},
|
|
744
744
|
{
|