@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
|
@@ -0,0 +1,289 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
Object.defineProperty(exports, "default", {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: function() {
|
|
8
|
+
return createTool;
|
|
9
|
+
}
|
|
10
|
+
});
|
|
11
|
+
var _email = require("@mcp-z/email");
|
|
12
|
+
var _oauthmicrosoft = require("@mcp-z/oauth-microsoft");
|
|
13
|
+
var _server = require("@mcp-z/server");
|
|
14
|
+
var _microsoftgraphclient = require("@microsoft/microsoft-graph-client");
|
|
15
|
+
var _types = require("@modelcontextprotocol/sdk/types.js");
|
|
16
|
+
var _zod = require("zod");
|
|
17
|
+
function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
|
|
18
|
+
try {
|
|
19
|
+
var info = gen[key](arg);
|
|
20
|
+
var value = info.value;
|
|
21
|
+
} catch (error) {
|
|
22
|
+
reject(error);
|
|
23
|
+
return;
|
|
24
|
+
}
|
|
25
|
+
if (info.done) {
|
|
26
|
+
resolve(value);
|
|
27
|
+
} else {
|
|
28
|
+
Promise.resolve(value).then(_next, _throw);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
function _async_to_generator(fn) {
|
|
32
|
+
return function() {
|
|
33
|
+
var self = this, args = arguments;
|
|
34
|
+
return new Promise(function(resolve, reject) {
|
|
35
|
+
var gen = fn.apply(self, args);
|
|
36
|
+
function _next(value) {
|
|
37
|
+
asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value);
|
|
38
|
+
}
|
|
39
|
+
function _throw(err) {
|
|
40
|
+
asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err);
|
|
41
|
+
}
|
|
42
|
+
_next(undefined);
|
|
43
|
+
});
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
function _instanceof(left, right) {
|
|
47
|
+
if (right != null && typeof Symbol !== "undefined" && right[Symbol.hasInstance]) {
|
|
48
|
+
return !!right[Symbol.hasInstance](left);
|
|
49
|
+
} else {
|
|
50
|
+
return left instanceof right;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
function _ts_generator(thisArg, body) {
|
|
54
|
+
var f, y, t, _ = {
|
|
55
|
+
label: 0,
|
|
56
|
+
sent: function() {
|
|
57
|
+
if (t[0] & 1) throw t[1];
|
|
58
|
+
return t[1];
|
|
59
|
+
},
|
|
60
|
+
trys: [],
|
|
61
|
+
ops: []
|
|
62
|
+
}, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype), d = Object.defineProperty;
|
|
63
|
+
return d(g, "next", {
|
|
64
|
+
value: verb(0)
|
|
65
|
+
}), d(g, "throw", {
|
|
66
|
+
value: verb(1)
|
|
67
|
+
}), d(g, "return", {
|
|
68
|
+
value: verb(2)
|
|
69
|
+
}), typeof Symbol === "function" && d(g, Symbol.iterator, {
|
|
70
|
+
value: function() {
|
|
71
|
+
return this;
|
|
72
|
+
}
|
|
73
|
+
}), g;
|
|
74
|
+
function verb(n) {
|
|
75
|
+
return function(v) {
|
|
76
|
+
return step([
|
|
77
|
+
n,
|
|
78
|
+
v
|
|
79
|
+
]);
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
function step(op) {
|
|
83
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
84
|
+
while(g && (g = 0, op[0] && (_ = 0)), _)try {
|
|
85
|
+
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
86
|
+
if (y = 0, t) op = [
|
|
87
|
+
op[0] & 2,
|
|
88
|
+
t.value
|
|
89
|
+
];
|
|
90
|
+
switch(op[0]){
|
|
91
|
+
case 0:
|
|
92
|
+
case 1:
|
|
93
|
+
t = op;
|
|
94
|
+
break;
|
|
95
|
+
case 4:
|
|
96
|
+
_.label++;
|
|
97
|
+
return {
|
|
98
|
+
value: op[1],
|
|
99
|
+
done: false
|
|
100
|
+
};
|
|
101
|
+
case 5:
|
|
102
|
+
_.label++;
|
|
103
|
+
y = op[1];
|
|
104
|
+
op = [
|
|
105
|
+
0
|
|
106
|
+
];
|
|
107
|
+
continue;
|
|
108
|
+
case 7:
|
|
109
|
+
op = _.ops.pop();
|
|
110
|
+
_.trys.pop();
|
|
111
|
+
continue;
|
|
112
|
+
default:
|
|
113
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {
|
|
114
|
+
_ = 0;
|
|
115
|
+
continue;
|
|
116
|
+
}
|
|
117
|
+
if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {
|
|
118
|
+
_.label = op[1];
|
|
119
|
+
break;
|
|
120
|
+
}
|
|
121
|
+
if (op[0] === 6 && _.label < t[1]) {
|
|
122
|
+
_.label = t[1];
|
|
123
|
+
t = op;
|
|
124
|
+
break;
|
|
125
|
+
}
|
|
126
|
+
if (t && _.label < t[2]) {
|
|
127
|
+
_.label = t[2];
|
|
128
|
+
_.ops.push(op);
|
|
129
|
+
break;
|
|
130
|
+
}
|
|
131
|
+
if (t[2]) _.ops.pop();
|
|
132
|
+
_.trys.pop();
|
|
133
|
+
continue;
|
|
134
|
+
}
|
|
135
|
+
op = body.call(thisArg, _);
|
|
136
|
+
} catch (e) {
|
|
137
|
+
op = [
|
|
138
|
+
6,
|
|
139
|
+
e
|
|
140
|
+
];
|
|
141
|
+
y = 0;
|
|
142
|
+
} finally{
|
|
143
|
+
f = t = 0;
|
|
144
|
+
}
|
|
145
|
+
if (op[0] & 5) throw op[1];
|
|
146
|
+
return {
|
|
147
|
+
value: op[0] ? op[1] : void 0,
|
|
148
|
+
done: true
|
|
149
|
+
};
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
var AuthRequiredBranchSchema = _oauthmicrosoft.schemas.AuthRequiredBranchSchema;
|
|
153
|
+
var inputSchema = _zod.z.object({
|
|
154
|
+
id: _zod.z.coerce.string().trim().min(1).describe('Outlook message ID to retrieve'),
|
|
155
|
+
fields: (0, _server.createFieldsSchema)({
|
|
156
|
+
availableFields: _email.EMAIL_FIELDS,
|
|
157
|
+
fieldDescriptions: _email.EMAIL_FIELD_DESCRIPTIONS,
|
|
158
|
+
commonPatterns: _email.EMAIL_COMMON_PATTERNS,
|
|
159
|
+
resourceName: 'email message'
|
|
160
|
+
}),
|
|
161
|
+
contentType: _email.EmailContentTypeSchema,
|
|
162
|
+
excludeThreadHistory: _email.ExcludeThreadHistorySchema
|
|
163
|
+
});
|
|
164
|
+
// Success branch schema - uses item: wrapper for consistency with standard vocabulary
|
|
165
|
+
var successBranchSchema = _zod.z.object({
|
|
166
|
+
type: _zod.z.literal('success'),
|
|
167
|
+
item: _email.EmailDetailSchema
|
|
168
|
+
});
|
|
169
|
+
// Output schema with auth_required support
|
|
170
|
+
var outputSchema = _zod.z.discriminatedUnion('type', [
|
|
171
|
+
successBranchSchema,
|
|
172
|
+
AuthRequiredBranchSchema
|
|
173
|
+
]);
|
|
174
|
+
var config = {
|
|
175
|
+
description: 'Get an Outlook message by ID with flexible field selection',
|
|
176
|
+
inputSchema: inputSchema,
|
|
177
|
+
outputSchema: _zod.z.object({
|
|
178
|
+
result: outputSchema
|
|
179
|
+
})
|
|
180
|
+
};
|
|
181
|
+
function handler(_0, _1) {
|
|
182
|
+
return _async_to_generator(function(param, extra) {
|
|
183
|
+
var id, fields, contentType, excludeThreadHistory, logger, requestedFields, _ref, _message_body, _message_body_contentType, _message_body1, _message_from_emailAddress, _message_from, graph, message, bodyContent, isHtml, _ref1, _message_body2, payload, filteredPayload, result, error, message1;
|
|
184
|
+
return _ts_generator(this, function(_state) {
|
|
185
|
+
switch(_state.label){
|
|
186
|
+
case 0:
|
|
187
|
+
id = param.id, fields = param.fields, contentType = param.contentType, excludeThreadHistory = param.excludeThreadHistory;
|
|
188
|
+
logger = extra.logger;
|
|
189
|
+
requestedFields = (0, _server.parseFields)(fields, _email.EMAIL_FIELDS);
|
|
190
|
+
logger.info('outlook.message.get called', {
|
|
191
|
+
id: id,
|
|
192
|
+
fields: fields || 'all'
|
|
193
|
+
});
|
|
194
|
+
if (!id) {
|
|
195
|
+
logger.info('outlook.message.get missing id');
|
|
196
|
+
throw new _types.McpError(_types.ErrorCode.InvalidParams, 'Missing id');
|
|
197
|
+
}
|
|
198
|
+
_state.label = 1;
|
|
199
|
+
case 1:
|
|
200
|
+
_state.trys.push([
|
|
201
|
+
1,
|
|
202
|
+
3,
|
|
203
|
+
,
|
|
204
|
+
4
|
|
205
|
+
]);
|
|
206
|
+
graph = _microsoftgraphclient.Client.initWithMiddleware({
|
|
207
|
+
authProvider: extra.authContext.auth
|
|
208
|
+
});
|
|
209
|
+
return [
|
|
210
|
+
4,
|
|
211
|
+
graph.api("/me/messages/".concat(encodeURIComponent(id))).get()
|
|
212
|
+
];
|
|
213
|
+
case 2:
|
|
214
|
+
message = _state.sent();
|
|
215
|
+
// Process body based on contentType and excludeThreadHistory options
|
|
216
|
+
bodyContent = (_ref = (_message_body = message.body) === null || _message_body === void 0 ? void 0 : _message_body.content) !== null && _ref !== void 0 ? _ref : '';
|
|
217
|
+
isHtml = ((_message_body1 = message.body) === null || _message_body1 === void 0 ? void 0 : (_message_body_contentType = _message_body1.contentType) === null || _message_body_contentType === void 0 ? void 0 : _message_body_contentType.toLowerCase()) === 'html';
|
|
218
|
+
if (isHtml && excludeThreadHistory) {
|
|
219
|
+
// Remove thread history from HTML
|
|
220
|
+
bodyContent = (0, _email.extractCurrentMessageFromHtml)(bodyContent);
|
|
221
|
+
}
|
|
222
|
+
if (isHtml && contentType === 'text') {
|
|
223
|
+
;
|
|
224
|
+
;
|
|
225
|
+
// Convert HTML to plain text (thread extraction happens inside if excludeThreadHistory was true)
|
|
226
|
+
bodyContent = excludeThreadHistory ? (0, _email.extractCurrentMessageFromHtmlToText)(bodyContent) : (0, _email.extractCurrentMessageFromHtmlToText)((_ref1 = (_message_body2 = message.body) === null || _message_body2 === void 0 ? void 0 : _message_body2.content) !== null && _ref1 !== void 0 ? _ref1 : '');
|
|
227
|
+
}
|
|
228
|
+
// Build full message data
|
|
229
|
+
payload = {
|
|
230
|
+
id: message.id,
|
|
231
|
+
subject: message.subject,
|
|
232
|
+
from: (_message_from = message.from) === null || _message_from === void 0 ? void 0 : (_message_from_emailAddress = _message_from.emailAddress) === null || _message_from_emailAddress === void 0 ? void 0 : _message_from_emailAddress.address,
|
|
233
|
+
date: (0, _email.normalizeDateToISO)(message.receivedDateTime) || message.receivedDateTime,
|
|
234
|
+
snippet: message.bodyPreview,
|
|
235
|
+
body: bodyContent,
|
|
236
|
+
bodyContentType: contentType
|
|
237
|
+
};
|
|
238
|
+
// Filter based on requested fields
|
|
239
|
+
filteredPayload = (0, _server.filterFields)(payload, requestedFields);
|
|
240
|
+
logger.info('outlook.message.get success', {
|
|
241
|
+
id: payload.id,
|
|
242
|
+
subject: payload.subject,
|
|
243
|
+
from: payload.from,
|
|
244
|
+
date: payload.date,
|
|
245
|
+
fields: fields || 'all'
|
|
246
|
+
});
|
|
247
|
+
result = {
|
|
248
|
+
type: 'success',
|
|
249
|
+
item: filteredPayload
|
|
250
|
+
};
|
|
251
|
+
return [
|
|
252
|
+
2,
|
|
253
|
+
{
|
|
254
|
+
content: [
|
|
255
|
+
{
|
|
256
|
+
type: 'text',
|
|
257
|
+
text: JSON.stringify(result)
|
|
258
|
+
}
|
|
259
|
+
],
|
|
260
|
+
structuredContent: {
|
|
261
|
+
result: result
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
];
|
|
265
|
+
case 3:
|
|
266
|
+
error = _state.sent();
|
|
267
|
+
message1 = _instanceof(error, Error) ? error.message : String(error);
|
|
268
|
+
logger.error('outlook.message.get error', {
|
|
269
|
+
error: message1
|
|
270
|
+
});
|
|
271
|
+
throw new _types.McpError(_types.ErrorCode.InternalError, "Error getting message: ".concat(message1), {
|
|
272
|
+
stack: _instanceof(error, Error) ? error.stack : undefined
|
|
273
|
+
});
|
|
274
|
+
case 4:
|
|
275
|
+
return [
|
|
276
|
+
2
|
|
277
|
+
];
|
|
278
|
+
}
|
|
279
|
+
});
|
|
280
|
+
}).apply(this, arguments);
|
|
281
|
+
}
|
|
282
|
+
function createTool() {
|
|
283
|
+
return {
|
|
284
|
+
name: 'message-get',
|
|
285
|
+
config: config,
|
|
286
|
+
handler: handler
|
|
287
|
+
};
|
|
288
|
+
}
|
|
289
|
+
/* 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/mcp/tools/message-get.ts"],"sourcesContent":["import { EMAIL_COMMON_PATTERNS, EMAIL_FIELD_DESCRIPTIONS, EMAIL_FIELDS, EmailContentTypeSchema, EmailDetailSchema, ExcludeThreadHistorySchema, extractCurrentMessageFromHtml, extractCurrentMessageFromHtmlToText, normalizeDateToISO as toIsoUtc } from '@mcp-z/email';\nimport type { EnrichedExtra } from '@mcp-z/oauth-microsoft';\nimport { schemas } from '@mcp-z/oauth-microsoft';\n\nconst { AuthRequiredBranchSchema } = schemas;\n\nimport { createFieldsSchema, filterFields, parseFields, type ToolModule } from '@mcp-z/server';\nimport { Client } from '@microsoft/microsoft-graph-client';\nimport type * as MicrosoftGraph from '@microsoft/microsoft-graph-types';\nimport { type CallToolResult, ErrorCode, McpError } from '@modelcontextprotocol/sdk/types.js';\nimport { z } from 'zod';\n\nconst inputSchema = z.object({\n id: z.coerce.string().trim().min(1).describe('Outlook message ID to retrieve'),\n fields: createFieldsSchema({\n availableFields: EMAIL_FIELDS,\n fieldDescriptions: EMAIL_FIELD_DESCRIPTIONS,\n commonPatterns: EMAIL_COMMON_PATTERNS,\n resourceName: 'email message',\n }),\n contentType: EmailContentTypeSchema,\n excludeThreadHistory: ExcludeThreadHistorySchema,\n});\n\n// Success branch schema - uses item: wrapper for consistency with standard vocabulary\nconst successBranchSchema = z.object({\n type: z.literal('success'),\n item: EmailDetailSchema,\n});\n\n// Output schema with auth_required support\nconst outputSchema = z.discriminatedUnion('type', [successBranchSchema, AuthRequiredBranchSchema]);\n\nconst config = {\n description: 'Get an Outlook message by ID with flexible field selection',\n inputSchema: inputSchema,\n outputSchema: z.object({\n result: outputSchema,\n }),\n} as const;\n\nexport type Input = z.infer<typeof inputSchema>;\nexport type Output = z.infer<typeof outputSchema>;\n\nasync function handler({ id, fields, contentType, excludeThreadHistory }: Input, extra: EnrichedExtra): Promise<CallToolResult> {\n const logger = extra.logger;\n\n const requestedFields = parseFields(fields, EMAIL_FIELDS);\n\n logger.info('outlook.message.get called', { id, fields: fields || 'all' });\n\n if (!id) {\n logger.info('outlook.message.get missing id');\n throw new McpError(ErrorCode.InvalidParams, 'Missing id');\n }\n\n try {\n const graph = Client.initWithMiddleware({ authProvider: extra.authContext.auth });\n const message = (await graph.api(`/me/messages/${encodeURIComponent(id)}`).get()) as MicrosoftGraph.Message;\n\n // Process body based on contentType and excludeThreadHistory options\n let bodyContent = message.body?.content ?? '';\n const isHtml = message.body?.contentType?.toLowerCase() === 'html';\n\n if (isHtml && excludeThreadHistory) {\n // Remove thread history from HTML\n bodyContent = extractCurrentMessageFromHtml(bodyContent);\n }\n\n if (isHtml && contentType === 'text') {\n // Convert HTML to plain text (thread extraction happens inside if excludeThreadHistory was true)\n bodyContent = excludeThreadHistory ? extractCurrentMessageFromHtmlToText(bodyContent) : extractCurrentMessageFromHtmlToText(message.body?.content ?? '');\n }\n\n // Build full message data\n const payload = {\n id: message.id,\n subject: message.subject,\n from: message.from?.emailAddress?.address,\n date: toIsoUtc(message.receivedDateTime) || message.receivedDateTime,\n snippet: message.bodyPreview,\n body: bodyContent,\n bodyContentType: contentType,\n };\n\n // Filter based on requested fields\n const filteredPayload = filterFields(payload, requestedFields);\n\n logger.info('outlook.message.get success', { id: payload.id, subject: payload.subject, from: payload.from, date: payload.date, fields: fields || 'all' });\n\n const result: Output = {\n type: 'success' as const,\n item: filteredPayload as z.infer<typeof EmailDetailSchema>,\n };\n\n return {\n content: [\n {\n type: 'text' as const,\n text: JSON.stringify(result),\n },\n ],\n structuredContent: { result },\n };\n } catch (error) {\n const message = error instanceof Error ? error.message : String(error);\n logger.error('outlook.message.get error', { error: message });\n\n throw new McpError(ErrorCode.InternalError, `Error getting message: ${message}`, {\n stack: error instanceof Error ? error.stack : undefined,\n });\n }\n}\n\nexport default function createTool() {\n return {\n name: 'message-get',\n config,\n handler,\n } satisfies ToolModule;\n}\n"],"names":["createTool","AuthRequiredBranchSchema","schemas","inputSchema","z","object","id","coerce","string","trim","min","describe","fields","createFieldsSchema","availableFields","EMAIL_FIELDS","fieldDescriptions","EMAIL_FIELD_DESCRIPTIONS","commonPatterns","EMAIL_COMMON_PATTERNS","resourceName","contentType","EmailContentTypeSchema","excludeThreadHistory","ExcludeThreadHistorySchema","successBranchSchema","type","literal","item","EmailDetailSchema","outputSchema","discriminatedUnion","config","description","result","handler","extra","logger","requestedFields","message","graph","bodyContent","isHtml","payload","filteredPayload","error","parseFields","info","McpError","ErrorCode","InvalidParams","Client","initWithMiddleware","authProvider","authContext","auth","api","encodeURIComponent","get","body","content","toLowerCase","extractCurrentMessageFromHtml","extractCurrentMessageFromHtmlToText","subject","from","emailAddress","address","date","toIsoUtc","receivedDateTime","snippet","bodyPreview","bodyContentType","filterFields","text","JSON","stringify","structuredContent","Error","String","InternalError","stack","undefined","name"],"mappings":"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"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import type { EnrichedExtra } from '@mcp-z/oauth-microsoft';
|
|
2
|
+
import { type CallToolResult } from '@modelcontextprotocol/sdk/types.js';
|
|
3
|
+
import { z } from 'zod';
|
|
4
|
+
declare const inputSchema: z.ZodObject<{
|
|
5
|
+
id: z.ZodCoercedString<unknown>;
|
|
6
|
+
}, z.core.$strip>;
|
|
7
|
+
declare const outputSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
8
|
+
success: z.ZodBoolean;
|
|
9
|
+
id: z.ZodOptional<z.ZodString>;
|
|
10
|
+
type: z.ZodLiteral<"success">;
|
|
11
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
12
|
+
type: z.ZodLiteral<"auth_required">;
|
|
13
|
+
provider: z.ZodString;
|
|
14
|
+
message: z.ZodString;
|
|
15
|
+
url: z.ZodOptional<z.ZodString>;
|
|
16
|
+
}, z.core.$strip>], "type">;
|
|
17
|
+
export type Input = z.infer<typeof inputSchema>;
|
|
18
|
+
export type Output = z.infer<typeof outputSchema>;
|
|
19
|
+
declare function handler({ id }: Input, extra: EnrichedExtra): Promise<CallToolResult>;
|
|
20
|
+
export default function createTool(): {
|
|
21
|
+
name: string;
|
|
22
|
+
config: {
|
|
23
|
+
readonly description: "Mark an Outlook message as read";
|
|
24
|
+
readonly inputSchema: z.ZodObject<{
|
|
25
|
+
id: z.ZodCoercedString<unknown>;
|
|
26
|
+
}, z.core.$strip>;
|
|
27
|
+
readonly outputSchema: z.ZodObject<{
|
|
28
|
+
result: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
29
|
+
success: z.ZodBoolean;
|
|
30
|
+
id: z.ZodOptional<z.ZodString>;
|
|
31
|
+
type: z.ZodLiteral<"success">;
|
|
32
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
33
|
+
type: z.ZodLiteral<"auth_required">;
|
|
34
|
+
provider: z.ZodString;
|
|
35
|
+
message: z.ZodString;
|
|
36
|
+
url: z.ZodOptional<z.ZodString>;
|
|
37
|
+
}, z.core.$strip>], "type">;
|
|
38
|
+
}, z.core.$strip>;
|
|
39
|
+
};
|
|
40
|
+
handler: typeof handler;
|
|
41
|
+
};
|
|
42
|
+
export {};
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import type { EnrichedExtra } from '@mcp-z/oauth-microsoft';
|
|
2
|
+
import { type CallToolResult } from '@modelcontextprotocol/sdk/types.js';
|
|
3
|
+
import { z } from 'zod';
|
|
4
|
+
declare const inputSchema: z.ZodObject<{
|
|
5
|
+
id: z.ZodCoercedString<unknown>;
|
|
6
|
+
}, z.core.$strip>;
|
|
7
|
+
declare const outputSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
8
|
+
success: z.ZodBoolean;
|
|
9
|
+
id: z.ZodOptional<z.ZodString>;
|
|
10
|
+
type: z.ZodLiteral<"success">;
|
|
11
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
12
|
+
type: z.ZodLiteral<"auth_required">;
|
|
13
|
+
provider: z.ZodString;
|
|
14
|
+
message: z.ZodString;
|
|
15
|
+
url: z.ZodOptional<z.ZodString>;
|
|
16
|
+
}, z.core.$strip>], "type">;
|
|
17
|
+
export type Input = z.infer<typeof inputSchema>;
|
|
18
|
+
export type Output = z.infer<typeof outputSchema>;
|
|
19
|
+
declare function handler({ id }: Input, extra: EnrichedExtra): Promise<CallToolResult>;
|
|
20
|
+
export default function createTool(): {
|
|
21
|
+
name: string;
|
|
22
|
+
config: {
|
|
23
|
+
readonly description: "Mark an Outlook message as read";
|
|
24
|
+
readonly inputSchema: z.ZodObject<{
|
|
25
|
+
id: z.ZodCoercedString<unknown>;
|
|
26
|
+
}, z.core.$strip>;
|
|
27
|
+
readonly outputSchema: z.ZodObject<{
|
|
28
|
+
result: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
29
|
+
success: z.ZodBoolean;
|
|
30
|
+
id: z.ZodOptional<z.ZodString>;
|
|
31
|
+
type: z.ZodLiteral<"success">;
|
|
32
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
33
|
+
type: z.ZodLiteral<"auth_required">;
|
|
34
|
+
provider: z.ZodString;
|
|
35
|
+
message: z.ZodString;
|
|
36
|
+
url: z.ZodOptional<z.ZodString>;
|
|
37
|
+
}, z.core.$strip>], "type">;
|
|
38
|
+
}, z.core.$strip>;
|
|
39
|
+
};
|
|
40
|
+
handler: typeof handler;
|
|
41
|
+
};
|
|
42
|
+
export {};
|
|
@@ -0,0 +1,254 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
Object.defineProperty(exports, "default", {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: function() {
|
|
8
|
+
return createTool;
|
|
9
|
+
}
|
|
10
|
+
});
|
|
11
|
+
var _oauthmicrosoft = require("@mcp-z/oauth-microsoft");
|
|
12
|
+
var _microsoftgraphclient = require("@microsoft/microsoft-graph-client");
|
|
13
|
+
var _types = require("@modelcontextprotocol/sdk/types.js");
|
|
14
|
+
var _zod = require("zod");
|
|
15
|
+
function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
|
|
16
|
+
try {
|
|
17
|
+
var info = gen[key](arg);
|
|
18
|
+
var value = info.value;
|
|
19
|
+
} catch (error) {
|
|
20
|
+
reject(error);
|
|
21
|
+
return;
|
|
22
|
+
}
|
|
23
|
+
if (info.done) {
|
|
24
|
+
resolve(value);
|
|
25
|
+
} else {
|
|
26
|
+
Promise.resolve(value).then(_next, _throw);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
function _async_to_generator(fn) {
|
|
30
|
+
return function() {
|
|
31
|
+
var self = this, args = arguments;
|
|
32
|
+
return new Promise(function(resolve, reject) {
|
|
33
|
+
var gen = fn.apply(self, args);
|
|
34
|
+
function _next(value) {
|
|
35
|
+
asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value);
|
|
36
|
+
}
|
|
37
|
+
function _throw(err) {
|
|
38
|
+
asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err);
|
|
39
|
+
}
|
|
40
|
+
_next(undefined);
|
|
41
|
+
});
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
function _instanceof(left, right) {
|
|
45
|
+
if (right != null && typeof Symbol !== "undefined" && right[Symbol.hasInstance]) {
|
|
46
|
+
return !!right[Symbol.hasInstance](left);
|
|
47
|
+
} else {
|
|
48
|
+
return left instanceof right;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
function _ts_generator(thisArg, body) {
|
|
52
|
+
var f, y, t, _ = {
|
|
53
|
+
label: 0,
|
|
54
|
+
sent: function() {
|
|
55
|
+
if (t[0] & 1) throw t[1];
|
|
56
|
+
return t[1];
|
|
57
|
+
},
|
|
58
|
+
trys: [],
|
|
59
|
+
ops: []
|
|
60
|
+
}, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype), d = Object.defineProperty;
|
|
61
|
+
return d(g, "next", {
|
|
62
|
+
value: verb(0)
|
|
63
|
+
}), d(g, "throw", {
|
|
64
|
+
value: verb(1)
|
|
65
|
+
}), d(g, "return", {
|
|
66
|
+
value: verb(2)
|
|
67
|
+
}), typeof Symbol === "function" && d(g, Symbol.iterator, {
|
|
68
|
+
value: function() {
|
|
69
|
+
return this;
|
|
70
|
+
}
|
|
71
|
+
}), g;
|
|
72
|
+
function verb(n) {
|
|
73
|
+
return function(v) {
|
|
74
|
+
return step([
|
|
75
|
+
n,
|
|
76
|
+
v
|
|
77
|
+
]);
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
function step(op) {
|
|
81
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
82
|
+
while(g && (g = 0, op[0] && (_ = 0)), _)try {
|
|
83
|
+
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
84
|
+
if (y = 0, t) op = [
|
|
85
|
+
op[0] & 2,
|
|
86
|
+
t.value
|
|
87
|
+
];
|
|
88
|
+
switch(op[0]){
|
|
89
|
+
case 0:
|
|
90
|
+
case 1:
|
|
91
|
+
t = op;
|
|
92
|
+
break;
|
|
93
|
+
case 4:
|
|
94
|
+
_.label++;
|
|
95
|
+
return {
|
|
96
|
+
value: op[1],
|
|
97
|
+
done: false
|
|
98
|
+
};
|
|
99
|
+
case 5:
|
|
100
|
+
_.label++;
|
|
101
|
+
y = op[1];
|
|
102
|
+
op = [
|
|
103
|
+
0
|
|
104
|
+
];
|
|
105
|
+
continue;
|
|
106
|
+
case 7:
|
|
107
|
+
op = _.ops.pop();
|
|
108
|
+
_.trys.pop();
|
|
109
|
+
continue;
|
|
110
|
+
default:
|
|
111
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {
|
|
112
|
+
_ = 0;
|
|
113
|
+
continue;
|
|
114
|
+
}
|
|
115
|
+
if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {
|
|
116
|
+
_.label = op[1];
|
|
117
|
+
break;
|
|
118
|
+
}
|
|
119
|
+
if (op[0] === 6 && _.label < t[1]) {
|
|
120
|
+
_.label = t[1];
|
|
121
|
+
t = op;
|
|
122
|
+
break;
|
|
123
|
+
}
|
|
124
|
+
if (t && _.label < t[2]) {
|
|
125
|
+
_.label = t[2];
|
|
126
|
+
_.ops.push(op);
|
|
127
|
+
break;
|
|
128
|
+
}
|
|
129
|
+
if (t[2]) _.ops.pop();
|
|
130
|
+
_.trys.pop();
|
|
131
|
+
continue;
|
|
132
|
+
}
|
|
133
|
+
op = body.call(thisArg, _);
|
|
134
|
+
} catch (e) {
|
|
135
|
+
op = [
|
|
136
|
+
6,
|
|
137
|
+
e
|
|
138
|
+
];
|
|
139
|
+
y = 0;
|
|
140
|
+
} finally{
|
|
141
|
+
f = t = 0;
|
|
142
|
+
}
|
|
143
|
+
if (op[0] & 5) throw op[1];
|
|
144
|
+
return {
|
|
145
|
+
value: op[0] ? op[1] : void 0,
|
|
146
|
+
done: true
|
|
147
|
+
};
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
var AuthRequiredBranchSchema = _oauthmicrosoft.schemas.AuthRequiredBranchSchema;
|
|
151
|
+
var SuccessSchema = _zod.z.object({
|
|
152
|
+
success: _zod.z.boolean().describe('Whether the operation completed successfully'),
|
|
153
|
+
id: _zod.z.string().optional().describe('Message ID that was marked as read')
|
|
154
|
+
});
|
|
155
|
+
var inputSchema = _zod.z.object({
|
|
156
|
+
id: _zod.z.coerce.string().trim().min(1).describe('Outlook message ID to mark as read')
|
|
157
|
+
});
|
|
158
|
+
// Success branch schema
|
|
159
|
+
var successBranchSchema = SuccessSchema.extend({
|
|
160
|
+
type: _zod.z.literal('success')
|
|
161
|
+
});
|
|
162
|
+
// Output schema with auth_required support
|
|
163
|
+
var outputSchema = _zod.z.discriminatedUnion('type', [
|
|
164
|
+
successBranchSchema,
|
|
165
|
+
AuthRequiredBranchSchema
|
|
166
|
+
]);
|
|
167
|
+
var config = {
|
|
168
|
+
description: 'Mark an Outlook message as read',
|
|
169
|
+
inputSchema: inputSchema,
|
|
170
|
+
outputSchema: _zod.z.object({
|
|
171
|
+
result: outputSchema
|
|
172
|
+
})
|
|
173
|
+
};
|
|
174
|
+
function handler(_0, _1) {
|
|
175
|
+
return _async_to_generator(function(param, extra) {
|
|
176
|
+
var id, logger, graph, result, error, message;
|
|
177
|
+
return _ts_generator(this, function(_state) {
|
|
178
|
+
switch(_state.label){
|
|
179
|
+
case 0:
|
|
180
|
+
id = param.id;
|
|
181
|
+
logger = extra.logger;
|
|
182
|
+
logger.info('outlook-message-mark-read called', {
|
|
183
|
+
id: id
|
|
184
|
+
});
|
|
185
|
+
if (!id) {
|
|
186
|
+
logger.info('outlook-message-mark-read missing id');
|
|
187
|
+
throw new _types.McpError(_types.ErrorCode.InvalidParams, 'Missing id');
|
|
188
|
+
}
|
|
189
|
+
_state.label = 1;
|
|
190
|
+
case 1:
|
|
191
|
+
_state.trys.push([
|
|
192
|
+
1,
|
|
193
|
+
3,
|
|
194
|
+
,
|
|
195
|
+
4
|
|
196
|
+
]);
|
|
197
|
+
graph = _microsoftgraphclient.Client.initWithMiddleware({
|
|
198
|
+
authProvider: extra.authContext.auth
|
|
199
|
+
});
|
|
200
|
+
return [
|
|
201
|
+
4,
|
|
202
|
+
graph.api("/me/messages/".concat(encodeURIComponent(id))).update({
|
|
203
|
+
isRead: true
|
|
204
|
+
})
|
|
205
|
+
];
|
|
206
|
+
case 2:
|
|
207
|
+
_state.sent();
|
|
208
|
+
logger.info('outlook-message-mark-read success', {
|
|
209
|
+
id: id
|
|
210
|
+
});
|
|
211
|
+
result = {
|
|
212
|
+
type: 'success',
|
|
213
|
+
success: true,
|
|
214
|
+
id: id
|
|
215
|
+
};
|
|
216
|
+
return [
|
|
217
|
+
2,
|
|
218
|
+
{
|
|
219
|
+
content: [
|
|
220
|
+
{
|
|
221
|
+
type: 'text',
|
|
222
|
+
text: JSON.stringify(result)
|
|
223
|
+
}
|
|
224
|
+
],
|
|
225
|
+
structuredContent: {
|
|
226
|
+
result: result
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
];
|
|
230
|
+
case 3:
|
|
231
|
+
error = _state.sent();
|
|
232
|
+
message = _instanceof(error, Error) ? error.message : String(error);
|
|
233
|
+
logger.error('outlook-message-mark-read error', {
|
|
234
|
+
error: message
|
|
235
|
+
});
|
|
236
|
+
throw new _types.McpError(_types.ErrorCode.InternalError, "Error marking message as read: ".concat(message), {
|
|
237
|
+
stack: _instanceof(error, Error) ? error.stack : undefined
|
|
238
|
+
});
|
|
239
|
+
case 4:
|
|
240
|
+
return [
|
|
241
|
+
2
|
|
242
|
+
];
|
|
243
|
+
}
|
|
244
|
+
});
|
|
245
|
+
}).apply(this, arguments);
|
|
246
|
+
}
|
|
247
|
+
function createTool() {
|
|
248
|
+
return {
|
|
249
|
+
name: 'message-mark-read',
|
|
250
|
+
config: config,
|
|
251
|
+
handler: handler
|
|
252
|
+
};
|
|
253
|
+
}
|
|
254
|
+
/* 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/mcp/tools/message-mark-read.ts"],"sourcesContent":["import type { EnrichedExtra } from '@mcp-z/oauth-microsoft';\nimport { schemas } from '@mcp-z/oauth-microsoft';\n\nconst { AuthRequiredBranchSchema } = schemas;\n\nimport type { ToolModule } from '@mcp-z/server';\nimport { Client } from '@microsoft/microsoft-graph-client';\nimport { type CallToolResult, ErrorCode, McpError } from '@modelcontextprotocol/sdk/types.js';\nimport { z } from 'zod';\n\nconst SuccessSchema = z.object({\n success: z.boolean().describe('Whether the operation completed successfully'),\n id: z.string().optional().describe('Message ID that was marked as read'),\n});\n\nconst inputSchema = z.object({\n id: z.coerce.string().trim().min(1).describe('Outlook message ID to mark as read'),\n});\n\n// Success branch schema\nconst successBranchSchema = SuccessSchema.extend({\n type: z.literal('success'),\n});\n\n// Output schema with auth_required support\nconst outputSchema = z.discriminatedUnion('type', [successBranchSchema, AuthRequiredBranchSchema]);\n\nconst config = {\n description: 'Mark an Outlook message as read',\n inputSchema: inputSchema,\n outputSchema: z.object({\n result: outputSchema,\n }),\n} as const;\n\nexport type Input = z.infer<typeof inputSchema>;\nexport type Output = z.infer<typeof outputSchema>;\n\nasync function handler({ id }: Input, extra: EnrichedExtra): Promise<CallToolResult> {\n const logger = extra.logger;\n logger.info('outlook-message-mark-read called', { id });\n\n if (!id) {\n logger.info('outlook-message-mark-read missing id');\n throw new McpError(ErrorCode.InvalidParams, 'Missing id');\n }\n\n try {\n const graph = Client.initWithMiddleware({ authProvider: extra.authContext.auth });\n await graph.api(`/me/messages/${encodeURIComponent(id)}`).update({ isRead: true });\n\n logger.info('outlook-message-mark-read success', { id });\n\n const result: Output = {\n type: 'success' as const,\n success: true,\n id,\n };\n\n return {\n content: [\n {\n type: 'text' as const,\n text: JSON.stringify(result),\n },\n ],\n structuredContent: { result },\n };\n } catch (error) {\n const message = error instanceof Error ? error.message : String(error);\n logger.error('outlook-message-mark-read error', { error: message });\n\n throw new McpError(ErrorCode.InternalError, `Error marking message as read: ${message}`, {\n stack: error instanceof Error ? error.stack : undefined,\n });\n }\n}\n\nexport default function createTool() {\n return {\n name: 'message-mark-read',\n config,\n handler,\n } satisfies ToolModule;\n}\n"],"names":["createTool","AuthRequiredBranchSchema","schemas","SuccessSchema","z","object","success","boolean","describe","id","string","optional","inputSchema","coerce","trim","min","successBranchSchema","extend","type","literal","outputSchema","discriminatedUnion","config","description","result","handler","extra","logger","graph","error","message","info","McpError","ErrorCode","InvalidParams","Client","initWithMiddleware","authProvider","authContext","auth","api","encodeURIComponent","update","isRead","content","text","JSON","stringify","structuredContent","Error","String","InternalError","stack","undefined","name"],"mappings":";;;;+BA8EA;;;eAAwBA;;;8BA7EA;oCAKD;qBACkC;mBACvC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AALlB,IAAM,AAAEC,2BAA6BC,uBAAO,CAApCD;AAOR,IAAME,gBAAgBC,MAAC,CAACC,MAAM,CAAC;IAC7BC,SAASF,MAAC,CAACG,OAAO,GAAGC,QAAQ,CAAC;IAC9BC,IAAIL,MAAC,CAACM,MAAM,GAAGC,QAAQ,GAAGH,QAAQ,CAAC;AACrC;AAEA,IAAMI,cAAcR,MAAC,CAACC,MAAM,CAAC;IAC3BI,IAAIL,MAAC,CAACS,MAAM,CAACH,MAAM,GAAGI,IAAI,GAAGC,GAAG,CAAC,GAAGP,QAAQ,CAAC;AAC/C;AAEA,wBAAwB;AACxB,IAAMQ,sBAAsBb,cAAcc,MAAM,CAAC;IAC/CC,MAAMd,MAAC,CAACe,OAAO,CAAC;AAClB;AAEA,2CAA2C;AAC3C,IAAMC,eAAehB,MAAC,CAACiB,kBAAkB,CAAC,QAAQ;IAACL;IAAqBf;CAAyB;AAEjG,IAAMqB,SAAS;IACbC,aAAa;IACbX,aAAaA;IACbQ,cAAchB,MAAC,CAACC,MAAM,CAAC;QACrBmB,QAAQJ;IACV;AACF;AAKA,SAAeK;wCAAQ,KAAa,EAAEC,KAAoB;YAAjCjB,IACjBkB,QASEC,OAKAJ,QAeCK,OACDC;;;;oBA/BerB,KAAF,MAAEA;oBACjBkB,SAASD,MAAMC,MAAM;oBAC3BA,OAAOI,IAAI,CAAC,oCAAoC;wBAAEtB,IAAAA;oBAAG;oBAErD,IAAI,CAACA,IAAI;wBACPkB,OAAOI,IAAI,CAAC;wBACZ,MAAM,IAAIC,eAAQ,CAACC,gBAAS,CAACC,aAAa,EAAE;oBAC9C;;;;;;;;;oBAGQN,QAAQO,4BAAM,CAACC,kBAAkB,CAAC;wBAAEC,cAAcX,MAAMY,WAAW,CAACC,IAAI;oBAAC;oBAC/E;;wBAAMX,MAAMY,GAAG,CAAC,AAAC,gBAAsC,OAAvBC,mBAAmBhC,MAAOiC,MAAM,CAAC;4BAAEC,QAAQ;wBAAK;;;oBAAhF;oBAEAhB,OAAOI,IAAI,CAAC,qCAAqC;wBAAEtB,IAAAA;oBAAG;oBAEhDe,SAAiB;wBACrBN,MAAM;wBACNZ,SAAS;wBACTG,IAAAA;oBACF;oBAEA;;wBAAO;4BACLmC,OAAO;gCACL;oCACE1B,MAAM;oCACN2B,MAAMC,KAAKC,SAAS,CAACvB;gCACvB;;4BAEFwB,mBAAmB;gCAAExB,QAAAA;4BAAO;wBAC9B;;;oBACOK;oBACDC,UAAUD,AAAK,YAALA,OAAiBoB,SAAQpB,MAAMC,OAAO,GAAGoB,OAAOrB;oBAChEF,OAAOE,KAAK,CAAC,mCAAmC;wBAAEA,OAAOC;oBAAQ;oBAEjE,MAAM,IAAIE,eAAQ,CAACC,gBAAS,CAACkB,aAAa,EAAE,AAAC,kCAAyC,OAARrB,UAAW;wBACvFsB,OAAOvB,AAAK,YAALA,OAAiBoB,SAAQpB,MAAMuB,KAAK,GAAGC;oBAChD;;;;;;;IAEJ;;AAEe,SAASrD;IACtB,OAAO;QACLsD,MAAM;QACNhC,QAAAA;QACAG,SAAAA;IACF;AACF"}
|