@mcp-z/mcp-outlook 1.1.2 → 1.1.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +5 -1
- package/dist/cjs/setup/http.js +27 -16
- package/dist/cjs/setup/http.js.map +1 -1
- package/dist/esm/setup/http.js +21 -10
- package/dist/esm/setup/http.js.map +1 -1
- package/package.json +3 -9
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# @mcp-z/mcp-outlook
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
MCP server for Outlook integration with OAuth authentication, message search, and batch operations
|
|
4
4
|
|
|
5
5
|
## Common uses
|
|
6
6
|
|
|
@@ -206,3 +206,7 @@ TOKEN_STORE_URI=redis://localhost:6379 mcp-outlook
|
|
|
206
206
|
```
|
|
207
207
|
|
|
208
208
|
A protocol whose adapter is missing fails at startup naming the package to install.
|
|
209
|
+
|
|
210
|
+
### Documentation
|
|
211
|
+
|
|
212
|
+
[API Docs](https://mcp-z.github.io/mcp-outlook)
|
package/dist/cjs/setup/http.js
CHANGED
|
@@ -172,7 +172,7 @@ function _unsupported_iterable_to_array(o, minLen) {
|
|
|
172
172
|
}
|
|
173
173
|
function createHTTPServer(config, overrides) {
|
|
174
174
|
return _async_to_generator(function() {
|
|
175
|
-
var runtime, modules, layers, composed, logger, port, tools, filteredTools, prompts, mcpServer, app,
|
|
175
|
+
var runtime, modules, layers, composed, logger, port, tools, filteredTools, prompts, mcpServer, app, publicUrl, _ref, close, httpServer, fileRouter;
|
|
176
176
|
return _ts_generator(this, function(_state) {
|
|
177
177
|
switch(_state.label){
|
|
178
178
|
case 0:
|
|
@@ -204,12 +204,34 @@ function createHTTPServer(config, overrides) {
|
|
|
204
204
|
(0, _server.registerResources)(mcpServer, composed.resources);
|
|
205
205
|
(0, _server.registerPrompts)(mcpServer, prompts);
|
|
206
206
|
app = (0, _express.default)();
|
|
207
|
-
app.use((0, _cors.default)());
|
|
208
207
|
app.use(_express.default.json({
|
|
209
208
|
limit: '10mb'
|
|
210
209
|
}));
|
|
210
|
+
// Must mount '/mcp' before any permissive app-level cors(), or that layer answers its
|
|
211
|
+
// preflight first; pass baseUrl's origin/host below or a public deployment 403s itself.
|
|
212
|
+
publicUrl = config.baseUrl ? new URL(config.baseUrl) : undefined;
|
|
213
|
+
logger.info("Starting ".concat(config.name, " MCP server (http)"));
|
|
214
|
+
return [
|
|
215
|
+
4,
|
|
216
|
+
(0, _server.connectHttp)(mcpServer, {
|
|
217
|
+
logger: logger,
|
|
218
|
+
app: app,
|
|
219
|
+
port: port,
|
|
220
|
+
allowedOrigins: publicUrl ? [
|
|
221
|
+
publicUrl.origin
|
|
222
|
+
] : undefined,
|
|
223
|
+
allowedHosts: publicUrl ? [
|
|
224
|
+
publicUrl.host
|
|
225
|
+
] : undefined
|
|
226
|
+
})
|
|
227
|
+
];
|
|
228
|
+
case 2:
|
|
229
|
+
_ref = _state.sent(), close = _ref.close, httpServer = _ref.httpServer;
|
|
230
|
+
// The loopback OAuth callback, the file-export download, and the DCR discovery/
|
|
231
|
+
// registration endpoints are all meant to be reached from a browser on another
|
|
232
|
+
// origin. Keep cors() for them, scoped to their own routes - never in front of '/mcp'.
|
|
211
233
|
if (runtime.deps.oauthAdapters.loopbackRouter) {
|
|
212
|
-
app.use('/', runtime.deps.oauthAdapters.loopbackRouter);
|
|
234
|
+
app.use('/', (0, _cors.default)(), runtime.deps.oauthAdapters.loopbackRouter);
|
|
213
235
|
logger.info('Mounted loopback OAuth callback router');
|
|
214
236
|
}
|
|
215
237
|
if (config.auth !== 'dcr') {
|
|
@@ -219,23 +241,12 @@ function createHTTPServer(config, overrides) {
|
|
|
219
241
|
contentType: 'text/csv',
|
|
220
242
|
contentDisposition: 'attachment'
|
|
221
243
|
});
|
|
222
|
-
app.use('/files', fileRouter);
|
|
244
|
+
app.use('/files', (0, _cors.default)(), fileRouter);
|
|
223
245
|
}
|
|
224
246
|
if (runtime.deps.oauthAdapters.dcrRouter) {
|
|
225
|
-
app.use('/', runtime.deps.oauthAdapters.dcrRouter);
|
|
247
|
+
app.use('/', (0, _cors.default)(), runtime.deps.oauthAdapters.dcrRouter);
|
|
226
248
|
logger.info('Mounted DCR router with OAuth endpoints');
|
|
227
249
|
}
|
|
228
|
-
logger.info("Starting ".concat(config.name, " MCP server (http)"));
|
|
229
|
-
return [
|
|
230
|
-
4,
|
|
231
|
-
(0, _server.connectHttp)(mcpServer, {
|
|
232
|
-
logger: logger,
|
|
233
|
-
app: app,
|
|
234
|
-
port: port
|
|
235
|
-
})
|
|
236
|
-
];
|
|
237
|
-
case 2:
|
|
238
|
-
_ref = _state.sent(), close = _ref.close, httpServer = _ref.httpServer;
|
|
239
250
|
logger.info('http transport ready');
|
|
240
251
|
return [
|
|
241
252
|
2,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/ai/mcp-z/mcp-outlook/src/setup/http.ts"],"sourcesContent":["import { composeMiddleware, connectHttp, createFileServingRouter, registerPrompts, registerResources, registerTools } from '@mcp-z/server';\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport cors from 'cors';\nimport express from 'express';\nimport type { RuntimeOverrides, ServerConfig } from '../types.ts';\nimport { createDefaultRuntime } from './runtime.ts';\n\nexport async function createHTTPServer(config: ServerConfig, overrides?: RuntimeOverrides) {\n const runtime = await createDefaultRuntime(config, overrides);\n const modules = runtime.createDomainModules();\n const layers = runtime.middlewareFactories.map((factory) => factory(runtime.deps));\n const composed = composeMiddleware(modules, layers);\n const logger = runtime.deps.logger;\n const port = config.transport.port;\n if (!port) throw new Error('Port is required for HTTP transport');\n\n const tools = [...composed.tools, ...runtime.deps.oauthAdapters.accountTools];\n const filteredTools =\n config.auth === 'dcr'\n ? tools.filter((tool) => tool.name !== 'messages-export-csv') // No file storage in DCR (public cloud responsibility)\n : tools;\n const prompts = [...composed.prompts, ...runtime.deps.oauthAdapters.accountPrompts];\n\n const mcpServer = new McpServer({ name: config.name, version: config.version });\n registerTools(mcpServer, filteredTools);\n registerResources(mcpServer, composed.resources);\n registerPrompts(mcpServer, prompts);\n\n const app = express();\n app.use(
|
|
1
|
+
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/ai/mcp-z/mcp-outlook/src/setup/http.ts"],"sourcesContent":["import { composeMiddleware, connectHttp, createFileServingRouter, registerPrompts, registerResources, registerTools } from '@mcp-z/server';\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport cors from 'cors';\nimport express from 'express';\nimport type { RuntimeOverrides, ServerConfig } from '../types.ts';\nimport { createDefaultRuntime } from './runtime.ts';\n\nexport async function createHTTPServer(config: ServerConfig, overrides?: RuntimeOverrides) {\n const runtime = await createDefaultRuntime(config, overrides);\n const modules = runtime.createDomainModules();\n const layers = runtime.middlewareFactories.map((factory) => factory(runtime.deps));\n const composed = composeMiddleware(modules, layers);\n const logger = runtime.deps.logger;\n const port = config.transport.port;\n if (!port) throw new Error('Port is required for HTTP transport');\n\n const tools = [...composed.tools, ...runtime.deps.oauthAdapters.accountTools];\n const filteredTools =\n config.auth === 'dcr'\n ? tools.filter((tool) => tool.name !== 'messages-export-csv') // No file storage in DCR (public cloud responsibility)\n : tools;\n const prompts = [...composed.prompts, ...runtime.deps.oauthAdapters.accountPrompts];\n\n const mcpServer = new McpServer({ name: config.name, version: config.version });\n registerTools(mcpServer, filteredTools);\n registerResources(mcpServer, composed.resources);\n registerPrompts(mcpServer, prompts);\n\n const app = express();\n app.use(express.json({ limit: '10mb' }));\n\n // Must mount '/mcp' before any permissive app-level cors(), or that layer answers its\n // preflight first; pass baseUrl's origin/host below or a public deployment 403s itself.\n const publicUrl = config.baseUrl ? new URL(config.baseUrl) : undefined;\n logger.info(`Starting ${config.name} MCP server (http)`);\n const { close, httpServer } = await connectHttp(mcpServer, {\n logger,\n app,\n port,\n allowedOrigins: publicUrl ? [publicUrl.origin] : undefined,\n allowedHosts: publicUrl ? [publicUrl.host] : undefined,\n });\n\n // The loopback OAuth callback, the file-export download, and the DCR discovery/\n // registration endpoints are all meant to be reached from a browser on another\n // origin. Keep cors() for them, scoped to their own routes - never in front of '/mcp'.\n if (runtime.deps.oauthAdapters.loopbackRouter) {\n app.use('/', cors(), runtime.deps.oauthAdapters.loopbackRouter);\n logger.info('Mounted loopback OAuth callback router');\n }\n\n if (config.auth !== 'dcr') {\n const fileRouter = createFileServingRouter({ resourceStoreUri: config.resourceStoreUri }, { contentType: 'text/csv', contentDisposition: 'attachment' });\n app.use('/files', cors(), fileRouter);\n }\n\n if (runtime.deps.oauthAdapters.dcrRouter) {\n app.use('/', cors(), runtime.deps.oauthAdapters.dcrRouter);\n logger.info('Mounted DCR router with OAuth endpoints');\n }\n\n logger.info('http transport ready');\n\n return {\n httpServer,\n mcpServer,\n logger,\n close: async () => {\n await close();\n await runtime.close();\n },\n };\n}\n"],"names":["createHTTPServer","config","overrides","runtime","modules","layers","composed","logger","port","tools","filteredTools","prompts","mcpServer","app","publicUrl","close","httpServer","fileRouter","createDefaultRuntime","createDomainModules","middlewareFactories","map","factory","deps","composeMiddleware","transport","Error","oauthAdapters","accountTools","auth","filter","tool","name","accountPrompts","McpServer","version","registerTools","registerResources","resources","registerPrompts","express","use","json","limit","baseUrl","URL","undefined","info","connectHttp","allowedOrigins","origin","allowedHosts","host","loopbackRouter","cors","createFileServingRouter","resourceStoreUri","contentType","contentDisposition","dcrRouter"],"mappings":"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"}
|
package/dist/esm/setup/http.js
CHANGED
|
@@ -29,12 +29,29 @@ export async function createHTTPServer(config, overrides) {
|
|
|
29
29
|
registerResources(mcpServer, composed.resources);
|
|
30
30
|
registerPrompts(mcpServer, prompts);
|
|
31
31
|
const app = express();
|
|
32
|
-
app.use(cors());
|
|
33
32
|
app.use(express.json({
|
|
34
33
|
limit: '10mb'
|
|
35
34
|
}));
|
|
35
|
+
// Must mount '/mcp' before any permissive app-level cors(), or that layer answers its
|
|
36
|
+
// preflight first; pass baseUrl's origin/host below or a public deployment 403s itself.
|
|
37
|
+
const publicUrl = config.baseUrl ? new URL(config.baseUrl) : undefined;
|
|
38
|
+
logger.info(`Starting ${config.name} MCP server (http)`);
|
|
39
|
+
const { close, httpServer } = await connectHttp(mcpServer, {
|
|
40
|
+
logger,
|
|
41
|
+
app,
|
|
42
|
+
port,
|
|
43
|
+
allowedOrigins: publicUrl ? [
|
|
44
|
+
publicUrl.origin
|
|
45
|
+
] : undefined,
|
|
46
|
+
allowedHosts: publicUrl ? [
|
|
47
|
+
publicUrl.host
|
|
48
|
+
] : undefined
|
|
49
|
+
});
|
|
50
|
+
// The loopback OAuth callback, the file-export download, and the DCR discovery/
|
|
51
|
+
// registration endpoints are all meant to be reached from a browser on another
|
|
52
|
+
// origin. Keep cors() for them, scoped to their own routes - never in front of '/mcp'.
|
|
36
53
|
if (runtime.deps.oauthAdapters.loopbackRouter) {
|
|
37
|
-
app.use('/', runtime.deps.oauthAdapters.loopbackRouter);
|
|
54
|
+
app.use('/', cors(), runtime.deps.oauthAdapters.loopbackRouter);
|
|
38
55
|
logger.info('Mounted loopback OAuth callback router');
|
|
39
56
|
}
|
|
40
57
|
if (config.auth !== 'dcr') {
|
|
@@ -44,18 +61,12 @@ export async function createHTTPServer(config, overrides) {
|
|
|
44
61
|
contentType: 'text/csv',
|
|
45
62
|
contentDisposition: 'attachment'
|
|
46
63
|
});
|
|
47
|
-
app.use('/files', fileRouter);
|
|
64
|
+
app.use('/files', cors(), fileRouter);
|
|
48
65
|
}
|
|
49
66
|
if (runtime.deps.oauthAdapters.dcrRouter) {
|
|
50
|
-
app.use('/', runtime.deps.oauthAdapters.dcrRouter);
|
|
67
|
+
app.use('/', cors(), runtime.deps.oauthAdapters.dcrRouter);
|
|
51
68
|
logger.info('Mounted DCR router with OAuth endpoints');
|
|
52
69
|
}
|
|
53
|
-
logger.info(`Starting ${config.name} MCP server (http)`);
|
|
54
|
-
const { close, httpServer } = await connectHttp(mcpServer, {
|
|
55
|
-
logger,
|
|
56
|
-
app,
|
|
57
|
-
port
|
|
58
|
-
});
|
|
59
70
|
logger.info('http transport ready');
|
|
60
71
|
return {
|
|
61
72
|
httpServer,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/ai/mcp-z/mcp-outlook/src/setup/http.ts"],"sourcesContent":["import { composeMiddleware, connectHttp, createFileServingRouter, registerPrompts, registerResources, registerTools } from '@mcp-z/server';\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport cors from 'cors';\nimport express from 'express';\nimport type { RuntimeOverrides, ServerConfig } from '../types.ts';\nimport { createDefaultRuntime } from './runtime.ts';\n\nexport async function createHTTPServer(config: ServerConfig, overrides?: RuntimeOverrides) {\n const runtime = await createDefaultRuntime(config, overrides);\n const modules = runtime.createDomainModules();\n const layers = runtime.middlewareFactories.map((factory) => factory(runtime.deps));\n const composed = composeMiddleware(modules, layers);\n const logger = runtime.deps.logger;\n const port = config.transport.port;\n if (!port) throw new Error('Port is required for HTTP transport');\n\n const tools = [...composed.tools, ...runtime.deps.oauthAdapters.accountTools];\n const filteredTools =\n config.auth === 'dcr'\n ? tools.filter((tool) => tool.name !== 'messages-export-csv') // No file storage in DCR (public cloud responsibility)\n : tools;\n const prompts = [...composed.prompts, ...runtime.deps.oauthAdapters.accountPrompts];\n\n const mcpServer = new McpServer({ name: config.name, version: config.version });\n registerTools(mcpServer, filteredTools);\n registerResources(mcpServer, composed.resources);\n registerPrompts(mcpServer, prompts);\n\n const app = express();\n app.use(
|
|
1
|
+
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/ai/mcp-z/mcp-outlook/src/setup/http.ts"],"sourcesContent":["import { composeMiddleware, connectHttp, createFileServingRouter, registerPrompts, registerResources, registerTools } from '@mcp-z/server';\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport cors from 'cors';\nimport express from 'express';\nimport type { RuntimeOverrides, ServerConfig } from '../types.ts';\nimport { createDefaultRuntime } from './runtime.ts';\n\nexport async function createHTTPServer(config: ServerConfig, overrides?: RuntimeOverrides) {\n const runtime = await createDefaultRuntime(config, overrides);\n const modules = runtime.createDomainModules();\n const layers = runtime.middlewareFactories.map((factory) => factory(runtime.deps));\n const composed = composeMiddleware(modules, layers);\n const logger = runtime.deps.logger;\n const port = config.transport.port;\n if (!port) throw new Error('Port is required for HTTP transport');\n\n const tools = [...composed.tools, ...runtime.deps.oauthAdapters.accountTools];\n const filteredTools =\n config.auth === 'dcr'\n ? tools.filter((tool) => tool.name !== 'messages-export-csv') // No file storage in DCR (public cloud responsibility)\n : tools;\n const prompts = [...composed.prompts, ...runtime.deps.oauthAdapters.accountPrompts];\n\n const mcpServer = new McpServer({ name: config.name, version: config.version });\n registerTools(mcpServer, filteredTools);\n registerResources(mcpServer, composed.resources);\n registerPrompts(mcpServer, prompts);\n\n const app = express();\n app.use(express.json({ limit: '10mb' }));\n\n // Must mount '/mcp' before any permissive app-level cors(), or that layer answers its\n // preflight first; pass baseUrl's origin/host below or a public deployment 403s itself.\n const publicUrl = config.baseUrl ? new URL(config.baseUrl) : undefined;\n logger.info(`Starting ${config.name} MCP server (http)`);\n const { close, httpServer } = await connectHttp(mcpServer, {\n logger,\n app,\n port,\n allowedOrigins: publicUrl ? [publicUrl.origin] : undefined,\n allowedHosts: publicUrl ? [publicUrl.host] : undefined,\n });\n\n // The loopback OAuth callback, the file-export download, and the DCR discovery/\n // registration endpoints are all meant to be reached from a browser on another\n // origin. Keep cors() for them, scoped to their own routes - never in front of '/mcp'.\n if (runtime.deps.oauthAdapters.loopbackRouter) {\n app.use('/', cors(), runtime.deps.oauthAdapters.loopbackRouter);\n logger.info('Mounted loopback OAuth callback router');\n }\n\n if (config.auth !== 'dcr') {\n const fileRouter = createFileServingRouter({ resourceStoreUri: config.resourceStoreUri }, { contentType: 'text/csv', contentDisposition: 'attachment' });\n app.use('/files', cors(), fileRouter);\n }\n\n if (runtime.deps.oauthAdapters.dcrRouter) {\n app.use('/', cors(), runtime.deps.oauthAdapters.dcrRouter);\n logger.info('Mounted DCR router with OAuth endpoints');\n }\n\n logger.info('http transport ready');\n\n return {\n httpServer,\n mcpServer,\n logger,\n close: async () => {\n await close();\n await runtime.close();\n },\n };\n}\n"],"names":["composeMiddleware","connectHttp","createFileServingRouter","registerPrompts","registerResources","registerTools","McpServer","cors","express","createDefaultRuntime","createHTTPServer","config","overrides","runtime","modules","createDomainModules","layers","middlewareFactories","map","factory","deps","composed","logger","port","transport","Error","tools","oauthAdapters","accountTools","filteredTools","auth","filter","tool","name","prompts","accountPrompts","mcpServer","version","resources","app","use","json","limit","publicUrl","baseUrl","URL","undefined","info","close","httpServer","allowedOrigins","origin","allowedHosts","host","loopbackRouter","fileRouter","resourceStoreUri","contentType","contentDisposition","dcrRouter"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mcp-z/mcp-outlook",
|
|
3
|
-
"version": "1.1.
|
|
3
|
+
"version": "1.1.4",
|
|
4
4
|
"description": "MCP server for Outlook integration with OAuth authentication, message search, and batch operations",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"outlook",
|
|
@@ -61,7 +61,7 @@
|
|
|
61
61
|
"build": "tsds validate",
|
|
62
62
|
"format": "tsds format",
|
|
63
63
|
"prepublish:check": "ncp",
|
|
64
|
-
"prepublishOnly": "tsds validate",
|
|
64
|
+
"prepublishOnly": "node scripts/require-dist-tag.cjs && tsds validate",
|
|
65
65
|
"test": "tsds test:node --no-timeouts",
|
|
66
66
|
"test:engines": "nvu engines tsds test:node --no-timeouts",
|
|
67
67
|
"test:setup": "node scripts/setup-test.ts",
|
|
@@ -71,7 +71,7 @@
|
|
|
71
71
|
"@mcp-z/email": "^1.0.0",
|
|
72
72
|
"@mcp-z/oauth": "^1.0.5",
|
|
73
73
|
"@mcp-z/oauth-microsoft": "^1.0.9",
|
|
74
|
-
"@mcp-z/server": "^1.
|
|
74
|
+
"@mcp-z/server": "^1.2.0",
|
|
75
75
|
"@microsoft/microsoft-graph-client": "^3.0.0",
|
|
76
76
|
"@microsoft/microsoft-graph-types": "^2.0.0",
|
|
77
77
|
"@modelcontextprotocol/sdk": "^1.0.0",
|
|
@@ -101,12 +101,6 @@
|
|
|
101
101
|
"engines": {
|
|
102
102
|
"node": ">=20"
|
|
103
103
|
},
|
|
104
|
-
"allowScripts": {
|
|
105
|
-
"node-filename-to-dist-paths": true,
|
|
106
|
-
"node-semvers": true,
|
|
107
|
-
"node-version-use": true,
|
|
108
|
-
"thread-sleep-compat": true
|
|
109
|
-
},
|
|
110
104
|
"mcpName": "io.github.mcp-z/mcp-outlook",
|
|
111
105
|
"tsds": {
|
|
112
106
|
"source": "src/index.ts"
|