@softeria/ms-365-mcp-server 0.94.0 → 0.95.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.
@@ -1408,6 +1408,48 @@
1408
1408
  "workScopes": ["Sites.ReadWrite.All"],
1409
1409
  "llmTip": "Deletes a list item permanently. This cannot be undone — the item is moved to the site recycle bin."
1410
1410
  },
1411
+ {
1412
+ "pathPattern": "/sites/{site-id}/lists",
1413
+ "method": "post",
1414
+ "toolName": "create-sharepoint-list",
1415
+ "workScopes": ["Sites.Manage.All"],
1416
+ "llmTip": "Creates a new SharePoint list in a site. Body: { displayName: 'My List', description: 'Optional', list: { template: 'genericList' }, columns: [ { name: 'Status', text: {} }, { name: 'Due', dateTime: {} } ] }. Templates include genericList, documentLibrary, tasks, calendar, contacts, links, announcements, survey. Columns can be defined inline at creation; otherwise add them later via create-sharepoint-list-column. Use search-sharepoint-sites or get-sharepoint-site-by-path to find the site ID first."
1417
+ },
1418
+ {
1419
+ "pathPattern": "/sites/{site-id}/lists/{list-id}/columns",
1420
+ "method": "get",
1421
+ "toolName": "list-sharepoint-list-columns",
1422
+ "workScopes": ["Sites.Read.All"],
1423
+ "llmTip": "Lists column definitions for a SharePoint list. Returns each column's id, name, displayName, description, type indicator (text, number, choice, dateTime, person, lookup, boolean, calculated, hyperlinkOrPicture, etc.), required, indexed, hidden, readOnly. Use this to discover the schema before creating or updating list items."
1424
+ },
1425
+ {
1426
+ "pathPattern": "/sites/{site-id}/lists/{list-id}/columns",
1427
+ "method": "post",
1428
+ "toolName": "create-sharepoint-list-column",
1429
+ "workScopes": ["Sites.Manage.All"],
1430
+ "llmTip": "Creates a new column on a SharePoint list. Body must include name and exactly one column type property: { name: 'Priority', text: {} } or { name: 'DueDate', dateTime: { format: 'dateOnly' } } or { name: 'Status', choice: { choices: ['Open','In Progress','Done'] } }. Other types: number, boolean, currency, hyperlinkOrPicture, personOrGroup, lookup, calculated. Optional: displayName, description, required, indexed, enforceUniqueValues."
1431
+ },
1432
+ {
1433
+ "pathPattern": "/sites/{site-id}/lists/{list-id}/columns/{columnDefinition-id}",
1434
+ "method": "get",
1435
+ "toolName": "get-sharepoint-list-column",
1436
+ "workScopes": ["Sites.Read.All"],
1437
+ "llmTip": "Gets a specific column definition by ID, including its full type configuration (choices for choice columns, format for dateTime, etc.). Use list-sharepoint-list-columns first to find the column ID."
1438
+ },
1439
+ {
1440
+ "pathPattern": "/sites/{site-id}/lists/{list-id}/columns/{columnDefinition-id}",
1441
+ "method": "patch",
1442
+ "toolName": "update-sharepoint-list-column",
1443
+ "workScopes": ["Sites.Manage.All"],
1444
+ "llmTip": "Updates a column definition. Body: { displayName: 'New name', description: 'New description', required: true, ... }. The column type itself (text, choice, etc.) cannot be changed — only its metadata and per-type options (e.g. choices array for a choice column). Send only the fields you want to change."
1445
+ },
1446
+ {
1447
+ "pathPattern": "/sites/{site-id}/lists/{list-id}/columns/{columnDefinition-id}",
1448
+ "method": "delete",
1449
+ "toolName": "delete-sharepoint-list-column",
1450
+ "workScopes": ["Sites.Manage.All"],
1451
+ "llmTip": "Deletes a column from a SharePoint list. This is irreversible — all data stored in this column across every list item is lost. Confirm with the user before calling. Cannot delete built-in columns (Title, Created, Modified, etc.)."
1452
+ },
1411
1453
  {
1412
1454
  "pathPattern": "/sites/{site-id}/getByPath(path='{path}')",
1413
1455
  "method": "get",
@@ -4289,6 +4289,11 @@ const microsoft_graph_listCollectionResponse = z.object({
4289
4289
  "@odata.nextLink": z.string().nullable(),
4290
4290
  value: z.array(microsoft_graph_list)
4291
4291
  }).partial().passthrough();
4292
+ const microsoft_graph_columnDefinitionCollectionResponse = z.object({
4293
+ "@odata.count": z.number().int().nullable(),
4294
+ "@odata.nextLink": z.string().nullable(),
4295
+ value: z.array(microsoft_graph_columnDefinition)
4296
+ }).partial().passthrough();
4292
4297
  const microsoft_graph_listItemCollectionResponse = z.object({
4293
4298
  "@odata.count": z.number().int().nullable(),
4294
4299
  "@odata.nextLink": z.string().nullable(),
@@ -4933,6 +4938,7 @@ const schemas = {
4933
4938
  microsoft_graph_siteCollectionResponse,
4934
4939
  microsoft_graph_baseItemCollectionResponse,
4935
4940
  microsoft_graph_listCollectionResponse,
4941
+ microsoft_graph_columnDefinitionCollectionResponse,
4936
4942
  microsoft_graph_listItemCollectionResponse,
4937
4943
  microsoft_graph_endpointType,
4938
4944
  microsoft_graph_communicationsIdentitySet,
@@ -11696,6 +11702,22 @@ To list them, include system in your $select statement.`,
11696
11702
  ],
11697
11703
  response: z.void()
11698
11704
  },
11705
+ {
11706
+ method: "post",
11707
+ path: "/sites/:siteId/lists",
11708
+ alias: "create-sharepoint-list",
11709
+ description: `Create a new list in a site.`,
11710
+ requestFormat: "json",
11711
+ parameters: [
11712
+ {
11713
+ name: "body",
11714
+ description: `New navigation property`,
11715
+ type: "Body",
11716
+ schema: microsoft_graph_list
11717
+ }
11718
+ ],
11719
+ response: z.void()
11720
+ },
11699
11721
  {
11700
11722
  method: "get",
11701
11723
  path: "/sites/:siteId/lists/:listId",
@@ -11716,6 +11738,191 @@ To list them, include system in your $select statement.`,
11716
11738
  ],
11717
11739
  response: z.void()
11718
11740
  },
11741
+ {
11742
+ method: "get",
11743
+ path: "/sites/:siteId/lists/:listId/columns",
11744
+ alias: "list-sharepoint-list-columns",
11745
+ description: `Get the collection of columns represented as columnDefinition resources in a list.`,
11746
+ requestFormat: "json",
11747
+ parameters: [
11748
+ {
11749
+ name: "$top",
11750
+ type: "Query",
11751
+ schema: z.number().int().gte(0).describe("Show only the first n items").optional()
11752
+ },
11753
+ {
11754
+ name: "$skip",
11755
+ type: "Query",
11756
+ schema: z.number().int().gte(0).describe("Skip the first n items").optional()
11757
+ },
11758
+ {
11759
+ name: "$search",
11760
+ type: "Query",
11761
+ schema: z.string().describe("Search items by search phrases").optional()
11762
+ },
11763
+ {
11764
+ name: "$filter",
11765
+ type: "Query",
11766
+ schema: z.string().describe("Filter items by property values").optional()
11767
+ },
11768
+ {
11769
+ name: "$count",
11770
+ type: "Query",
11771
+ schema: z.boolean().describe("Include count of items").optional()
11772
+ },
11773
+ {
11774
+ name: "$orderby",
11775
+ type: "Query",
11776
+ schema: z.array(z.string()).describe("Order items by property values").optional()
11777
+ },
11778
+ {
11779
+ name: "$select",
11780
+ type: "Query",
11781
+ schema: z.array(z.string()).describe("Select properties to be returned").optional()
11782
+ },
11783
+ {
11784
+ name: "$expand",
11785
+ type: "Query",
11786
+ schema: z.array(z.string()).describe("Expand related entities").optional()
11787
+ }
11788
+ ],
11789
+ response: z.void()
11790
+ },
11791
+ {
11792
+ method: "post",
11793
+ path: "/sites/:siteId/lists/:listId/columns",
11794
+ alias: "create-sharepoint-list-column",
11795
+ description: `Create a column for a list with a request that specifies a columnDefinition.`,
11796
+ requestFormat: "json",
11797
+ parameters: [
11798
+ {
11799
+ name: "body",
11800
+ description: `New navigation property`,
11801
+ type: "Body",
11802
+ schema: z.object({
11803
+ id: z.string().describe("The unique identifier for an entity. Read-only.").optional(),
11804
+ name: z.string().describe(
11805
+ "The API-facing name of the column as it appears in the fields on a listItem. For the user-facing name, see displayName."
11806
+ ).nullish(),
11807
+ displayName: z.string().describe("The user-facing name of the column.").nullish(),
11808
+ description: z.string().describe("The user-facing description of the column.").nullish(),
11809
+ type: microsoft_graph_columnTypes.optional(),
11810
+ boolean: microsoft_graph_booleanColumn.optional(),
11811
+ calculated: microsoft_graph_calculatedColumn.optional(),
11812
+ choice: microsoft_graph_choiceColumn.optional(),
11813
+ columnGroup: z.string().describe(
11814
+ "For site columns, the name of the group this column belongs to. Helps organize related columns."
11815
+ ).nullish(),
11816
+ contentApprovalStatus: microsoft_graph_contentApprovalStatusColumn.optional(),
11817
+ currency: microsoft_graph_currencyColumn.optional(),
11818
+ dateTime: microsoft_graph_dateTimeColumn.optional(),
11819
+ defaultValue: microsoft_graph_defaultColumnValue.optional(),
11820
+ enforceUniqueValues: z.boolean().describe("If true, no two list items may have the same value for this column.").nullish(),
11821
+ geolocation: microsoft_graph_geolocationColumn.optional(),
11822
+ hidden: z.boolean().describe("Specifies whether the column is displayed in the user interface.").nullish(),
11823
+ hyperlinkOrPicture: microsoft_graph_hyperlinkOrPictureColumn.optional(),
11824
+ indexed: z.boolean().describe(
11825
+ "Specifies whether the column values can be used for sorting and searching."
11826
+ ).nullish(),
11827
+ isDeletable: z.boolean().describe("Indicates whether this column can be deleted.").nullish(),
11828
+ isReorderable: z.boolean().describe("Indicates whether values in the column can be reordered. Read-only.").nullish(),
11829
+ isSealed: z.boolean().describe("Specifies whether the column can be changed.").nullish(),
11830
+ lookup: microsoft_graph_lookupColumn.optional(),
11831
+ number: microsoft_graph_numberColumn.optional(),
11832
+ personOrGroup: microsoft_graph_personOrGroupColumn.optional(),
11833
+ propagateChanges: z.boolean().describe(
11834
+ "If 'true', changes to this column will be propagated to lists that implement the column."
11835
+ ).nullish()
11836
+ }).passthrough().passthrough()
11837
+ }
11838
+ ],
11839
+ response: z.void()
11840
+ },
11841
+ {
11842
+ method: "get",
11843
+ path: "/sites/:siteId/lists/:listId/columns/:columnDefinitionId",
11844
+ alias: "get-sharepoint-list-column",
11845
+ description: `The collection of field definitions for this list.`,
11846
+ requestFormat: "json",
11847
+ parameters: [
11848
+ {
11849
+ name: "$select",
11850
+ type: "Query",
11851
+ schema: z.array(z.string()).describe("Select properties to be returned").optional()
11852
+ },
11853
+ {
11854
+ name: "$expand",
11855
+ type: "Query",
11856
+ schema: z.array(z.string()).describe("Expand related entities").optional()
11857
+ }
11858
+ ],
11859
+ response: z.void()
11860
+ },
11861
+ {
11862
+ method: "patch",
11863
+ path: "/sites/:siteId/lists/:listId/columns/:columnDefinitionId",
11864
+ alias: "update-sharepoint-list-column",
11865
+ description: `Update the navigation property columns in sites`,
11866
+ requestFormat: "json",
11867
+ parameters: [
11868
+ {
11869
+ name: "body",
11870
+ description: `New navigation property values`,
11871
+ type: "Body",
11872
+ schema: z.object({
11873
+ id: z.string().describe("The unique identifier for an entity. Read-only.").optional(),
11874
+ name: z.string().describe(
11875
+ "The API-facing name of the column as it appears in the fields on a listItem. For the user-facing name, see displayName."
11876
+ ).nullish(),
11877
+ displayName: z.string().describe("The user-facing name of the column.").nullish(),
11878
+ description: z.string().describe("The user-facing description of the column.").nullish(),
11879
+ type: microsoft_graph_columnTypes.optional(),
11880
+ boolean: microsoft_graph_booleanColumn.optional(),
11881
+ calculated: microsoft_graph_calculatedColumn.optional(),
11882
+ choice: microsoft_graph_choiceColumn.optional(),
11883
+ columnGroup: z.string().describe(
11884
+ "For site columns, the name of the group this column belongs to. Helps organize related columns."
11885
+ ).nullish(),
11886
+ contentApprovalStatus: microsoft_graph_contentApprovalStatusColumn.optional(),
11887
+ currency: microsoft_graph_currencyColumn.optional(),
11888
+ dateTime: microsoft_graph_dateTimeColumn.optional(),
11889
+ defaultValue: microsoft_graph_defaultColumnValue.optional(),
11890
+ enforceUniqueValues: z.boolean().describe("If true, no two list items may have the same value for this column.").nullish(),
11891
+ geolocation: microsoft_graph_geolocationColumn.optional(),
11892
+ hidden: z.boolean().describe("Specifies whether the column is displayed in the user interface.").nullish(),
11893
+ hyperlinkOrPicture: microsoft_graph_hyperlinkOrPictureColumn.optional(),
11894
+ indexed: z.boolean().describe(
11895
+ "Specifies whether the column values can be used for sorting and searching."
11896
+ ).nullish(),
11897
+ isDeletable: z.boolean().describe("Indicates whether this column can be deleted.").nullish(),
11898
+ isReorderable: z.boolean().describe("Indicates whether values in the column can be reordered. Read-only.").nullish(),
11899
+ isSealed: z.boolean().describe("Specifies whether the column can be changed.").nullish(),
11900
+ lookup: microsoft_graph_lookupColumn.optional(),
11901
+ number: microsoft_graph_numberColumn.optional(),
11902
+ personOrGroup: microsoft_graph_personOrGroupColumn.optional(),
11903
+ propagateChanges: z.boolean().describe(
11904
+ "If 'true', changes to this column will be propagated to lists that implement the column."
11905
+ ).nullish()
11906
+ }).passthrough().passthrough()
11907
+ }
11908
+ ],
11909
+ response: z.void()
11910
+ },
11911
+ {
11912
+ method: "delete",
11913
+ path: "/sites/:siteId/lists/:listId/columns/:columnDefinitionId",
11914
+ alias: "delete-sharepoint-list-column",
11915
+ description: `Delete navigation property columns for sites`,
11916
+ requestFormat: "json",
11917
+ parameters: [
11918
+ {
11919
+ name: "If-Match",
11920
+ type: "Header",
11921
+ schema: z.string().describe("ETag").optional()
11922
+ }
11923
+ ],
11924
+ response: z.void()
11925
+ },
11719
11926
  {
11720
11927
  method: "get",
11721
11928
  path: "/sites/:siteId/lists/:listId/items",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@softeria/ms-365-mcp-server",
3
- "version": "0.94.0",
3
+ "version": "0.95.0",
4
4
  "description": " A Model Context Protocol (MCP) server for interacting with Microsoft 365 and Office services through the Graph API",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -1408,6 +1408,48 @@
1408
1408
  "workScopes": ["Sites.ReadWrite.All"],
1409
1409
  "llmTip": "Deletes a list item permanently. This cannot be undone — the item is moved to the site recycle bin."
1410
1410
  },
1411
+ {
1412
+ "pathPattern": "/sites/{site-id}/lists",
1413
+ "method": "post",
1414
+ "toolName": "create-sharepoint-list",
1415
+ "workScopes": ["Sites.Manage.All"],
1416
+ "llmTip": "Creates a new SharePoint list in a site. Body: { displayName: 'My List', description: 'Optional', list: { template: 'genericList' }, columns: [ { name: 'Status', text: {} }, { name: 'Due', dateTime: {} } ] }. Templates include genericList, documentLibrary, tasks, calendar, contacts, links, announcements, survey. Columns can be defined inline at creation; otherwise add them later via create-sharepoint-list-column. Use search-sharepoint-sites or get-sharepoint-site-by-path to find the site ID first."
1417
+ },
1418
+ {
1419
+ "pathPattern": "/sites/{site-id}/lists/{list-id}/columns",
1420
+ "method": "get",
1421
+ "toolName": "list-sharepoint-list-columns",
1422
+ "workScopes": ["Sites.Read.All"],
1423
+ "llmTip": "Lists column definitions for a SharePoint list. Returns each column's id, name, displayName, description, type indicator (text, number, choice, dateTime, person, lookup, boolean, calculated, hyperlinkOrPicture, etc.), required, indexed, hidden, readOnly. Use this to discover the schema before creating or updating list items."
1424
+ },
1425
+ {
1426
+ "pathPattern": "/sites/{site-id}/lists/{list-id}/columns",
1427
+ "method": "post",
1428
+ "toolName": "create-sharepoint-list-column",
1429
+ "workScopes": ["Sites.Manage.All"],
1430
+ "llmTip": "Creates a new column on a SharePoint list. Body must include name and exactly one column type property: { name: 'Priority', text: {} } or { name: 'DueDate', dateTime: { format: 'dateOnly' } } or { name: 'Status', choice: { choices: ['Open','In Progress','Done'] } }. Other types: number, boolean, currency, hyperlinkOrPicture, personOrGroup, lookup, calculated. Optional: displayName, description, required, indexed, enforceUniqueValues."
1431
+ },
1432
+ {
1433
+ "pathPattern": "/sites/{site-id}/lists/{list-id}/columns/{columnDefinition-id}",
1434
+ "method": "get",
1435
+ "toolName": "get-sharepoint-list-column",
1436
+ "workScopes": ["Sites.Read.All"],
1437
+ "llmTip": "Gets a specific column definition by ID, including its full type configuration (choices for choice columns, format for dateTime, etc.). Use list-sharepoint-list-columns first to find the column ID."
1438
+ },
1439
+ {
1440
+ "pathPattern": "/sites/{site-id}/lists/{list-id}/columns/{columnDefinition-id}",
1441
+ "method": "patch",
1442
+ "toolName": "update-sharepoint-list-column",
1443
+ "workScopes": ["Sites.Manage.All"],
1444
+ "llmTip": "Updates a column definition. Body: { displayName: 'New name', description: 'New description', required: true, ... }. The column type itself (text, choice, etc.) cannot be changed — only its metadata and per-type options (e.g. choices array for a choice column). Send only the fields you want to change."
1445
+ },
1446
+ {
1447
+ "pathPattern": "/sites/{site-id}/lists/{list-id}/columns/{columnDefinition-id}",
1448
+ "method": "delete",
1449
+ "toolName": "delete-sharepoint-list-column",
1450
+ "workScopes": ["Sites.Manage.All"],
1451
+ "llmTip": "Deletes a column from a SharePoint list. This is irreversible — all data stored in this column across every list item is lost. Confirm with the user before calling. Cannot delete built-in columns (Title, Created, Modified, etc.)."
1452
+ },
1411
1453
  {
1412
1454
  "pathPattern": "/sites/{site-id}/getByPath(path='{path}')",
1413
1455
  "method": "get",