@mcp-z/mcp-outlook 1.0.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/LICENSE +21 -0
- package/README.md +165 -0
- package/bin/server.js +5 -0
- package/dist/cjs/constants.d.cts +10 -0
- package/dist/cjs/constants.d.ts +10 -0
- package/dist/cjs/constants.js +35 -0
- package/dist/cjs/constants.js.map +1 -0
- package/dist/cjs/email/composition/outlook-message-builder.d.cts +36 -0
- package/dist/cjs/email/composition/outlook-message-builder.d.ts +36 -0
- package/dist/cjs/email/composition/outlook-message-builder.js +56 -0
- package/dist/cjs/email/composition/outlook-message-builder.js.map +1 -0
- package/dist/cjs/email/messages/messages.d.cts +7 -0
- package/dist/cjs/email/messages/messages.d.ts +7 -0
- package/dist/cjs/email/messages/messages.js +61 -0
- package/dist/cjs/email/messages/messages.js.map +1 -0
- package/dist/cjs/email/parsing/header-parsing.d.cts +18 -0
- package/dist/cjs/email/parsing/header-parsing.d.ts +18 -0
- package/dist/cjs/email/parsing/header-parsing.js +42 -0
- package/dist/cjs/email/parsing/header-parsing.js.map +1 -0
- package/dist/cjs/email/parsing/message-extraction.d.cts +4 -0
- package/dist/cjs/email/parsing/message-extraction.d.ts +4 -0
- package/dist/cjs/email/parsing/message-extraction.js +192 -0
- package/dist/cjs/email/parsing/message-extraction.js.map +1 -0
- package/dist/cjs/email/parsing/message-mapping.d.cts +21 -0
- package/dist/cjs/email/parsing/message-mapping.d.ts +21 -0
- package/dist/cjs/email/parsing/message-mapping.js +47 -0
- package/dist/cjs/email/parsing/message-mapping.js.map +1 -0
- package/dist/cjs/email/querying/execute-query.d.cts +20 -0
- package/dist/cjs/email/querying/execute-query.d.ts +20 -0
- package/dist/cjs/email/querying/execute-query.js +268 -0
- package/dist/cjs/email/querying/execute-query.js.map +1 -0
- package/dist/cjs/email/querying/query-builder.d.cts +32 -0
- package/dist/cjs/email/querying/query-builder.d.ts +32 -0
- package/dist/cjs/email/querying/query-builder.js +528 -0
- package/dist/cjs/email/querying/query-builder.js.map +1 -0
- package/dist/cjs/email/querying/search-execution.d.cts +24 -0
- package/dist/cjs/email/querying/search-execution.d.ts +24 -0
- package/dist/cjs/email/querying/search-execution.js +261 -0
- package/dist/cjs/email/querying/search-execution.js.map +1 -0
- package/dist/cjs/index.d.cts +8 -0
- package/dist/cjs/index.d.ts +8 -0
- package/dist/cjs/index.js +314 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/lib/create-store.d.cts +2 -0
- package/dist/cjs/lib/create-store.d.ts +2 -0
- package/dist/cjs/lib/create-store.js +166 -0
- package/dist/cjs/lib/create-store.js.map +1 -0
- package/dist/cjs/lib/messages-to-row.d.cts +39 -0
- package/dist/cjs/lib/messages-to-row.d.ts +39 -0
- package/dist/cjs/lib/messages-to-row.js +177 -0
- package/dist/cjs/lib/messages-to-row.js.map +1 -0
- package/dist/cjs/lib/outlook/index.d.cts +7 -0
- package/dist/cjs/lib/outlook/index.d.ts +7 -0
- package/dist/cjs/lib/outlook/index.js +56 -0
- package/dist/cjs/lib/outlook/index.js.map +1 -0
- package/dist/cjs/lib/outlook/types.d.cts +22 -0
- package/dist/cjs/lib/outlook/types.d.ts +22 -0
- package/dist/cjs/lib/outlook/types.js +6 -0
- package/dist/cjs/lib/outlook/types.js.map +1 -0
- package/dist/cjs/mcp/index.d.cts +3 -0
- package/dist/cjs/mcp/index.d.ts +3 -0
- package/dist/cjs/mcp/index.js +66 -0
- package/dist/cjs/mcp/index.js.map +1 -0
- package/dist/cjs/mcp/prompts/draft-email.d.cts +30 -0
- package/dist/cjs/mcp/prompts/draft-email.d.ts +30 -0
- package/dist/cjs/mcp/prompts/draft-email.js +184 -0
- package/dist/cjs/mcp/prompts/draft-email.js.map +1 -0
- package/dist/cjs/mcp/prompts/index.d.cts +2 -0
- package/dist/cjs/mcp/prompts/index.d.ts +2 -0
- package/dist/cjs/mcp/prompts/index.js +26 -0
- package/dist/cjs/mcp/prompts/index.js.map +1 -0
- package/dist/cjs/mcp/prompts/query-syntax.d.cts +19 -0
- package/dist/cjs/mcp/prompts/query-syntax.d.ts +19 -0
- package/dist/cjs/mcp/prompts/query-syntax.js +169 -0
- package/dist/cjs/mcp/prompts/query-syntax.js.map +1 -0
- package/dist/cjs/mcp/resources/email.d.cts +11 -0
- package/dist/cjs/mcp/resources/email.d.ts +11 -0
- package/dist/cjs/mcp/resources/email.js +233 -0
- package/dist/cjs/mcp/resources/email.js.map +1 -0
- package/dist/cjs/mcp/resources/index.d.cts +1 -0
- package/dist/cjs/mcp/resources/index.d.ts +1 -0
- package/dist/cjs/mcp/resources/index.js +17 -0
- package/dist/cjs/mcp/resources/index.js.map +1 -0
- package/dist/cjs/mcp/tools/categories-list.d.cts +96 -0
- package/dist/cjs/mcp/tools/categories-list.d.ts +96 -0
- package/dist/cjs/mcp/tools/categories-list.js +252 -0
- package/dist/cjs/mcp/tools/categories-list.js.map +1 -0
- package/dist/cjs/mcp/tools/index.d.cts +11 -0
- package/dist/cjs/mcp/tools/index.d.ts +11 -0
- package/dist/cjs/mcp/tools/index.js +62 -0
- package/dist/cjs/mcp/tools/index.js.map +1 -0
- package/dist/cjs/mcp/tools/label-add.d.cts +44 -0
- package/dist/cjs/mcp/tools/label-add.d.ts +44 -0
- package/dist/cjs/mcp/tools/label-add.js +249 -0
- package/dist/cjs/mcp/tools/label-add.js.map +1 -0
- package/dist/cjs/mcp/tools/label-delete.d.cts +54 -0
- package/dist/cjs/mcp/tools/label-delete.d.ts +54 -0
- package/dist/cjs/mcp/tools/label-delete.js +497 -0
- package/dist/cjs/mcp/tools/label-delete.js.map +1 -0
- package/dist/cjs/mcp/tools/labels-list.d.cts +96 -0
- package/dist/cjs/mcp/tools/labels-list.d.ts +96 -0
- package/dist/cjs/mcp/tools/labels-list.js +252 -0
- package/dist/cjs/mcp/tools/labels-list.js.map +1 -0
- package/dist/cjs/mcp/tools/message-get.d.cts +110 -0
- package/dist/cjs/mcp/tools/message-get.d.ts +110 -0
- package/dist/cjs/mcp/tools/message-get.js +289 -0
- package/dist/cjs/mcp/tools/message-get.js.map +1 -0
- package/dist/cjs/mcp/tools/message-mark-read.d.cts +42 -0
- package/dist/cjs/mcp/tools/message-mark-read.d.ts +42 -0
- package/dist/cjs/mcp/tools/message-mark-read.js +254 -0
- package/dist/cjs/mcp/tools/message-mark-read.js.map +1 -0
- package/dist/cjs/mcp/tools/message-move-to-trash.d.cts +54 -0
- package/dist/cjs/mcp/tools/message-move-to-trash.d.ts +54 -0
- package/dist/cjs/mcp/tools/message-move-to-trash.js +460 -0
- package/dist/cjs/mcp/tools/message-move-to-trash.js.map +1 -0
- package/dist/cjs/mcp/tools/message-respond.d.cts +52 -0
- package/dist/cjs/mcp/tools/message-respond.d.ts +52 -0
- package/dist/cjs/mcp/tools/message-respond.js +263 -0
- package/dist/cjs/mcp/tools/message-respond.js.map +1 -0
- package/dist/cjs/mcp/tools/message-search.d.cts +138 -0
- package/dist/cjs/mcp/tools/message-search.d.ts +138 -0
- package/dist/cjs/mcp/tools/message-search.js +408 -0
- package/dist/cjs/mcp/tools/message-search.js.map +1 -0
- package/dist/cjs/mcp/tools/message-send.d.cts +66 -0
- package/dist/cjs/mcp/tools/message-send.d.ts +66 -0
- package/dist/cjs/mcp/tools/message-send.js +298 -0
- package/dist/cjs/mcp/tools/message-send.js.map +1 -0
- package/dist/cjs/mcp/tools/messages-export-csv.d.cts +72 -0
- package/dist/cjs/mcp/tools/messages-export-csv.d.ts +72 -0
- package/dist/cjs/mcp/tools/messages-export-csv.js +540 -0
- package/dist/cjs/mcp/tools/messages-export-csv.js.map +1 -0
- package/dist/cjs/package.json +1 -0
- package/dist/cjs/schemas/index.d.cts +2 -0
- package/dist/cjs/schemas/index.d.ts +2 -0
- package/dist/cjs/schemas/index.js +20 -0
- package/dist/cjs/schemas/index.js.map +1 -0
- package/dist/cjs/schemas/outlook-query-schema.d.cts +53 -0
- package/dist/cjs/schemas/outlook-query-schema.d.ts +53 -0
- package/dist/cjs/schemas/outlook-query-schema.js +115 -0
- package/dist/cjs/schemas/outlook-query-schema.js.map +1 -0
- package/dist/cjs/schemas/outlook-validation.d.cts +428 -0
- package/dist/cjs/schemas/outlook-validation.d.ts +428 -0
- package/dist/cjs/schemas/outlook-validation.js +420 -0
- package/dist/cjs/schemas/outlook-validation.js.map +1 -0
- package/dist/cjs/setup/config.d.cts +50 -0
- package/dist/cjs/setup/config.d.ts +50 -0
- package/dist/cjs/setup/config.js +217 -0
- package/dist/cjs/setup/config.js.map +1 -0
- package/dist/cjs/setup/http.d.cts +8 -0
- package/dist/cjs/setup/http.d.ts +8 -0
- package/dist/cjs/setup/http.js +267 -0
- package/dist/cjs/setup/http.js.map +1 -0
- package/dist/cjs/setup/index.d.cts +5 -0
- package/dist/cjs/setup/index.d.ts +5 -0
- package/dist/cjs/setup/index.js +46 -0
- package/dist/cjs/setup/index.js.map +1 -0
- package/dist/cjs/setup/oauth-microsoft.d.cts +43 -0
- package/dist/cjs/setup/oauth-microsoft.d.ts +43 -0
- package/dist/cjs/setup/oauth-microsoft.js +366 -0
- package/dist/cjs/setup/oauth-microsoft.js.map +1 -0
- package/dist/cjs/setup/runtime.d.cts +11 -0
- package/dist/cjs/setup/runtime.d.ts +11 -0
- package/dist/cjs/setup/runtime.js +489 -0
- package/dist/cjs/setup/runtime.js.map +1 -0
- package/dist/cjs/setup/stdio.d.cts +7 -0
- package/dist/cjs/setup/stdio.d.ts +7 -0
- package/dist/cjs/setup/stdio.js +239 -0
- package/dist/cjs/setup/stdio.js.map +1 -0
- package/dist/cjs/types.d.cts +54 -0
- package/dist/cjs/types.d.ts +54 -0
- package/dist/cjs/types.js +5 -0
- package/dist/cjs/types.js.map +1 -0
- package/dist/esm/constants.d.ts +10 -0
- package/dist/esm/constants.js +13 -0
- package/dist/esm/constants.js.map +1 -0
- package/dist/esm/email/composition/outlook-message-builder.d.ts +36 -0
- package/dist/esm/email/composition/outlook-message-builder.js +46 -0
- package/dist/esm/email/composition/outlook-message-builder.js.map +1 -0
- package/dist/esm/email/messages/messages.d.ts +7 -0
- package/dist/esm/email/messages/messages.js +42 -0
- package/dist/esm/email/messages/messages.js.map +1 -0
- package/dist/esm/email/parsing/header-parsing.d.ts +18 -0
- package/dist/esm/email/parsing/header-parsing.js +18 -0
- package/dist/esm/email/parsing/header-parsing.js.map +1 -0
- package/dist/esm/email/parsing/message-extraction.d.ts +4 -0
- package/dist/esm/email/parsing/message-extraction.js +26 -0
- package/dist/esm/email/parsing/message-extraction.js.map +1 -0
- package/dist/esm/email/parsing/message-mapping.d.ts +21 -0
- package/dist/esm/email/parsing/message-mapping.js +35 -0
- package/dist/esm/email/parsing/message-mapping.js.map +1 -0
- package/dist/esm/email/querying/execute-query.d.ts +20 -0
- package/dist/esm/email/querying/execute-query.js +48 -0
- package/dist/esm/email/querying/execute-query.js.map +1 -0
- package/dist/esm/email/querying/query-builder.d.ts +32 -0
- package/dist/esm/email/querying/query-builder.js +424 -0
- package/dist/esm/email/querying/query-builder.js.map +1 -0
- package/dist/esm/email/querying/search-execution.d.ts +24 -0
- package/dist/esm/email/querying/search-execution.js +96 -0
- package/dist/esm/email/querying/search-execution.js.map +1 -0
- package/dist/esm/index.d.ts +8 -0
- package/dist/esm/index.js +34 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/lib/create-store.d.ts +2 -0
- package/dist/esm/lib/create-store.js +6 -0
- package/dist/esm/lib/create-store.js.map +1 -0
- package/dist/esm/lib/messages-to-row.d.ts +39 -0
- package/dist/esm/lib/messages-to-row.js +141 -0
- package/dist/esm/lib/messages-to-row.js.map +1 -0
- package/dist/esm/lib/outlook/index.d.ts +7 -0
- package/dist/esm/lib/outlook/index.js +7 -0
- package/dist/esm/lib/outlook/index.js.map +1 -0
- package/dist/esm/lib/outlook/types.d.ts +22 -0
- package/dist/esm/lib/outlook/types.js +2 -0
- package/dist/esm/lib/outlook/types.js.map +1 -0
- package/dist/esm/mcp/index.d.ts +3 -0
- package/dist/esm/mcp/index.js +6 -0
- package/dist/esm/mcp/index.js.map +1 -0
- package/dist/esm/mcp/prompts/draft-email.d.ts +30 -0
- package/dist/esm/mcp/prompts/draft-email.js +37 -0
- package/dist/esm/mcp/prompts/draft-email.js.map +1 -0
- package/dist/esm/mcp/prompts/index.d.ts +2 -0
- package/dist/esm/mcp/prompts/index.js +2 -0
- package/dist/esm/mcp/prompts/index.js.map +1 -0
- package/dist/esm/mcp/prompts/query-syntax.d.ts +19 -0
- package/dist/esm/mcp/prompts/query-syntax.js +75 -0
- package/dist/esm/mcp/prompts/query-syntax.js.map +1 -0
- package/dist/esm/mcp/resources/email.d.ts +11 -0
- package/dist/esm/mcp/resources/email.js +69 -0
- package/dist/esm/mcp/resources/email.js.map +1 -0
- package/dist/esm/mcp/resources/index.d.ts +1 -0
- package/dist/esm/mcp/resources/index.js +1 -0
- package/dist/esm/mcp/resources/index.js.map +1 -0
- package/dist/esm/mcp/tools/categories-list.d.ts +96 -0
- package/dist/esm/mcp/tools/categories-list.js +78 -0
- package/dist/esm/mcp/tools/categories-list.js.map +1 -0
- package/dist/esm/mcp/tools/index.d.ts +11 -0
- package/dist/esm/mcp/tools/index.js +11 -0
- package/dist/esm/mcp/tools/index.js.map +1 -0
- package/dist/esm/mcp/tools/label-add.d.ts +44 -0
- package/dist/esm/mcp/tools/label-add.js +75 -0
- package/dist/esm/mcp/tools/label-add.js.map +1 -0
- package/dist/esm/mcp/tools/label-delete.d.ts +54 -0
- package/dist/esm/mcp/tools/label-delete.js +166 -0
- package/dist/esm/mcp/tools/label-delete.js.map +1 -0
- package/dist/esm/mcp/tools/labels-list.d.ts +96 -0
- package/dist/esm/mcp/tools/labels-list.js +78 -0
- package/dist/esm/mcp/tools/labels-list.js.map +1 -0
- package/dist/esm/mcp/tools/message-get.d.ts +110 -0
- package/dist/esm/mcp/tools/message-get.js +117 -0
- package/dist/esm/mcp/tools/message-get.js.map +1 -0
- package/dist/esm/mcp/tools/message-mark-read.d.ts +42 -0
- package/dist/esm/mcp/tools/message-mark-read.js +80 -0
- package/dist/esm/mcp/tools/message-mark-read.js.map +1 -0
- package/dist/esm/mcp/tools/message-move-to-trash.d.ts +54 -0
- package/dist/esm/mcp/tools/message-move-to-trash.js +177 -0
- package/dist/esm/mcp/tools/message-move-to-trash.js.map +1 -0
- package/dist/esm/mcp/tools/message-respond.d.ts +52 -0
- package/dist/esm/mcp/tools/message-respond.js +89 -0
- package/dist/esm/mcp/tools/message-respond.js.map +1 -0
- package/dist/esm/mcp/tools/message-search.d.ts +138 -0
- package/dist/esm/mcp/tools/message-search.js +184 -0
- package/dist/esm/mcp/tools/message-search.js.map +1 -0
- package/dist/esm/mcp/tools/message-send.d.ts +66 -0
- package/dist/esm/mcp/tools/message-send.js +111 -0
- package/dist/esm/mcp/tools/message-send.js.map +1 -0
- package/dist/esm/mcp/tools/messages-export-csv.d.ts +72 -0
- package/dist/esm/mcp/tools/messages-export-csv.js +273 -0
- package/dist/esm/mcp/tools/messages-export-csv.js.map +1 -0
- package/dist/esm/package.json +1 -0
- package/dist/esm/schemas/index.d.ts +2 -0
- package/dist/esm/schemas/index.js +2 -0
- package/dist/esm/schemas/index.js.map +1 -0
- package/dist/esm/schemas/outlook-query-schema.d.ts +53 -0
- package/dist/esm/schemas/outlook-query-schema.js +63 -0
- package/dist/esm/schemas/outlook-query-schema.js.map +1 -0
- package/dist/esm/schemas/outlook-validation.d.ts +428 -0
- package/dist/esm/schemas/outlook-validation.js +388 -0
- package/dist/esm/schemas/outlook-validation.js.map +1 -0
- package/dist/esm/setup/config.d.ts +50 -0
- package/dist/esm/setup/config.js +180 -0
- package/dist/esm/setup/config.js.map +1 -0
- package/dist/esm/setup/http.d.ts +8 -0
- package/dist/esm/setup/http.js +61 -0
- package/dist/esm/setup/http.js.map +1 -0
- package/dist/esm/setup/index.d.ts +5 -0
- package/dist/esm/setup/index.js +5 -0
- package/dist/esm/setup/index.js.map +1 -0
- package/dist/esm/setup/oauth-microsoft.d.ts +43 -0
- package/dist/esm/setup/oauth-microsoft.js +169 -0
- package/dist/esm/setup/oauth-microsoft.js.map +1 -0
- package/dist/esm/setup/runtime.d.ts +11 -0
- package/dist/esm/setup/runtime.js +115 -0
- package/dist/esm/setup/runtime.js.map +1 -0
- package/dist/esm/setup/stdio.d.ts +7 -0
- package/dist/esm/setup/stdio.js +38 -0
- package/dist/esm/setup/stdio.js.map +1 -0
- package/dist/esm/types.d.ts +54 -0
- package/dist/esm/types.js +1 -0
- package/dist/esm/types.js.map +1 -0
- package/package.json +111 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2025 Kevin Malakoff
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
# @mcp-z/mcp-outlook
|
|
2
|
+
|
|
3
|
+
Docs: https://mcp-z.github.io/mcp-outlook
|
|
4
|
+
Outlook MCP server for searching, reading, and sending Microsoft 365 mail.
|
|
5
|
+
|
|
6
|
+
## Common uses
|
|
7
|
+
|
|
8
|
+
- Search and read messages
|
|
9
|
+
- Send and reply to emails
|
|
10
|
+
- Manage categories and export messages to CSV
|
|
11
|
+
|
|
12
|
+
## Transports
|
|
13
|
+
|
|
14
|
+
MCP supports stdio and HTTP.
|
|
15
|
+
|
|
16
|
+
**Stdio**
|
|
17
|
+
```json
|
|
18
|
+
{
|
|
19
|
+
"mcpServers": {
|
|
20
|
+
"outlook": {
|
|
21
|
+
"command": "npx",
|
|
22
|
+
"args": ["-y", "@mcp-z/mcp-outlook"]
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
**HTTP**
|
|
29
|
+
```json
|
|
30
|
+
{
|
|
31
|
+
"mcpServers": {
|
|
32
|
+
"outlook": {
|
|
33
|
+
"type": "http",
|
|
34
|
+
"url": "http://localhost:9003/mcp",
|
|
35
|
+
"start": {
|
|
36
|
+
"command": "npx",
|
|
37
|
+
"args": ["-y", "@mcp-z/mcp-outlook", "--port=9003"]
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
`start` is an extension used by `npx @mcp-z/cli up` to launch HTTP servers for you.
|
|
45
|
+
|
|
46
|
+
## Create a Microsoft app
|
|
47
|
+
|
|
48
|
+
1. Go to [Azure Portal](https://portal.azure.com/).
|
|
49
|
+
2. Navigate to Azure Active Directory > App registrations.
|
|
50
|
+
3. Click New registration.
|
|
51
|
+
4. Choose a name and select a supported account type.
|
|
52
|
+
5. Copy the Application (client) ID and Directory (tenant) ID.
|
|
53
|
+
|
|
54
|
+
## OAuth configuration
|
|
55
|
+
|
|
56
|
+
Configure via environment variables or the `env` block in `.mcp.json`. Use `server.json` for the full list of options.
|
|
57
|
+
|
|
58
|
+
### Loopback OAuth (default)
|
|
59
|
+
|
|
60
|
+
Environment variables:
|
|
61
|
+
|
|
62
|
+
```bash
|
|
63
|
+
MS_CLIENT_ID=your-client-id
|
|
64
|
+
MS_TENANT_ID=common
|
|
65
|
+
MS_CLIENT_SECRET=your-client-secret
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
Example:
|
|
69
|
+
```json
|
|
70
|
+
{
|
|
71
|
+
"mcpServers": {
|
|
72
|
+
"outlook": {
|
|
73
|
+
"command": "npx",
|
|
74
|
+
"args": ["-y", "@mcp-z/mcp-outlook"],
|
|
75
|
+
"env": {
|
|
76
|
+
"MS_CLIENT_ID": "your-client-id",
|
|
77
|
+
"MS_TENANT_ID": "common",
|
|
78
|
+
"MS_CLIENT_SECRET": "your-client-secret"
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
### Device code
|
|
86
|
+
|
|
87
|
+
Useful for headless or remote environments.
|
|
88
|
+
|
|
89
|
+
```json
|
|
90
|
+
{
|
|
91
|
+
"mcpServers": {
|
|
92
|
+
"outlook": {
|
|
93
|
+
"command": "npx",
|
|
94
|
+
"args": ["-y", "@mcp-z/mcp-outlook", "--auth=device-code"],
|
|
95
|
+
"env": {
|
|
96
|
+
"MS_CLIENT_ID": "your-client-id",
|
|
97
|
+
"MS_TENANT_ID": "common"
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
### DCR (Dynamic Client Registration)
|
|
105
|
+
|
|
106
|
+
HTTP only. Requires a public base URL.
|
|
107
|
+
|
|
108
|
+
```json
|
|
109
|
+
{
|
|
110
|
+
"mcpServers": {
|
|
111
|
+
"outlook-dcr": {
|
|
112
|
+
"command": "npx",
|
|
113
|
+
"args": [
|
|
114
|
+
"-y",
|
|
115
|
+
"@mcp-z/mcp-outlook",
|
|
116
|
+
"--auth=dcr",
|
|
117
|
+
"--port=3456",
|
|
118
|
+
"--base-url=https://oauth.example.com"
|
|
119
|
+
],
|
|
120
|
+
"env": {
|
|
121
|
+
"MS_CLIENT_ID": "your-client-id",
|
|
122
|
+
"MS_TENANT_ID": "common",
|
|
123
|
+
"MS_CLIENT_SECRET": "your-client-secret"
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
## How to use
|
|
131
|
+
|
|
132
|
+
```bash
|
|
133
|
+
# List tools
|
|
134
|
+
mcp-z inspect --servers outlook --tools
|
|
135
|
+
|
|
136
|
+
# Call a tool
|
|
137
|
+
mcp-z call outlook message-search '{"query":"from:alice@example.com"}'
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
## Tools
|
|
141
|
+
|
|
142
|
+
1. categories-list
|
|
143
|
+
2. label-add
|
|
144
|
+
3. label-delete
|
|
145
|
+
4. labels-list
|
|
146
|
+
5. message-get
|
|
147
|
+
6. message-mark-read
|
|
148
|
+
7. message-move-to-trash
|
|
149
|
+
8. message-respond
|
|
150
|
+
9. message-search
|
|
151
|
+
10. message-send
|
|
152
|
+
11. messages-export-csv
|
|
153
|
+
|
|
154
|
+
## Resources
|
|
155
|
+
|
|
156
|
+
1. email
|
|
157
|
+
|
|
158
|
+
## Prompts
|
|
159
|
+
|
|
160
|
+
1. draft-email
|
|
161
|
+
2. query-syntax
|
|
162
|
+
|
|
163
|
+
## Configuration reference
|
|
164
|
+
|
|
165
|
+
See `server.json` for all supported environment variables, CLI arguments, and defaults.
|
package/bin/server.js
ADDED
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
// biome-ignore lint/security/noGlobalEval: dual esm and cjs
|
|
4
|
+
if (typeof require === 'undefined') eval("import('../dist/esm/index.js').then((cli) => cli.default(process.argv.slice(2), 'mcp-outlook')).catch((err) => { console.log(err); process.exit(-1); });");
|
|
5
|
+
else require('../dist/cjs/index.js')(process.argv.slice(2), 'mcp-outlook');
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Outlook MCP Server Constants
|
|
3
|
+
*
|
|
4
|
+
* These scopes are required for Microsoft Outlook functionality and are hardcoded
|
|
5
|
+
* rather than externally configured since this server knows its own requirements.
|
|
6
|
+
*/
|
|
7
|
+
export declare const MS_SCOPE = "openid profile offline_access https://graph.microsoft.com/User.Read https://graph.microsoft.com/Mail.ReadWrite https://graph.microsoft.com/Mail.Send https://graph.microsoft.com/MailboxSettings.ReadWrite";
|
|
8
|
+
export declare const CHUNK_SIZE = 10;
|
|
9
|
+
export declare const MAX_BATCH_SIZE = 500;
|
|
10
|
+
export declare const MAX_PAGE_SIZE = 1000;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Outlook MCP Server Constants
|
|
3
|
+
*
|
|
4
|
+
* These scopes are required for Microsoft Outlook functionality and are hardcoded
|
|
5
|
+
* rather than externally configured since this server knows its own requirements.
|
|
6
|
+
*/
|
|
7
|
+
export declare const MS_SCOPE = "openid profile offline_access https://graph.microsoft.com/User.Read https://graph.microsoft.com/Mail.ReadWrite https://graph.microsoft.com/Mail.Send https://graph.microsoft.com/MailboxSettings.ReadWrite";
|
|
8
|
+
export declare const CHUNK_SIZE = 10;
|
|
9
|
+
export declare const MAX_BATCH_SIZE = 500;
|
|
10
|
+
export declare const MAX_PAGE_SIZE = 1000;
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Outlook MCP Server Constants
|
|
3
|
+
*
|
|
4
|
+
* These scopes are required for Microsoft Outlook functionality and are hardcoded
|
|
5
|
+
* rather than externally configured since this server knows its own requirements.
|
|
6
|
+
*/ "use strict";
|
|
7
|
+
Object.defineProperty(exports, "__esModule", {
|
|
8
|
+
value: true
|
|
9
|
+
});
|
|
10
|
+
function _export(target, all) {
|
|
11
|
+
for(var name in all)Object.defineProperty(target, name, {
|
|
12
|
+
enumerable: true,
|
|
13
|
+
get: Object.getOwnPropertyDescriptor(all, name).get
|
|
14
|
+
});
|
|
15
|
+
}
|
|
16
|
+
_export(exports, {
|
|
17
|
+
get CHUNK_SIZE () {
|
|
18
|
+
return CHUNK_SIZE;
|
|
19
|
+
},
|
|
20
|
+
get MAX_BATCH_SIZE () {
|
|
21
|
+
return MAX_BATCH_SIZE;
|
|
22
|
+
},
|
|
23
|
+
get MAX_PAGE_SIZE () {
|
|
24
|
+
return MAX_PAGE_SIZE;
|
|
25
|
+
},
|
|
26
|
+
get MS_SCOPE () {
|
|
27
|
+
return MS_SCOPE;
|
|
28
|
+
}
|
|
29
|
+
});
|
|
30
|
+
var _email = require("@mcp-z/email");
|
|
31
|
+
var MS_SCOPE = 'openid profile offline_access https://graph.microsoft.com/User.Read https://graph.microsoft.com/Mail.ReadWrite https://graph.microsoft.com/Mail.Send https://graph.microsoft.com/MailboxSettings.ReadWrite';
|
|
32
|
+
var CHUNK_SIZE = _email.EMAIL_CHUNK_SIZE;
|
|
33
|
+
var MAX_BATCH_SIZE = _email.EMAIL_MAX_BATCH_SIZE;
|
|
34
|
+
var MAX_PAGE_SIZE = 1000; // Maximum number of items per page
|
|
35
|
+
/* CJS INTEROP */ if (exports.__esModule && exports.default) { try { Object.defineProperty(exports.default, '__esModule', { value: true }); for (var key in exports) { exports.default[key] = exports[key]; } } catch (_) {}; module.exports = exports.default; }
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/Users/kevin/Dev/Projects/ai/mcp-z/servers/mcp-outlook/src/constants.ts"],"sourcesContent":["/**\n * Outlook MCP Server Constants\n *\n * These scopes are required for Microsoft Outlook functionality and are hardcoded\n * rather than externally configured since this server knows its own requirements.\n */\n\nimport { EMAIL_CHUNK_SIZE, EMAIL_MAX_BATCH_SIZE } from '@mcp-z/email';\n\n// Microsoft OAuth scopes required for Outlook operations\nexport const MS_SCOPE = 'openid profile offline_access https://graph.microsoft.com/User.Read https://graph.microsoft.com/Mail.ReadWrite https://graph.microsoft.com/Mail.Send https://graph.microsoft.com/MailboxSettings.ReadWrite';\n\n// Batch processing configuration (from shared email constants)\nexport const CHUNK_SIZE = EMAIL_CHUNK_SIZE;\nexport const MAX_BATCH_SIZE = EMAIL_MAX_BATCH_SIZE;\n\n// Pagination configuration\nexport const MAX_PAGE_SIZE = 1000; // Maximum number of items per page\n"],"names":["CHUNK_SIZE","MAX_BATCH_SIZE","MAX_PAGE_SIZE","MS_SCOPE","EMAIL_CHUNK_SIZE","EMAIL_MAX_BATCH_SIZE"],"mappings":"AAAA;;;;;CAKC;;;;;;;;;;;QAQYA;eAAAA;;QACAC;eAAAA;;QAGAC;eAAAA;;QAPAC;eAAAA;;;qBAH0C;AAGhD,IAAMA,WAAW;AAGjB,IAAMH,aAAaI,uBAAgB;AACnC,IAAMH,iBAAiBI,2BAAoB;AAG3C,IAAMH,gBAAgB,MAAM,mCAAmC"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Outlook-specific message builder for composing emails using Microsoft Graph API format
|
|
3
|
+
* This is the Outlook equivalent of Gmail's RFC822 builder
|
|
4
|
+
*/
|
|
5
|
+
export interface OutlookRecipient {
|
|
6
|
+
emailAddress: {
|
|
7
|
+
address: string;
|
|
8
|
+
name?: string;
|
|
9
|
+
};
|
|
10
|
+
}
|
|
11
|
+
export interface OutlookMessageArgs {
|
|
12
|
+
to?: string | string[] | undefined;
|
|
13
|
+
cc?: string | string[] | undefined;
|
|
14
|
+
bcc?: string | string[] | undefined;
|
|
15
|
+
subject?: string;
|
|
16
|
+
body?: string;
|
|
17
|
+
from?: string;
|
|
18
|
+
importance?: 'Low' | 'Normal' | 'High';
|
|
19
|
+
contentType?: 'Text' | 'HTML';
|
|
20
|
+
}
|
|
21
|
+
export interface OutlookMessage {
|
|
22
|
+
subject?: string;
|
|
23
|
+
body?: {
|
|
24
|
+
contentType: string;
|
|
25
|
+
content: string;
|
|
26
|
+
};
|
|
27
|
+
toRecipients?: OutlookRecipient[];
|
|
28
|
+
ccRecipients?: OutlookRecipient[];
|
|
29
|
+
bccRecipients?: OutlookRecipient[];
|
|
30
|
+
importance?: string;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Build an Outlook message object from email arguments for Microsoft Graph API
|
|
34
|
+
* This is the Outlook equivalent of buildRfc822FromArgs for Gmail
|
|
35
|
+
*/
|
|
36
|
+
export declare function buildOutlookMessage(args: OutlookMessageArgs): OutlookMessage;
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Outlook-specific message builder for composing emails using Microsoft Graph API format
|
|
3
|
+
* This is the Outlook equivalent of Gmail's RFC822 builder
|
|
4
|
+
*/
|
|
5
|
+
export interface OutlookRecipient {
|
|
6
|
+
emailAddress: {
|
|
7
|
+
address: string;
|
|
8
|
+
name?: string;
|
|
9
|
+
};
|
|
10
|
+
}
|
|
11
|
+
export interface OutlookMessageArgs {
|
|
12
|
+
to?: string | string[] | undefined;
|
|
13
|
+
cc?: string | string[] | undefined;
|
|
14
|
+
bcc?: string | string[] | undefined;
|
|
15
|
+
subject?: string;
|
|
16
|
+
body?: string;
|
|
17
|
+
from?: string;
|
|
18
|
+
importance?: 'Low' | 'Normal' | 'High';
|
|
19
|
+
contentType?: 'Text' | 'HTML';
|
|
20
|
+
}
|
|
21
|
+
export interface OutlookMessage {
|
|
22
|
+
subject?: string;
|
|
23
|
+
body?: {
|
|
24
|
+
contentType: string;
|
|
25
|
+
content: string;
|
|
26
|
+
};
|
|
27
|
+
toRecipients?: OutlookRecipient[];
|
|
28
|
+
ccRecipients?: OutlookRecipient[];
|
|
29
|
+
bccRecipients?: OutlookRecipient[];
|
|
30
|
+
importance?: string;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Build an Outlook message object from email arguments for Microsoft Graph API
|
|
34
|
+
* This is the Outlook equivalent of buildRfc822FromArgs for Gmail
|
|
35
|
+
*/
|
|
36
|
+
export declare function buildOutlookMessage(args: OutlookMessageArgs): OutlookMessage;
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Outlook-specific message builder for composing emails using Microsoft Graph API format
|
|
3
|
+
* This is the Outlook equivalent of Gmail's RFC822 builder
|
|
4
|
+
*/ "use strict";
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
Object.defineProperty(exports, "buildOutlookMessage", {
|
|
9
|
+
enumerable: true,
|
|
10
|
+
get: function() {
|
|
11
|
+
return buildOutlookMessage;
|
|
12
|
+
}
|
|
13
|
+
});
|
|
14
|
+
function buildOutlookMessage(args) {
|
|
15
|
+
var _args_to = args.to, to = _args_to === void 0 ? [] : _args_to, _args_cc = args.cc, cc = _args_cc === void 0 ? [] : _args_cc, _args_bcc = args.bcc, bcc = _args_bcc === void 0 ? [] : _args_bcc, _args_subject = args.subject, subject = _args_subject === void 0 ? '' : _args_subject, _args_body = args.body, body = _args_body === void 0 ? '' : _args_body, _args_importance = args.importance, importance = _args_importance === void 0 ? 'Normal' : _args_importance, _args_contentType = args.contentType, contentType = _args_contentType === void 0 ? 'Text' : _args_contentType;
|
|
16
|
+
var message = {};
|
|
17
|
+
if (subject) {
|
|
18
|
+
message.subject = subject;
|
|
19
|
+
}
|
|
20
|
+
if (body) {
|
|
21
|
+
message.body = {
|
|
22
|
+
contentType: contentType,
|
|
23
|
+
content: body
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
function parseEmailAddresses(emails) {
|
|
27
|
+
var emailArray = Array.isArray(emails) ? emails : [
|
|
28
|
+
emails
|
|
29
|
+
];
|
|
30
|
+
return emailArray.filter(function(email) {
|
|
31
|
+
return email && email.trim();
|
|
32
|
+
}).map(function(email) {
|
|
33
|
+
var trimmed = email.trim();
|
|
34
|
+
// Simple email parsing - could be enhanced for name parsing
|
|
35
|
+
return {
|
|
36
|
+
emailAddress: {
|
|
37
|
+
address: trimmed
|
|
38
|
+
}
|
|
39
|
+
};
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
if (to && (Array.isArray(to) ? to.length > 0 : to.trim())) {
|
|
43
|
+
message.toRecipients = parseEmailAddresses(to);
|
|
44
|
+
}
|
|
45
|
+
if (cc && (Array.isArray(cc) ? cc.length > 0 : cc.trim())) {
|
|
46
|
+
message.ccRecipients = parseEmailAddresses(cc);
|
|
47
|
+
}
|
|
48
|
+
if (bcc && (Array.isArray(bcc) ? bcc.length > 0 : bcc.trim())) {
|
|
49
|
+
message.bccRecipients = parseEmailAddresses(bcc);
|
|
50
|
+
}
|
|
51
|
+
if (importance && importance !== 'Normal') {
|
|
52
|
+
message.importance = importance;
|
|
53
|
+
}
|
|
54
|
+
return message;
|
|
55
|
+
}
|
|
56
|
+
/* CJS INTEROP */ if (exports.__esModule && exports.default) { try { Object.defineProperty(exports.default, '__esModule', { value: true }); for (var key in exports) { exports.default[key] = exports[key]; } } catch (_) {}; module.exports = exports.default; }
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/Users/kevin/Dev/Projects/ai/mcp-z/servers/mcp-outlook/src/email/composition/outlook-message-builder.ts"],"sourcesContent":["/**\n * Outlook-specific message builder for composing emails using Microsoft Graph API format\n * This is the Outlook equivalent of Gmail's RFC822 builder\n */\n\nexport interface OutlookRecipient {\n emailAddress: {\n address: string;\n name?: string;\n };\n}\n\nexport interface OutlookMessageArgs {\n to?: string | string[] | undefined;\n cc?: string | string[] | undefined;\n bcc?: string | string[] | undefined;\n subject?: string;\n body?: string;\n from?: string;\n importance?: 'Low' | 'Normal' | 'High';\n contentType?: 'Text' | 'HTML';\n}\n\nexport interface OutlookMessage {\n subject?: string;\n body?: {\n contentType: string;\n content: string;\n };\n toRecipients?: OutlookRecipient[];\n ccRecipients?: OutlookRecipient[];\n bccRecipients?: OutlookRecipient[];\n importance?: string;\n}\n\n/**\n * Build an Outlook message object from email arguments for Microsoft Graph API\n * This is the Outlook equivalent of buildRfc822FromArgs for Gmail\n */\nexport function buildOutlookMessage(args: OutlookMessageArgs): OutlookMessage {\n const { to = [], cc = [], bcc = [], subject = '', body = '', importance = 'Normal', contentType = 'Text' } = args;\n\n const message: OutlookMessage = {};\n\n if (subject) {\n message.subject = subject;\n }\n\n if (body) {\n message.body = {\n contentType: contentType,\n content: body,\n };\n }\n\n function parseEmailAddresses(emails: string | string[]): OutlookRecipient[] {\n const emailArray = Array.isArray(emails) ? emails : [emails];\n return emailArray\n .filter((email) => email && email.trim())\n .map((email) => {\n const trimmed = email.trim();\n // Simple email parsing - could be enhanced for name parsing\n return {\n emailAddress: {\n address: trimmed,\n },\n };\n });\n }\n\n if (to && (Array.isArray(to) ? to.length > 0 : to.trim())) {\n message.toRecipients = parseEmailAddresses(to);\n }\n\n if (cc && (Array.isArray(cc) ? cc.length > 0 : cc.trim())) {\n message.ccRecipients = parseEmailAddresses(cc);\n }\n\n if (bcc && (Array.isArray(bcc) ? bcc.length > 0 : bcc.trim())) {\n message.bccRecipients = parseEmailAddresses(bcc);\n }\n\n if (importance && importance !== 'Normal') {\n message.importance = importance;\n }\n\n return message;\n}\n"],"names":["buildOutlookMessage","args","to","cc","bcc","subject","body","importance","contentType","message","content","parseEmailAddresses","emails","emailArray","Array","isArray","filter","email","trim","map","trimmed","emailAddress","address","length","toRecipients","ccRecipients","bccRecipients"],"mappings":"AAAA;;;CAGC;;;;+BAoCeA;;;eAAAA;;;AAAT,SAASA,oBAAoBC,IAAwB;IAC1D,eAA6GA,KAArGC,IAAAA,2BAAK,EAAE,wBAA8FD,KAA5FE,IAAAA,2BAAK,EAAE,yBAAqFF,KAAnFG,KAAAA,6BAAM,EAAE,8BAA2EH,KAAzEI,SAAAA,qCAAU,iCAA+DJ,KAA3DK,MAAAA,+BAAO,oCAAoDL,KAAhDM,YAAAA,2CAAa,iDAAmCN,KAAzBO,aAAAA,6CAAc;IAElG,IAAMC,UAA0B,CAAC;IAEjC,IAAIJ,SAAS;QACXI,QAAQJ,OAAO,GAAGA;IACpB;IAEA,IAAIC,MAAM;QACRG,QAAQH,IAAI,GAAG;YACbE,aAAaA;YACbE,SAASJ;QACX;IACF;IAEA,SAASK,oBAAoBC,MAAyB;QACpD,IAAMC,aAAaC,MAAMC,OAAO,CAACH,UAAUA,SAAS;YAACA;SAAO;QAC5D,OAAOC,WACJG,MAAM,CAAC,SAACC;mBAAUA,SAASA,MAAMC,IAAI;WACrCC,GAAG,CAAC,SAACF;YACJ,IAAMG,UAAUH,MAAMC,IAAI;YAC1B,4DAA4D;YAC5D,OAAO;gBACLG,cAAc;oBACZC,SAASF;gBACX;YACF;QACF;IACJ;IAEA,IAAIlB,MAAOY,CAAAA,MAAMC,OAAO,CAACb,MAAMA,GAAGqB,MAAM,GAAG,IAAIrB,GAAGgB,IAAI,EAAC,GAAI;QACzDT,QAAQe,YAAY,GAAGb,oBAAoBT;IAC7C;IAEA,IAAIC,MAAOW,CAAAA,MAAMC,OAAO,CAACZ,MAAMA,GAAGoB,MAAM,GAAG,IAAIpB,GAAGe,IAAI,EAAC,GAAI;QACzDT,QAAQgB,YAAY,GAAGd,oBAAoBR;IAC7C;IAEA,IAAIC,OAAQU,CAAAA,MAAMC,OAAO,CAACX,OAAOA,IAAImB,MAAM,GAAG,IAAInB,IAAIc,IAAI,EAAC,GAAI;QAC7DT,QAAQiB,aAAa,GAAGf,oBAAoBP;IAC9C;IAEA,IAAIG,cAAcA,eAAe,UAAU;QACzCE,QAAQF,UAAU,GAAGA;IACvB;IAEA,OAAOE;AACT"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { buildContentForItems } from '@mcp-z/email';
|
|
2
|
+
import type { OutlookMessage } from '../../lib/outlook/types.js';
|
|
3
|
+
export { buildContentForItems };
|
|
4
|
+
export declare function toRowFromOutlook(msg: OutlookMessage, opts?: {
|
|
5
|
+
body?: boolean;
|
|
6
|
+
addressFormat?: 'email' | 'name' | 'raw';
|
|
7
|
+
}): string[];
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { buildContentForItems } from '@mcp-z/email';
|
|
2
|
+
import type { OutlookMessage } from '../../lib/outlook/types.js';
|
|
3
|
+
export { buildContentForItems };
|
|
4
|
+
export declare function toRowFromOutlook(msg: OutlookMessage, opts?: {
|
|
5
|
+
body?: boolean;
|
|
6
|
+
addressFormat?: 'email' | 'name' | 'raw';
|
|
7
|
+
}): string[];
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
function _export(target, all) {
|
|
6
|
+
for(var name in all)Object.defineProperty(target, name, {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
get: Object.getOwnPropertyDescriptor(all, name).get
|
|
9
|
+
});
|
|
10
|
+
}
|
|
11
|
+
_export(exports, {
|
|
12
|
+
get buildContentForItems () {
|
|
13
|
+
return _email.buildContentForItems;
|
|
14
|
+
},
|
|
15
|
+
get toRowFromOutlook () {
|
|
16
|
+
return toRowFromOutlook;
|
|
17
|
+
}
|
|
18
|
+
});
|
|
19
|
+
var _email = require("@mcp-z/email");
|
|
20
|
+
var _headerparsing = require("../parsing/header-parsing.js");
|
|
21
|
+
function toRowFromOutlook(msg) {
|
|
22
|
+
var opts = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {
|
|
23
|
+
body: false,
|
|
24
|
+
addressFormat: 'email'
|
|
25
|
+
};
|
|
26
|
+
var _msg_id, _msg_conversationId, _extractFrom, _msg_subject, _msg_bodyPreview;
|
|
27
|
+
var id = (_msg_id = msg.id) !== null && _msg_id !== void 0 ? _msg_id : '';
|
|
28
|
+
var provider = 'outlook';
|
|
29
|
+
var threadId = (_msg_conversationId = msg.conversationId) !== null && _msg_conversationId !== void 0 ? _msg_conversationId : '';
|
|
30
|
+
var to = msg.toRecipients ? (0, _headerparsing.formatAddressList)(msg.toRecipients, opts.addressFormat) : '';
|
|
31
|
+
var from = msg.from ? (_extractFrom = (0, _headerparsing.extractFrom)(msg.from)) !== null && _extractFrom !== void 0 ? _extractFrom : '' : '';
|
|
32
|
+
var cc = msg.ccRecipients ? (0, _headerparsing.formatAddressList)(msg.ccRecipients, opts.addressFormat) : '';
|
|
33
|
+
var bcc = msg.bccRecipients ? (0, _headerparsing.formatAddressList)(msg.bccRecipients, opts.addressFormat) : '';
|
|
34
|
+
var date = msg.receivedDateTime ? (0, _email.normalizeDateToISO)(msg.receivedDateTime) || msg.receivedDateTime : '';
|
|
35
|
+
var subject = (_msg_subject = msg.subject) !== null && _msg_subject !== void 0 ? _msg_subject : '';
|
|
36
|
+
var labels = msg.categories ? msg.categories.join(';') : '';
|
|
37
|
+
var snippet = (_msg_bodyPreview = msg.bodyPreview) !== null && _msg_bodyPreview !== void 0 ? _msg_bodyPreview : '';
|
|
38
|
+
var bodyFull = '';
|
|
39
|
+
if (opts.body && msg.body) {
|
|
40
|
+
var _msg_body_content;
|
|
41
|
+
var raw = (_msg_body_content = msg.body.content) !== null && _msg_body_content !== void 0 ? _msg_body_content : '';
|
|
42
|
+
if (raw) {
|
|
43
|
+
bodyFull = msg.body.contentType && msg.body.contentType.toLowerCase() === 'html' ? (0, _email.stripHtml)(raw) : String(raw);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
return [
|
|
47
|
+
id,
|
|
48
|
+
provider,
|
|
49
|
+
threadId,
|
|
50
|
+
to,
|
|
51
|
+
from,
|
|
52
|
+
cc,
|
|
53
|
+
bcc,
|
|
54
|
+
date,
|
|
55
|
+
subject,
|
|
56
|
+
labels,
|
|
57
|
+
snippet,
|
|
58
|
+
bodyFull
|
|
59
|
+
];
|
|
60
|
+
}
|
|
61
|
+
/* CJS INTEROP */ if (exports.__esModule && exports.default) { try { Object.defineProperty(exports.default, '__esModule', { value: true }); for (var key in exports) { exports.default[key] = exports[key]; } } catch (_) {}; module.exports = exports.default; }
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/Users/kevin/Dev/Projects/ai/mcp-z/servers/mcp-outlook/src/email/messages/messages.ts"],"sourcesContent":["import { buildContentForItems, stripHtml, normalizeDateToISO as toIsoUtc } from '@mcp-z/email';\nimport type { OutlookMessage } from '../../lib/outlook/types.js';\nimport { extractFrom, formatAddressList } from '../parsing/header-parsing.js';\n\nexport { buildContentForItems };\n\nexport function toRowFromOutlook(msg: OutlookMessage, opts: { body?: boolean; addressFormat?: 'email' | 'name' | 'raw' } = { body: false, addressFormat: 'email' }) {\n const id = msg.id ?? '';\n const provider = 'outlook';\n const threadId = msg.conversationId ?? '';\n const to = msg.toRecipients ? formatAddressList(msg.toRecipients, opts.addressFormat) : '';\n const from = msg.from ? (extractFrom(msg.from) ?? '') : '';\n const cc = msg.ccRecipients ? formatAddressList(msg.ccRecipients, opts.addressFormat) : '';\n const bcc = msg.bccRecipients ? formatAddressList(msg.bccRecipients, opts.addressFormat) : '';\n const date = msg.receivedDateTime ? toIsoUtc(msg.receivedDateTime) || msg.receivedDateTime : '';\n const subject = msg.subject ?? '';\n const labels = msg.categories ? msg.categories.join(';') : '';\n const snippet = msg.bodyPreview ?? '';\n let bodyFull = '';\n if (opts.body && msg.body) {\n const raw = msg.body.content ?? '';\n if (raw) {\n bodyFull = msg.body.contentType && msg.body.contentType.toLowerCase() === 'html' ? stripHtml(raw) : String(raw);\n }\n }\n return [id, provider, threadId, to, from, cc, bcc, date, subject, labels, snippet, bodyFull];\n}\n"],"names":["buildContentForItems","toRowFromOutlook","msg","opts","body","addressFormat","extractFrom","id","provider","threadId","conversationId","to","toRecipients","formatAddressList","from","cc","ccRecipients","bcc","bccRecipients","date","receivedDateTime","toIsoUtc","subject","labels","categories","join","snippet","bodyPreview","bodyFull","raw","content","contentType","toLowerCase","stripHtml","String"],"mappings":";;;;;;;;;;;QAISA;eAAAA,2BAAoB;;QAEbC;eAAAA;;;qBANgE;6BAEjC;AAIxC,SAASA,iBAAiBC,GAAmB;QAAEC,OAAAA,iEAAqE;QAAEC,MAAM;QAAOC,eAAe;IAAQ;QACpJH,SAEMA,qBAEQI,cAITJ,cAEAA;IAVhB,IAAMK,MAAKL,UAAAA,IAAIK,EAAE,cAANL,qBAAAA,UAAU;IACrB,IAAMM,WAAW;IACjB,IAAMC,YAAWP,sBAAAA,IAAIQ,cAAc,cAAlBR,iCAAAA,sBAAsB;IACvC,IAAMS,KAAKT,IAAIU,YAAY,GAAGC,IAAAA,gCAAiB,EAACX,IAAIU,YAAY,EAAET,KAAKE,aAAa,IAAI;IACxF,IAAMS,OAAOZ,IAAIY,IAAI,IAAIR,eAAAA,IAAAA,0BAAW,EAACJ,IAAIY,IAAI,eAApBR,0BAAAA,eAAyB,KAAM;IACxD,IAAMS,KAAKb,IAAIc,YAAY,GAAGH,IAAAA,gCAAiB,EAACX,IAAIc,YAAY,EAAEb,KAAKE,aAAa,IAAI;IACxF,IAAMY,MAAMf,IAAIgB,aAAa,GAAGL,IAAAA,gCAAiB,EAACX,IAAIgB,aAAa,EAAEf,KAAKE,aAAa,IAAI;IAC3F,IAAMc,OAAOjB,IAAIkB,gBAAgB,GAAGC,IAAAA,yBAAQ,EAACnB,IAAIkB,gBAAgB,KAAKlB,IAAIkB,gBAAgB,GAAG;IAC7F,IAAME,WAAUpB,eAAAA,IAAIoB,OAAO,cAAXpB,0BAAAA,eAAe;IAC/B,IAAMqB,SAASrB,IAAIsB,UAAU,GAAGtB,IAAIsB,UAAU,CAACC,IAAI,CAAC,OAAO;IAC3D,IAAMC,WAAUxB,mBAAAA,IAAIyB,WAAW,cAAfzB,8BAAAA,mBAAmB;IACnC,IAAI0B,WAAW;IACf,IAAIzB,KAAKC,IAAI,IAAIF,IAAIE,IAAI,EAAE;YACbF;QAAZ,IAAM2B,OAAM3B,oBAAAA,IAAIE,IAAI,CAAC0B,OAAO,cAAhB5B,+BAAAA,oBAAoB;QAChC,IAAI2B,KAAK;YACPD,WAAW1B,IAAIE,IAAI,CAAC2B,WAAW,IAAI7B,IAAIE,IAAI,CAAC2B,WAAW,CAACC,WAAW,OAAO,SAASC,IAAAA,gBAAS,EAACJ,OAAOK,OAAOL;QAC7G;IACF;IACA,OAAO;QAACtB;QAAIC;QAAUC;QAAUE;QAAIG;QAAMC;QAAIE;QAAKE;QAAMG;QAASC;QAAQG;QAASE;KAAS;AAC9F"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export declare function extractEmailsFromRecipients(recipients: Array<{
|
|
2
|
+
emailAddress?: {
|
|
3
|
+
address?: string;
|
|
4
|
+
name?: string;
|
|
5
|
+
};
|
|
6
|
+
}>, mode?: 'email' | 'name' | 'raw'): string[];
|
|
7
|
+
export declare function formatAddressList(recipients: Array<{
|
|
8
|
+
emailAddress?: {
|
|
9
|
+
address?: string;
|
|
10
|
+
name?: string;
|
|
11
|
+
};
|
|
12
|
+
}>, mode?: 'email' | 'name' | 'raw'): string;
|
|
13
|
+
export declare function extractFrom(from: {
|
|
14
|
+
emailAddress?: {
|
|
15
|
+
address?: string;
|
|
16
|
+
name?: string;
|
|
17
|
+
};
|
|
18
|
+
} | undefined): string | undefined;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export declare function extractEmailsFromRecipients(recipients: Array<{
|
|
2
|
+
emailAddress?: {
|
|
3
|
+
address?: string;
|
|
4
|
+
name?: string;
|
|
5
|
+
};
|
|
6
|
+
}>, mode?: 'email' | 'name' | 'raw'): string[];
|
|
7
|
+
export declare function formatAddressList(recipients: Array<{
|
|
8
|
+
emailAddress?: {
|
|
9
|
+
address?: string;
|
|
10
|
+
name?: string;
|
|
11
|
+
};
|
|
12
|
+
}>, mode?: 'email' | 'name' | 'raw'): string;
|
|
13
|
+
export declare function extractFrom(from: {
|
|
14
|
+
emailAddress?: {
|
|
15
|
+
address?: string;
|
|
16
|
+
name?: string;
|
|
17
|
+
};
|
|
18
|
+
} | undefined): string | undefined;
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
function _export(target, all) {
|
|
6
|
+
for(var name in all)Object.defineProperty(target, name, {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
get: Object.getOwnPropertyDescriptor(all, name).get
|
|
9
|
+
});
|
|
10
|
+
}
|
|
11
|
+
_export(exports, {
|
|
12
|
+
get extractEmailsFromRecipients () {
|
|
13
|
+
return extractEmailsFromRecipients;
|
|
14
|
+
},
|
|
15
|
+
get extractFrom () {
|
|
16
|
+
return extractFrom;
|
|
17
|
+
},
|
|
18
|
+
get formatAddressList () {
|
|
19
|
+
return formatAddressList;
|
|
20
|
+
}
|
|
21
|
+
});
|
|
22
|
+
function extractEmailsFromRecipients(recipients) {
|
|
23
|
+
var mode = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 'email';
|
|
24
|
+
if (!Array.isArray(recipients)) return [];
|
|
25
|
+
return recipients.map(function(r) {
|
|
26
|
+
var _ref, _ref1;
|
|
27
|
+
var _r_emailAddress, _r_emailAddress1;
|
|
28
|
+
var name = (_ref = r === null || r === void 0 ? void 0 : (_r_emailAddress = r.emailAddress) === null || _r_emailAddress === void 0 ? void 0 : _r_emailAddress.name) !== null && _ref !== void 0 ? _ref : '';
|
|
29
|
+
var email = (_ref1 = r === null || r === void 0 ? void 0 : (_r_emailAddress1 = r.emailAddress) === null || _r_emailAddress1 === void 0 ? void 0 : _r_emailAddress1.address) !== null && _ref1 !== void 0 ? _ref1 : '';
|
|
30
|
+
return mode === 'email' ? email : mode === 'name' ? name || email : "".concat(name, " <").concat(email, ">");
|
|
31
|
+
}).filter(Boolean);
|
|
32
|
+
}
|
|
33
|
+
function formatAddressList(recipients) {
|
|
34
|
+
var mode = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 'email';
|
|
35
|
+
return extractEmailsFromRecipients(recipients, mode).join(', ');
|
|
36
|
+
}
|
|
37
|
+
function extractFrom(from) {
|
|
38
|
+
var _from_emailAddress, _from_emailAddress1;
|
|
39
|
+
if (!from) return undefined;
|
|
40
|
+
return ((_from_emailAddress = from.emailAddress) === null || _from_emailAddress === void 0 ? void 0 : _from_emailAddress.address) || ((_from_emailAddress1 = from.emailAddress) === null || _from_emailAddress1 === void 0 ? void 0 : _from_emailAddress1.name) || undefined;
|
|
41
|
+
}
|
|
42
|
+
/* CJS INTEROP */ if (exports.__esModule && exports.default) { try { Object.defineProperty(exports.default, '__esModule', { value: true }); for (var key in exports) { exports.default[key] = exports[key]; } } catch (_) {}; module.exports = exports.default; }
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/Users/kevin/Dev/Projects/ai/mcp-z/servers/mcp-outlook/src/email/parsing/header-parsing.ts"],"sourcesContent":["export function extractEmailsFromRecipients(recipients: Array<{ emailAddress?: { address?: string; name?: string } }>, mode: 'email' | 'name' | 'raw' = 'email'): string[] {\n if (!Array.isArray(recipients)) return [];\n return recipients\n .map((r) => {\n const name = r?.emailAddress?.name ?? '';\n const email = r?.emailAddress?.address ?? '';\n return mode === 'email' ? email : mode === 'name' ? name || email : `${name} <${email}>`;\n })\n .filter(Boolean);\n}\n\nexport function formatAddressList(recipients: Array<{ emailAddress?: { address?: string; name?: string } }>, mode: 'email' | 'name' | 'raw' = 'email'): string {\n return extractEmailsFromRecipients(recipients, mode).join(', ');\n}\n\nexport function extractFrom(from: { emailAddress?: { address?: string; name?: string } } | undefined): string | undefined {\n if (!from) return undefined;\n return from.emailAddress?.address || from.emailAddress?.name || undefined;\n}\n"],"names":["extractEmailsFromRecipients","extractFrom","formatAddressList","recipients","mode","Array","isArray","map","r","name","emailAddress","email","address","filter","Boolean","join","from","undefined"],"mappings":";;;;;;;;;;;QAAgBA;eAAAA;;QAeAC;eAAAA;;QAJAC;eAAAA;;;AAXT,SAASF,4BAA4BG,UAAyE;QAAEC,OAAAA,iEAAiC;IACtJ,IAAI,CAACC,MAAMC,OAAO,CAACH,aAAa,OAAO,EAAE;IACzC,OAAOA,WACJI,GAAG,CAAC,SAACC;;YACSA,iBACCA;QADd,IAAMC,eAAOD,cAAAA,yBAAAA,kBAAAA,EAAGE,YAAY,cAAfF,sCAAAA,gBAAiBC,IAAI,uCAAI;QACtC,IAAME,iBAAQH,cAAAA,yBAAAA,mBAAAA,EAAGE,YAAY,cAAfF,uCAAAA,iBAAiBI,OAAO,yCAAI;QAC1C,OAAOR,SAAS,UAAUO,QAAQP,SAAS,SAASK,QAAQE,QAAQ,AAAC,GAAWA,OAATF,MAAK,MAAU,OAANE,OAAM;IACxF,GACCE,MAAM,CAACC;AACZ;AAEO,SAASZ,kBAAkBC,UAAyE;QAAEC,OAAAA,iEAAiC;IAC5I,OAAOJ,4BAA4BG,YAAYC,MAAMW,IAAI,CAAC;AAC5D;AAEO,SAASd,YAAYe,IAAwE;QAE3FA,oBAA8BA;IADrC,IAAI,CAACA,MAAM,OAAOC;IAClB,OAAOD,EAAAA,qBAAAA,KAAKN,YAAY,cAAjBM,yCAAAA,mBAAmBJ,OAAO,OAAII,sBAAAA,KAAKN,YAAY,cAAjBM,0CAAAA,oBAAmBP,IAAI,KAAIQ;AAClE"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { Client } from '@microsoft/microsoft-graph-client';
|
|
2
|
+
import { type NormalizedMessage } from './message-mapping.js';
|
|
3
|
+
/** Fetch a single Outlook message. Throws on non-OK Graph responses. */
|
|
4
|
+
export declare function fetchOutlookMessage(graph: Client, id: string): Promise<NormalizedMessage>;
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { Client } from '@microsoft/microsoft-graph-client';
|
|
2
|
+
import { type NormalizedMessage } from './message-mapping.js';
|
|
3
|
+
/** Fetch a single Outlook message. Throws on non-OK Graph responses. */
|
|
4
|
+
export declare function fetchOutlookMessage(graph: Client, id: string): Promise<NormalizedMessage>;
|