@softeria/ms-365-mcp-server 0.47.2 → 0.47.4

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.
@@ -658,55 +658,6 @@
658
658
  "toolName": "list-team-members",
659
659
  "workScopes": ["TeamMember.Read.All"]
660
660
  },
661
- {
662
- "pathPattern": "/teams/{team-id}/tags",
663
- "method": "get",
664
- "toolName": "list-team-tags",
665
- "workScopes": ["TeamworkTag.Read"],
666
- "llmTip": "List all tags in a team. Returns tag id, displayName, memberCount, and tagType (standard or scheduled). Use list-joined-teams to find the team ID first."
667
- },
668
- {
669
- "pathPattern": "/teams/{team-id}/tags",
670
- "method": "post",
671
- "toolName": "create-team-tag",
672
- "workScopes": ["TeamworkTag.ReadWrite"],
673
- "llmTip": "Create a new tag in a team. Body requires displayName (max 40 chars) and an optional members array (max 25 at creation, each with a userId). Use list-team-members to find user IDs. Add more members individually with add-team-tag-member after creation."
674
- },
675
- {
676
- "pathPattern": "/teams/{team-id}/tags/{teamworkTag-id}",
677
- "method": "get",
678
- "toolName": "get-team-tag",
679
- "workScopes": ["TeamworkTag.Read"],
680
- "llmTip": "Get details of a specific tag including displayName, memberCount, and tagType. Use list-team-tags to find the tag ID."
681
- },
682
- {
683
- "pathPattern": "/teams/{team-id}/tags/{teamworkTag-id}",
684
- "method": "patch",
685
- "toolName": "update-team-tag",
686
- "workScopes": ["TeamworkTag.ReadWrite"],
687
- "llmTip": "Update a tag's displayName (max 40 chars). Use list-team-tags to find the tag ID."
688
- },
689
- {
690
- "pathPattern": "/teams/{team-id}/tags/{teamworkTag-id}",
691
- "method": "delete",
692
- "toolName": "delete-team-tag",
693
- "workScopes": ["TeamworkTag.ReadWrite"],
694
- "llmTip": "Permanently delete a tag from a team. This action is irreversible. Use list-team-tags to find the tag ID."
695
- },
696
- {
697
- "pathPattern": "/teams/{team-id}/tags/{teamworkTag-id}/members",
698
- "method": "get",
699
- "toolName": "list-team-tag-members",
700
- "workScopes": ["TeamworkTag.Read"],
701
- "llmTip": "List all members of a specific tag. Returns member id, displayName, tenantId, and userId. Use list-team-tags to find the tag ID."
702
- },
703
- {
704
- "pathPattern": "/teams/{team-id}/tags/{teamworkTag-id}/members/{teamworkTagMember-id}",
705
- "method": "delete",
706
- "toolName": "remove-team-tag-member",
707
- "workScopes": ["TeamworkTag.ReadWrite"],
708
- "llmTip": "Remove a member from a tag. Use list-team-tag-members to find the member ID."
709
- },
710
661
  {
711
662
  "pathPattern": "/chats/{chat-id}/messages/{chatMessage-id}/replies",
712
663
  "method": "get",
@@ -3559,34 +3559,6 @@ const microsoft_graph_conversationMemberCollectionResponse = z.object({
3559
3559
  "@odata.nextLink": z.string().nullable(),
3560
3560
  value: z.array(microsoft_graph_conversationMember)
3561
3561
  }).partial().passthrough();
3562
- const microsoft_graph_teamworkTagType = z.enum(["standard", "unknownFutureValue"]);
3563
- const microsoft_graph_teamworkTagMember = z.object({
3564
- id: z.string().describe("The unique identifier for an entity. Read-only.").optional(),
3565
- displayName: z.string().describe("The member's display name.").nullish(),
3566
- tenantId: z.string().describe("The ID of the tenant that the tag member is a part of.").nullish(),
3567
- userId: z.string().describe("The user ID of the member.").nullish()
3568
- }).passthrough();
3569
- const microsoft_graph_teamworkTag = z.object({
3570
- id: z.string().describe("The unique identifier for an entity. Read-only.").optional(),
3571
- description: z.string().describe(
3572
- "The description of the tag as it appears to the user in Microsoft Teams. A teamworkTag can't have more than 200 teamworkTagMembers."
3573
- ).nullish(),
3574
- displayName: z.string().describe("The name of the tag as it appears to the user in Microsoft Teams.").nullish(),
3575
- memberCount: z.number().gte(-2147483648).lte(2147483647).describe("The number of users assigned to the tag.").nullish(),
3576
- tagType: microsoft_graph_teamworkTagType.optional(),
3577
- teamId: z.string().describe("ID of the team in which the tag is defined.").nullish(),
3578
- members: z.array(microsoft_graph_teamworkTagMember).describe("Users assigned to the tag.").optional()
3579
- }).passthrough();
3580
- const microsoft_graph_teamworkTagCollectionResponse = z.object({
3581
- "@odata.count": z.number().int().nullable(),
3582
- "@odata.nextLink": z.string().nullable(),
3583
- value: z.array(microsoft_graph_teamworkTag)
3584
- }).partial().passthrough();
3585
- const microsoft_graph_teamworkTagMemberCollectionResponse = z.object({
3586
- "@odata.count": z.number().int().nullable(),
3587
- "@odata.nextLink": z.string().nullable(),
3588
- value: z.array(microsoft_graph_teamworkTagMember)
3589
- }).partial().passthrough();
3590
3562
  const microsoft_graph_userCollectionResponse = z.object({
3591
3563
  "@odata.count": z.number().int().nullable(),
3592
3564
  "@odata.nextLink": z.string().nullable(),
@@ -3947,11 +3919,6 @@ const schemas = {
3947
3919
  BaseDeltaFunctionResponse,
3948
3920
  microsoft_graph_channelCollectionResponse,
3949
3921
  microsoft_graph_conversationMemberCollectionResponse,
3950
- microsoft_graph_teamworkTagType,
3951
- microsoft_graph_teamworkTagMember,
3952
- microsoft_graph_teamworkTag,
3953
- microsoft_graph_teamworkTagCollectionResponse,
3954
- microsoft_graph_teamworkTagMemberCollectionResponse,
3955
3922
  microsoft_graph_userCollectionResponse
3956
3923
  };
3957
3924
  const endpoints = makeApi([
@@ -7957,188 +7924,6 @@ To monitor future changes, call the delta API by using the @odata.deltaLink in t
7957
7924
  ],
7958
7925
  response: z.void()
7959
7926
  },
7960
- {
7961
- method: "get",
7962
- path: "/teams/:teamId/tags",
7963
- alias: "list-team-tags",
7964
- description: `Get a list of the tag objects and their properties.`,
7965
- requestFormat: "json",
7966
- parameters: [
7967
- {
7968
- name: "$top",
7969
- type: "Query",
7970
- schema: z.number().int().gte(0).describe("Show only the first n items").optional()
7971
- },
7972
- {
7973
- name: "$skip",
7974
- type: "Query",
7975
- schema: z.number().int().gte(0).describe("Skip the first n items").optional()
7976
- },
7977
- {
7978
- name: "$search",
7979
- type: "Query",
7980
- schema: z.string().describe("Search items by search phrases").optional()
7981
- },
7982
- {
7983
- name: "$filter",
7984
- type: "Query",
7985
- schema: z.string().describe("Filter items by property values").optional()
7986
- },
7987
- {
7988
- name: "$count",
7989
- type: "Query",
7990
- schema: z.boolean().describe("Include count of items").optional()
7991
- },
7992
- {
7993
- name: "$orderby",
7994
- type: "Query",
7995
- schema: z.array(z.string()).describe("Order items by property values").optional()
7996
- },
7997
- {
7998
- name: "$select",
7999
- type: "Query",
8000
- schema: z.array(z.string()).describe("Select properties to be returned").optional()
8001
- },
8002
- {
8003
- name: "$expand",
8004
- type: "Query",
8005
- schema: z.array(z.string()).describe("Expand related entities").optional()
8006
- }
8007
- ],
8008
- response: z.void()
8009
- },
8010
- {
8011
- method: "post",
8012
- path: "/teams/:teamId/tags",
8013
- alias: "create-team-tag",
8014
- description: `Create a standard tag for members in a team.`,
8015
- requestFormat: "json",
8016
- parameters: [
8017
- {
8018
- name: "body",
8019
- description: `New navigation property`,
8020
- type: "Body",
8021
- schema: microsoft_graph_teamworkTag
8022
- }
8023
- ],
8024
- response: z.void()
8025
- },
8026
- {
8027
- method: "get",
8028
- path: "/teams/:teamId/tags/:teamworkTagId",
8029
- alias: "get-team-tag",
8030
- description: `Read the properties and relationships of a tag object.`,
8031
- requestFormat: "json",
8032
- parameters: [
8033
- {
8034
- name: "$select",
8035
- type: "Query",
8036
- schema: z.array(z.string()).describe("Select properties to be returned").optional()
8037
- },
8038
- {
8039
- name: "$expand",
8040
- type: "Query",
8041
- schema: z.array(z.string()).describe("Expand related entities").optional()
8042
- }
8043
- ],
8044
- response: z.void()
8045
- },
8046
- {
8047
- method: "patch",
8048
- path: "/teams/:teamId/tags/:teamworkTagId",
8049
- alias: "update-team-tag",
8050
- description: `Update the properties of a tag object.`,
8051
- requestFormat: "json",
8052
- parameters: [
8053
- {
8054
- name: "body",
8055
- description: `New navigation property values`,
8056
- type: "Body",
8057
- schema: microsoft_graph_teamworkTag
8058
- }
8059
- ],
8060
- response: z.void()
8061
- },
8062
- {
8063
- method: "delete",
8064
- path: "/teams/:teamId/tags/:teamworkTagId",
8065
- alias: "delete-team-tag",
8066
- description: `Delete a tag object permanently.`,
8067
- requestFormat: "json",
8068
- parameters: [
8069
- {
8070
- name: "If-Match",
8071
- type: "Header",
8072
- schema: z.string().describe("ETag").optional()
8073
- }
8074
- ],
8075
- response: z.void()
8076
- },
8077
- {
8078
- method: "get",
8079
- path: "/teams/:teamId/tags/:teamworkTagId/members",
8080
- alias: "list-team-tag-members",
8081
- description: `Get a list of the members of a standard tag in a team and their properties.`,
8082
- requestFormat: "json",
8083
- parameters: [
8084
- {
8085
- name: "$top",
8086
- type: "Query",
8087
- schema: z.number().int().gte(0).describe("Show only the first n items").optional()
8088
- },
8089
- {
8090
- name: "$skip",
8091
- type: "Query",
8092
- schema: z.number().int().gte(0).describe("Skip the first n items").optional()
8093
- },
8094
- {
8095
- name: "$search",
8096
- type: "Query",
8097
- schema: z.string().describe("Search items by search phrases").optional()
8098
- },
8099
- {
8100
- name: "$filter",
8101
- type: "Query",
8102
- schema: z.string().describe("Filter items by property values").optional()
8103
- },
8104
- {
8105
- name: "$count",
8106
- type: "Query",
8107
- schema: z.boolean().describe("Include count of items").optional()
8108
- },
8109
- {
8110
- name: "$orderby",
8111
- type: "Query",
8112
- schema: z.array(z.string()).describe("Order items by property values").optional()
8113
- },
8114
- {
8115
- name: "$select",
8116
- type: "Query",
8117
- schema: z.array(z.string()).describe("Select properties to be returned").optional()
8118
- },
8119
- {
8120
- name: "$expand",
8121
- type: "Query",
8122
- schema: z.array(z.string()).describe("Expand related entities").optional()
8123
- }
8124
- ],
8125
- response: z.void()
8126
- },
8127
- {
8128
- method: "delete",
8129
- path: "/teams/:teamId/tags/:teamworkTagId/members/:teamworkTagMemberId",
8130
- alias: "remove-team-tag-member",
8131
- description: `Delete a member from a standard tag in a team.`,
8132
- requestFormat: "json",
8133
- parameters: [
8134
- {
8135
- name: "If-Match",
8136
- type: "Header",
8137
- schema: z.string().describe("ETag").optional()
8138
- }
8139
- ],
8140
- response: z.void()
8141
- },
8142
7927
  {
8143
7928
  method: "get",
8144
7929
  path: "/users",
package/dist/index.js CHANGED
@@ -69,7 +69,9 @@ async function main() {
69
69
  await server.initialize(version);
70
70
  await server.start();
71
71
  } catch (error) {
72
- logger.error(`Startup error: ${error}`);
72
+ const message = error instanceof Error ? error.message : String(error);
73
+ logger.error(`Startup error: ${message}`);
74
+ console.error(message);
73
75
  process.exit(1);
74
76
  }
75
77
  }
@@ -1,10 +1,10 @@
1
- 2026-03-25 16:38:47 INFO: [GRAPH CLIENT] Final URL being sent to Microsoft: https://graph.microsoft.com/v1.0/me
2
- 2026-03-25 16:38:47 INFO: [GRAPH CLIENT] Final URL being sent to Microsoft: https://graph.microsoft.com/v1.0/me
3
- 2026-03-25 16:38:47 INFO: [GRAPH CLIENT] Final URL being sent to Microsoft: https://graph.microsoft.com/v1.0/me
4
- 2026-03-25 16:38:48 INFO: [GRAPH CLIENT] Final URL being sent to Microsoft: https://graph.microsoft.com/v1.0/me/messages
5
- 2026-03-25 16:38:48 INFO: [GRAPH CLIENT] Final URL being sent to Microsoft: https://graph.microsoft.com/v1.0/me/calendar
6
- 2026-03-25 16:38:49 INFO: Using environment variables for secrets
7
- 2026-03-25 16:38:49 INFO: Using environment variables for secrets
8
- 2026-03-25 16:38:49 INFO: Using environment variables for secrets
9
- 2026-03-25 16:38:49 INFO: Using environment variables for secrets
10
- 2026-03-25 16:38:49 INFO: Using environment variables for secrets
1
+ 2026-03-28 20:48:37 INFO: [GRAPH CLIENT] Final URL being sent to Microsoft: https://graph.microsoft.com/v1.0/me
2
+ 2026-03-28 20:48:37 INFO: [GRAPH CLIENT] Final URL being sent to Microsoft: https://graph.microsoft.com/v1.0/me
3
+ 2026-03-28 20:48:37 INFO: [GRAPH CLIENT] Final URL being sent to Microsoft: https://graph.microsoft.com/v1.0/me
4
+ 2026-03-28 20:48:37 INFO: [GRAPH CLIENT] Final URL being sent to Microsoft: https://graph.microsoft.com/v1.0/me/messages
5
+ 2026-03-28 20:48:37 INFO: [GRAPH CLIENT] Final URL being sent to Microsoft: https://graph.microsoft.com/v1.0/me/calendar
6
+ 2026-03-28 20:48:39 INFO: Using environment variables for secrets
7
+ 2026-03-28 20:48:39 INFO: Using environment variables for secrets
8
+ 2026-03-28 20:48:39 INFO: Using environment variables for secrets
9
+ 2026-03-28 20:48:39 INFO: Using environment variables for secrets
10
+ 2026-03-28 20:48:39 INFO: Using environment variables for secrets
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@softeria/ms-365-mcp-server",
3
- "version": "0.47.2",
3
+ "version": "0.47.4",
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",
@@ -34,7 +34,7 @@
34
34
  },
35
35
  "dependencies": {
36
36
  "@azure/msal-node": "^3.8.0",
37
- "@modelcontextprotocol/sdk": "^1.25.0",
37
+ "@modelcontextprotocol/sdk": "^1.28.0",
38
38
  "@toon-format/toon": "^0.8.0",
39
39
  "commander": "^11.1.0",
40
40
  "dotenv": "^17.0.1",
@@ -658,55 +658,6 @@
658
658
  "toolName": "list-team-members",
659
659
  "workScopes": ["TeamMember.Read.All"]
660
660
  },
661
- {
662
- "pathPattern": "/teams/{team-id}/tags",
663
- "method": "get",
664
- "toolName": "list-team-tags",
665
- "workScopes": ["TeamworkTag.Read"],
666
- "llmTip": "List all tags in a team. Returns tag id, displayName, memberCount, and tagType (standard or scheduled). Use list-joined-teams to find the team ID first."
667
- },
668
- {
669
- "pathPattern": "/teams/{team-id}/tags",
670
- "method": "post",
671
- "toolName": "create-team-tag",
672
- "workScopes": ["TeamworkTag.ReadWrite"],
673
- "llmTip": "Create a new tag in a team. Body requires displayName (max 40 chars) and an optional members array (max 25 at creation, each with a userId). Use list-team-members to find user IDs. Add more members individually with add-team-tag-member after creation."
674
- },
675
- {
676
- "pathPattern": "/teams/{team-id}/tags/{teamworkTag-id}",
677
- "method": "get",
678
- "toolName": "get-team-tag",
679
- "workScopes": ["TeamworkTag.Read"],
680
- "llmTip": "Get details of a specific tag including displayName, memberCount, and tagType. Use list-team-tags to find the tag ID."
681
- },
682
- {
683
- "pathPattern": "/teams/{team-id}/tags/{teamworkTag-id}",
684
- "method": "patch",
685
- "toolName": "update-team-tag",
686
- "workScopes": ["TeamworkTag.ReadWrite"],
687
- "llmTip": "Update a tag's displayName (max 40 chars). Use list-team-tags to find the tag ID."
688
- },
689
- {
690
- "pathPattern": "/teams/{team-id}/tags/{teamworkTag-id}",
691
- "method": "delete",
692
- "toolName": "delete-team-tag",
693
- "workScopes": ["TeamworkTag.ReadWrite"],
694
- "llmTip": "Permanently delete a tag from a team. This action is irreversible. Use list-team-tags to find the tag ID."
695
- },
696
- {
697
- "pathPattern": "/teams/{team-id}/tags/{teamworkTag-id}/members",
698
- "method": "get",
699
- "toolName": "list-team-tag-members",
700
- "workScopes": ["TeamworkTag.Read"],
701
- "llmTip": "List all members of a specific tag. Returns member id, displayName, tenantId, and userId. Use list-team-tags to find the tag ID."
702
- },
703
- {
704
- "pathPattern": "/teams/{team-id}/tags/{teamworkTag-id}/members/{teamworkTagMember-id}",
705
- "method": "delete",
706
- "toolName": "remove-team-tag-member",
707
- "workScopes": ["TeamworkTag.ReadWrite"],
708
- "llmTip": "Remove a member from a tag. Use list-team-tag-members to find the member ID."
709
- },
710
661
  {
711
662
  "pathPattern": "/chats/{chat-id}/messages/{chatMessage-id}/replies",
712
663
  "method": "get",