@softeria/ms-365-mcp-server 0.24.5 → 0.25.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/Dockerfile +0 -1
- package/dist/endpoints.json +22 -11
- package/dist/graph-tools.js +7 -1
- package/package.json +1 -1
- package/src/endpoints.json +22 -11
package/Dockerfile
CHANGED
package/dist/endpoints.json
CHANGED
|
@@ -3,7 +3,8 @@
|
|
|
3
3
|
"pathPattern": "/me/messages",
|
|
4
4
|
"method": "get",
|
|
5
5
|
"toolName": "list-mail-messages",
|
|
6
|
-
"scopes": ["Mail.Read"]
|
|
6
|
+
"scopes": ["Mail.Read"],
|
|
7
|
+
"llmTip": "CRITICAL: When searching emails, the $search parameter value MUST be wrapped in double quotes. Format: $search=\"your search query here\". Use KQL (Keyword Query Language) syntax to search specific properties: 'from:', 'subject:', 'body:', 'to:', 'cc:', 'bcc:', 'attachment:', 'hasAttachments:', 'importance:', 'received:', 'sent:'. Examples: $search=\"from:john@example.com\" | $search=\"subject:meeting AND hasAttachments:true\" | $search=\"body:urgent AND received>=2024-01-01\" | $search=\"from:john AND importance:high\". Remember: ALWAYS wrap the entire search expression in double quotes! Reference: https://learn.microsoft.com/en-us/graph/search-query-parameter"
|
|
7
8
|
},
|
|
8
9
|
{
|
|
9
10
|
"pathPattern": "/me/mailFolders",
|
|
@@ -15,7 +16,8 @@
|
|
|
15
16
|
"pathPattern": "/me/mailFolders/{mailFolder-id}/messages",
|
|
16
17
|
"method": "get",
|
|
17
18
|
"toolName": "list-mail-folder-messages",
|
|
18
|
-
"scopes": ["Mail.Read"]
|
|
19
|
+
"scopes": ["Mail.Read"],
|
|
20
|
+
"llmTip": "CRITICAL: When searching emails, the $search parameter value MUST be wrapped in double quotes. Format: $search=\"your search query here\". Use KQL (Keyword Query Language) syntax to search specific properties: 'from:', 'subject:', 'body:', 'to:', 'cc:', 'bcc:', 'attachment:', 'hasAttachments:', 'importance:', 'received:', 'sent:'. Examples: $search=\"from:john@example.com\" | $search=\"subject:meeting AND hasAttachments:true\" | $search=\"body:urgent AND received>=2024-01-01\" | $search=\"from:alice AND importance:high\". Remember: ALWAYS wrap the entire search expression in double quotes! Reference: https://learn.microsoft.com/en-us/graph/search-query-parameter"
|
|
19
21
|
},
|
|
20
22
|
{
|
|
21
23
|
"pathPattern": "/me/messages/{message-id}",
|
|
@@ -27,19 +29,22 @@
|
|
|
27
29
|
"pathPattern": "/me/sendMail",
|
|
28
30
|
"method": "post",
|
|
29
31
|
"toolName": "send-mail",
|
|
30
|
-
"scopes": ["Mail.Send"]
|
|
32
|
+
"scopes": ["Mail.Send"],
|
|
33
|
+
"llmTip": "CRITICAL: Do not try to guess the email address of the recipients. Use the list-users tool to find the email address of the recipients."
|
|
31
34
|
},
|
|
32
35
|
{
|
|
33
36
|
"pathPattern": "/users/{user-id}/messages",
|
|
34
37
|
"method": "get",
|
|
35
38
|
"toolName": "list-shared-mailbox-messages",
|
|
36
|
-
"workScopes": ["Mail.Read.Shared"]
|
|
39
|
+
"workScopes": ["Mail.Read.Shared"],
|
|
40
|
+
"llmTip": "CRITICAL: When searching emails, the $search parameter value MUST be wrapped in double quotes. Format: $search=\"your search query here\". Use KQL (Keyword Query Language) syntax to search specific properties: 'from:', 'subject:', 'body:', 'to:', 'cc:', 'bcc:', 'attachment:', 'hasAttachments:', 'importance:', 'received:', 'sent:'. Examples: $search=\"from:john@example.com\" | $search=\"subject:meeting AND hasAttachments:true\" | $search=\"body:urgent AND received>=2024-01-01\" | $search=\"from:alice AND importance:high\". Remember: ALWAYS wrap the entire search expression in double quotes! Reference: https://learn.microsoft.com/en-us/graph/search-query-parameter"
|
|
37
41
|
},
|
|
38
42
|
{
|
|
39
43
|
"pathPattern": "/users/{user-id}/mailFolders/{mailFolder-id}/messages",
|
|
40
44
|
"method": "get",
|
|
41
45
|
"toolName": "list-shared-mailbox-folder-messages",
|
|
42
|
-
"workScopes": ["Mail.Read.Shared"]
|
|
46
|
+
"workScopes": ["Mail.Read.Shared"],
|
|
47
|
+
"llmTip": "CRITICAL: When searching emails, the $search parameter value MUST be wrapped in double quotes. Format: $search=\"your search query here\". Use KQL (Keyword Query Language) syntax to search specific properties: 'from:', 'subject:', 'body:', 'to:', 'cc:', 'bcc:', 'attachment:', 'hasAttachments:', 'importance:', 'received:', 'sent:'. Examples: $search=\"from:john@example.com\" | $search=\"subject:meeting AND hasAttachments:true\" | $search=\"body:urgent AND received>=2024-01-01\" | $search=\"from:alice AND importance:high\". Remember: ALWAYS wrap the entire search expression in double quotes! Reference: https://learn.microsoft.com/en-us/graph/search-query-parameter"
|
|
43
48
|
},
|
|
44
49
|
{
|
|
45
50
|
"pathPattern": "/users/{user-id}/messages/{message-id}",
|
|
@@ -51,13 +56,15 @@
|
|
|
51
56
|
"pathPattern": "/users/{user-id}/sendMail",
|
|
52
57
|
"method": "post",
|
|
53
58
|
"toolName": "send-shared-mailbox-mail",
|
|
54
|
-
"workScopes": ["Mail.Send.Shared"]
|
|
59
|
+
"workScopes": ["Mail.Send.Shared"],
|
|
60
|
+
"llmTip": "CRITICAL: Do not try to guess the email address of the recipients. Use the list-users tool to find the email address of the recipients."
|
|
55
61
|
},
|
|
56
62
|
{
|
|
57
63
|
"pathPattern": "/users",
|
|
58
64
|
"method": "get",
|
|
59
65
|
"toolName": "list-users",
|
|
60
|
-
"workScopes": ["User.Read.All"]
|
|
66
|
+
"workScopes": ["User.Read.All"],
|
|
67
|
+
"llmTip": "CRITICAL: This request requires the ConsistencyLevel header set to eventual. When searching users, the $search parameter value MUST be wrapped in double quotes. Format: $search=\"your search query here\". Use KQL (Keyword Query Language) syntax to search specific properties: 'displayName:'. Examples: $search=\"displayName:john\" | $search=\"displayName:john\" OR \"displayName:jane\". Remember: ALWAYS wrap the entire search expression in double quotes and set the ConsistencyLevel header to eventual! Reference: https://learn.microsoft.com/en-us/graph/search-query-parameter"
|
|
61
68
|
},
|
|
62
69
|
{
|
|
63
70
|
"pathPattern": "/me/messages",
|
|
@@ -117,13 +124,15 @@
|
|
|
117
124
|
"pathPattern": "/me/events",
|
|
118
125
|
"method": "post",
|
|
119
126
|
"toolName": "create-calendar-event",
|
|
120
|
-
"scopes": ["Calendars.ReadWrite"]
|
|
127
|
+
"scopes": ["Calendars.ReadWrite"],
|
|
128
|
+
"llmTip": "CRITICAL: Do not try to guess the email address of the recipients. Use the list-users tool to find the email address of the recipients."
|
|
121
129
|
},
|
|
122
130
|
{
|
|
123
131
|
"pathPattern": "/me/events/{event-id}",
|
|
124
132
|
"method": "patch",
|
|
125
133
|
"toolName": "update-calendar-event",
|
|
126
|
-
"scopes": ["Calendars.ReadWrite"]
|
|
134
|
+
"scopes": ["Calendars.ReadWrite"],
|
|
135
|
+
"llmTip": "CRITICAL: Do not try to guess the email address of the recipients. Use the list-users tool to find the email address of the recipients."
|
|
127
136
|
},
|
|
128
137
|
{
|
|
129
138
|
"pathPattern": "/me/events/{event-id}",
|
|
@@ -147,13 +156,15 @@
|
|
|
147
156
|
"pathPattern": "/me/calendars/{calendar-id}/events",
|
|
148
157
|
"method": "post",
|
|
149
158
|
"toolName": "create-specific-calendar-event",
|
|
150
|
-
"scopes": ["Calendars.ReadWrite"]
|
|
159
|
+
"scopes": ["Calendars.ReadWrite"],
|
|
160
|
+
"llmTip": "CRITICAL: Do not try to guess the email address of the recipients. Use the list-users tool to find the email address of the recipients."
|
|
151
161
|
},
|
|
152
162
|
{
|
|
153
163
|
"pathPattern": "/me/calendars/{calendar-id}/events/{event-id}",
|
|
154
164
|
"method": "patch",
|
|
155
165
|
"toolName": "update-specific-calendar-event",
|
|
156
|
-
"scopes": ["Calendars.ReadWrite"]
|
|
166
|
+
"scopes": ["Calendars.ReadWrite"],
|
|
167
|
+
"llmTip": "CRITICAL: Do not try to guess the email address of the recipients. Use the list-users tool to find the email address of the recipients."
|
|
157
168
|
},
|
|
158
169
|
{
|
|
159
170
|
"pathPattern": "/me/calendars/{calendar-id}/events/{event-id}",
|
package/dist/graph-tools.js
CHANGED
|
@@ -44,9 +44,15 @@ function registerGraphTools(server, graphClient, readOnly = false, enabledToolsP
|
|
|
44
44
|
}
|
|
45
45
|
paramSchema["includeHeaders"] = z.boolean().describe("Include response headers (including ETag) in the response metadata").optional();
|
|
46
46
|
paramSchema["excludeResponse"] = z.boolean().describe("Exclude the full response body and only return success or failure indication").optional();
|
|
47
|
+
let toolDescription = tool.description || `Execute ${tool.method.toUpperCase()} request to ${tool.path}`;
|
|
48
|
+
if (endpointConfig?.llmTip) {
|
|
49
|
+
toolDescription += `
|
|
50
|
+
|
|
51
|
+
\u{1F4A1} TIP: ${endpointConfig.llmTip}`;
|
|
52
|
+
}
|
|
47
53
|
server.tool(
|
|
48
54
|
tool.alias,
|
|
49
|
-
|
|
55
|
+
toolDescription,
|
|
50
56
|
paramSchema,
|
|
51
57
|
{
|
|
52
58
|
title: tool.alias,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@softeria/ms-365-mcp-server",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.25.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",
|
package/src/endpoints.json
CHANGED
|
@@ -3,7 +3,8 @@
|
|
|
3
3
|
"pathPattern": "/me/messages",
|
|
4
4
|
"method": "get",
|
|
5
5
|
"toolName": "list-mail-messages",
|
|
6
|
-
"scopes": ["Mail.Read"]
|
|
6
|
+
"scopes": ["Mail.Read"],
|
|
7
|
+
"llmTip": "CRITICAL: When searching emails, the $search parameter value MUST be wrapped in double quotes. Format: $search=\"your search query here\". Use KQL (Keyword Query Language) syntax to search specific properties: 'from:', 'subject:', 'body:', 'to:', 'cc:', 'bcc:', 'attachment:', 'hasAttachments:', 'importance:', 'received:', 'sent:'. Examples: $search=\"from:john@example.com\" | $search=\"subject:meeting AND hasAttachments:true\" | $search=\"body:urgent AND received>=2024-01-01\" | $search=\"from:john AND importance:high\". Remember: ALWAYS wrap the entire search expression in double quotes! Reference: https://learn.microsoft.com/en-us/graph/search-query-parameter"
|
|
7
8
|
},
|
|
8
9
|
{
|
|
9
10
|
"pathPattern": "/me/mailFolders",
|
|
@@ -15,7 +16,8 @@
|
|
|
15
16
|
"pathPattern": "/me/mailFolders/{mailFolder-id}/messages",
|
|
16
17
|
"method": "get",
|
|
17
18
|
"toolName": "list-mail-folder-messages",
|
|
18
|
-
"scopes": ["Mail.Read"]
|
|
19
|
+
"scopes": ["Mail.Read"],
|
|
20
|
+
"llmTip": "CRITICAL: When searching emails, the $search parameter value MUST be wrapped in double quotes. Format: $search=\"your search query here\". Use KQL (Keyword Query Language) syntax to search specific properties: 'from:', 'subject:', 'body:', 'to:', 'cc:', 'bcc:', 'attachment:', 'hasAttachments:', 'importance:', 'received:', 'sent:'. Examples: $search=\"from:john@example.com\" | $search=\"subject:meeting AND hasAttachments:true\" | $search=\"body:urgent AND received>=2024-01-01\" | $search=\"from:alice AND importance:high\". Remember: ALWAYS wrap the entire search expression in double quotes! Reference: https://learn.microsoft.com/en-us/graph/search-query-parameter"
|
|
19
21
|
},
|
|
20
22
|
{
|
|
21
23
|
"pathPattern": "/me/messages/{message-id}",
|
|
@@ -27,19 +29,22 @@
|
|
|
27
29
|
"pathPattern": "/me/sendMail",
|
|
28
30
|
"method": "post",
|
|
29
31
|
"toolName": "send-mail",
|
|
30
|
-
"scopes": ["Mail.Send"]
|
|
32
|
+
"scopes": ["Mail.Send"],
|
|
33
|
+
"llmTip": "CRITICAL: Do not try to guess the email address of the recipients. Use the list-users tool to find the email address of the recipients."
|
|
31
34
|
},
|
|
32
35
|
{
|
|
33
36
|
"pathPattern": "/users/{user-id}/messages",
|
|
34
37
|
"method": "get",
|
|
35
38
|
"toolName": "list-shared-mailbox-messages",
|
|
36
|
-
"workScopes": ["Mail.Read.Shared"]
|
|
39
|
+
"workScopes": ["Mail.Read.Shared"],
|
|
40
|
+
"llmTip": "CRITICAL: When searching emails, the $search parameter value MUST be wrapped in double quotes. Format: $search=\"your search query here\". Use KQL (Keyword Query Language) syntax to search specific properties: 'from:', 'subject:', 'body:', 'to:', 'cc:', 'bcc:', 'attachment:', 'hasAttachments:', 'importance:', 'received:', 'sent:'. Examples: $search=\"from:john@example.com\" | $search=\"subject:meeting AND hasAttachments:true\" | $search=\"body:urgent AND received>=2024-01-01\" | $search=\"from:alice AND importance:high\". Remember: ALWAYS wrap the entire search expression in double quotes! Reference: https://learn.microsoft.com/en-us/graph/search-query-parameter"
|
|
37
41
|
},
|
|
38
42
|
{
|
|
39
43
|
"pathPattern": "/users/{user-id}/mailFolders/{mailFolder-id}/messages",
|
|
40
44
|
"method": "get",
|
|
41
45
|
"toolName": "list-shared-mailbox-folder-messages",
|
|
42
|
-
"workScopes": ["Mail.Read.Shared"]
|
|
46
|
+
"workScopes": ["Mail.Read.Shared"],
|
|
47
|
+
"llmTip": "CRITICAL: When searching emails, the $search parameter value MUST be wrapped in double quotes. Format: $search=\"your search query here\". Use KQL (Keyword Query Language) syntax to search specific properties: 'from:', 'subject:', 'body:', 'to:', 'cc:', 'bcc:', 'attachment:', 'hasAttachments:', 'importance:', 'received:', 'sent:'. Examples: $search=\"from:john@example.com\" | $search=\"subject:meeting AND hasAttachments:true\" | $search=\"body:urgent AND received>=2024-01-01\" | $search=\"from:alice AND importance:high\". Remember: ALWAYS wrap the entire search expression in double quotes! Reference: https://learn.microsoft.com/en-us/graph/search-query-parameter"
|
|
43
48
|
},
|
|
44
49
|
{
|
|
45
50
|
"pathPattern": "/users/{user-id}/messages/{message-id}",
|
|
@@ -51,13 +56,15 @@
|
|
|
51
56
|
"pathPattern": "/users/{user-id}/sendMail",
|
|
52
57
|
"method": "post",
|
|
53
58
|
"toolName": "send-shared-mailbox-mail",
|
|
54
|
-
"workScopes": ["Mail.Send.Shared"]
|
|
59
|
+
"workScopes": ["Mail.Send.Shared"],
|
|
60
|
+
"llmTip": "CRITICAL: Do not try to guess the email address of the recipients. Use the list-users tool to find the email address of the recipients."
|
|
55
61
|
},
|
|
56
62
|
{
|
|
57
63
|
"pathPattern": "/users",
|
|
58
64
|
"method": "get",
|
|
59
65
|
"toolName": "list-users",
|
|
60
|
-
"workScopes": ["User.Read.All"]
|
|
66
|
+
"workScopes": ["User.Read.All"],
|
|
67
|
+
"llmTip": "CRITICAL: This request requires the ConsistencyLevel header set to eventual. When searching users, the $search parameter value MUST be wrapped in double quotes. Format: $search=\"your search query here\". Use KQL (Keyword Query Language) syntax to search specific properties: 'displayName:'. Examples: $search=\"displayName:john\" | $search=\"displayName:john\" OR \"displayName:jane\". Remember: ALWAYS wrap the entire search expression in double quotes and set the ConsistencyLevel header to eventual! Reference: https://learn.microsoft.com/en-us/graph/search-query-parameter"
|
|
61
68
|
},
|
|
62
69
|
{
|
|
63
70
|
"pathPattern": "/me/messages",
|
|
@@ -117,13 +124,15 @@
|
|
|
117
124
|
"pathPattern": "/me/events",
|
|
118
125
|
"method": "post",
|
|
119
126
|
"toolName": "create-calendar-event",
|
|
120
|
-
"scopes": ["Calendars.ReadWrite"]
|
|
127
|
+
"scopes": ["Calendars.ReadWrite"],
|
|
128
|
+
"llmTip": "CRITICAL: Do not try to guess the email address of the recipients. Use the list-users tool to find the email address of the recipients."
|
|
121
129
|
},
|
|
122
130
|
{
|
|
123
131
|
"pathPattern": "/me/events/{event-id}",
|
|
124
132
|
"method": "patch",
|
|
125
133
|
"toolName": "update-calendar-event",
|
|
126
|
-
"scopes": ["Calendars.ReadWrite"]
|
|
134
|
+
"scopes": ["Calendars.ReadWrite"],
|
|
135
|
+
"llmTip": "CRITICAL: Do not try to guess the email address of the recipients. Use the list-users tool to find the email address of the recipients."
|
|
127
136
|
},
|
|
128
137
|
{
|
|
129
138
|
"pathPattern": "/me/events/{event-id}",
|
|
@@ -147,13 +156,15 @@
|
|
|
147
156
|
"pathPattern": "/me/calendars/{calendar-id}/events",
|
|
148
157
|
"method": "post",
|
|
149
158
|
"toolName": "create-specific-calendar-event",
|
|
150
|
-
"scopes": ["Calendars.ReadWrite"]
|
|
159
|
+
"scopes": ["Calendars.ReadWrite"],
|
|
160
|
+
"llmTip": "CRITICAL: Do not try to guess the email address of the recipients. Use the list-users tool to find the email address of the recipients."
|
|
151
161
|
},
|
|
152
162
|
{
|
|
153
163
|
"pathPattern": "/me/calendars/{calendar-id}/events/{event-id}",
|
|
154
164
|
"method": "patch",
|
|
155
165
|
"toolName": "update-specific-calendar-event",
|
|
156
|
-
"scopes": ["Calendars.ReadWrite"]
|
|
166
|
+
"scopes": ["Calendars.ReadWrite"],
|
|
167
|
+
"llmTip": "CRITICAL: Do not try to guess the email address of the recipients. Use the list-users tool to find the email address of the recipients."
|
|
157
168
|
},
|
|
158
169
|
{
|
|
159
170
|
"pathPattern": "/me/calendars/{calendar-id}/events/{event-id}",
|