mcp-macos 2.1.4 → 3.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.
@@ -1,161 +1,18 @@
1
1
  /**
2
- * @fileoverview Configuration schema definitions for macos-mcp server
2
+ * @fileoverview Configuration schema for macos-mcp server
3
3
  * @module config/schema
4
- * @description Zod schemas for transport mode, HTTP settings, and Cloudflare Access configuration
5
4
  */
6
5
  import { z } from 'zod/v3';
7
- /**
8
- * Cloudflare Access configuration schema for JWT verification
9
- * Required when using Cloudflare Tunnel for secure remote access
10
- */
11
- export declare const CloudflareAccessConfigSchema: z.ZodObject<{
12
- /** Cloudflare Access team domain (e.g., "myteam.cloudflareaccess.com") */
13
- teamDomain: z.ZodString;
14
- /** Application Audience (AUD) tag from Cloudflare Access policy */
15
- policyAUD: z.ZodString;
16
- /** Optional list of allowed email addresses for additional verification */
17
- allowedEmails: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
18
- }, "strip", z.ZodTypeAny, {
19
- teamDomain: string;
20
- policyAUD: string;
21
- allowedEmails?: string[] | undefined;
22
- }, {
23
- teamDomain: string;
24
- policyAUD: string;
25
- allowedEmails?: string[] | undefined;
26
- }>;
27
- /**
28
- * HTTP transport configuration schema
29
- */
30
- export declare const HttpConfigSchema: z.ZodObject<{
31
- /** Whether HTTP transport is enabled */
32
- enabled: z.ZodDefault<z.ZodBoolean>;
33
- /** Host to bind the HTTP server to */
34
- host: z.ZodDefault<z.ZodString>;
35
- /** Port for the HTTP server (1-65535) */
36
- port: z.ZodDefault<z.ZodNumber>;
37
- /** Cloudflare Access configuration for JWT verification */
38
- cloudflareAccess: z.ZodOptional<z.ZodObject<{
39
- /** Cloudflare Access team domain (e.g., "myteam.cloudflareaccess.com") */
40
- teamDomain: z.ZodString;
41
- /** Application Audience (AUD) tag from Cloudflare Access policy */
42
- policyAUD: z.ZodString;
43
- /** Optional list of allowed email addresses for additional verification */
44
- allowedEmails: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
45
- }, "strip", z.ZodTypeAny, {
46
- teamDomain: string;
47
- policyAUD: string;
48
- allowedEmails?: string[] | undefined;
49
- }, {
50
- teamDomain: string;
51
- policyAUD: string;
52
- allowedEmails?: string[] | undefined;
53
- }>>;
54
- }, "strip", z.ZodTypeAny, {
55
- enabled: boolean;
56
- host: string;
57
- port: number;
58
- cloudflareAccess?: {
59
- teamDomain: string;
60
- policyAUD: string;
61
- allowedEmails?: string[] | undefined;
62
- } | undefined;
63
- }, {
64
- enabled?: boolean | undefined;
65
- host?: string | undefined;
66
- port?: number | undefined;
67
- cloudflareAccess?: {
68
- teamDomain: string;
69
- policyAUD: string;
70
- allowedEmails?: string[] | undefined;
71
- } | undefined;
72
- }>;
73
- /**
74
- * Full server configuration schema
75
- */
76
6
  export declare const ServerConfigSchema: z.ZodObject<{
77
7
  /** Server name (auto-populated from package.json) */
78
8
  name: z.ZodString;
79
9
  /** Server version (auto-populated from package.json) */
80
10
  version: z.ZodString;
81
- /** Transport mode: stdio (default), http, or both */
82
- transport: z.ZodDefault<z.ZodEnum<["stdio", "http", "both"]>>;
83
- /** HTTP transport configuration (required when transport includes http) */
84
- http: z.ZodOptional<z.ZodObject<{
85
- /** Whether HTTP transport is enabled */
86
- enabled: z.ZodDefault<z.ZodBoolean>;
87
- /** Host to bind the HTTP server to */
88
- host: z.ZodDefault<z.ZodString>;
89
- /** Port for the HTTP server (1-65535) */
90
- port: z.ZodDefault<z.ZodNumber>;
91
- /** Cloudflare Access configuration for JWT verification */
92
- cloudflareAccess: z.ZodOptional<z.ZodObject<{
93
- /** Cloudflare Access team domain (e.g., "myteam.cloudflareaccess.com") */
94
- teamDomain: z.ZodString;
95
- /** Application Audience (AUD) tag from Cloudflare Access policy */
96
- policyAUD: z.ZodString;
97
- /** Optional list of allowed email addresses for additional verification */
98
- allowedEmails: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
99
- }, "strip", z.ZodTypeAny, {
100
- teamDomain: string;
101
- policyAUD: string;
102
- allowedEmails?: string[] | undefined;
103
- }, {
104
- teamDomain: string;
105
- policyAUD: string;
106
- allowedEmails?: string[] | undefined;
107
- }>>;
108
- }, "strip", z.ZodTypeAny, {
109
- enabled: boolean;
110
- host: string;
111
- port: number;
112
- cloudflareAccess?: {
113
- teamDomain: string;
114
- policyAUD: string;
115
- allowedEmails?: string[] | undefined;
116
- } | undefined;
117
- }, {
118
- enabled?: boolean | undefined;
119
- host?: string | undefined;
120
- port?: number | undefined;
121
- cloudflareAccess?: {
122
- teamDomain: string;
123
- policyAUD: string;
124
- allowedEmails?: string[] | undefined;
125
- } | undefined;
126
- }>>;
127
11
  }, "strip", z.ZodTypeAny, {
128
12
  name: string;
129
13
  version: string;
130
- transport: "stdio" | "http" | "both";
131
- http?: {
132
- enabled: boolean;
133
- host: string;
134
- port: number;
135
- cloudflareAccess?: {
136
- teamDomain: string;
137
- policyAUD: string;
138
- allowedEmails?: string[] | undefined;
139
- } | undefined;
140
- } | undefined;
141
14
  }, {
142
15
  name: string;
143
16
  version: string;
144
- http?: {
145
- enabled?: boolean | undefined;
146
- host?: string | undefined;
147
- port?: number | undefined;
148
- cloudflareAccess?: {
149
- teamDomain: string;
150
- policyAUD: string;
151
- allowedEmails?: string[] | undefined;
152
- } | undefined;
153
- } | undefined;
154
- transport?: "stdio" | "http" | "both" | undefined;
155
17
  }>;
156
- /** Cloudflare Access configuration type */
157
- export type CloudflareAccessConfig = z.infer<typeof CloudflareAccessConfigSchema>;
158
- /** HTTP transport configuration type */
159
- export type HttpConfig = z.infer<typeof HttpConfigSchema>;
160
- /** Full server configuration type */
161
18
  export type FullServerConfig = z.infer<typeof ServerConfigSchema>;
@@ -1,45 +1,12 @@
1
1
  /**
2
- * @fileoverview Configuration schema definitions for macos-mcp server
2
+ * @fileoverview Configuration schema for macos-mcp server
3
3
  * @module config/schema
4
- * @description Zod schemas for transport mode, HTTP settings, and Cloudflare Access configuration
5
4
  */
6
5
  import { z } from 'zod/v3';
7
- /**
8
- * Cloudflare Access configuration schema for JWT verification
9
- * Required when using Cloudflare Tunnel for secure remote access
10
- */
11
- export const CloudflareAccessConfigSchema = z.object({
12
- /** Cloudflare Access team domain (e.g., "myteam.cloudflareaccess.com") */
13
- teamDomain: z.string().min(1, 'Team domain is required'),
14
- /** Application Audience (AUD) tag from Cloudflare Access policy */
15
- policyAUD: z.string().min(1, 'Policy AUD is required'),
16
- /** Optional list of allowed email addresses for additional verification */
17
- allowedEmails: z.array(z.string().email('Invalid email format')).optional(),
18
- });
19
- /**
20
- * HTTP transport configuration schema
21
- */
22
- export const HttpConfigSchema = z.object({
23
- /** Whether HTTP transport is enabled */
24
- enabled: z.boolean().default(false),
25
- /** Host to bind the HTTP server to */
26
- host: z.string().default('127.0.0.1'),
27
- /** Port for the HTTP server (1-65535) */
28
- port: z.number().int().min(1).max(65535).default(3847),
29
- /** Cloudflare Access configuration for JWT verification */
30
- cloudflareAccess: CloudflareAccessConfigSchema.optional(),
31
- });
32
- /**
33
- * Full server configuration schema
34
- */
35
6
  export const ServerConfigSchema = z.object({
36
7
  /** Server name (auto-populated from package.json) */
37
8
  name: z.string(),
38
9
  /** Server version (auto-populated from package.json) */
39
10
  version: z.string(),
40
- /** Transport mode: stdio (default), http, or both */
41
- transport: z.enum(['stdio', 'http', 'both']).default('stdio'),
42
- /** HTTP transport configuration (required when transport includes http) */
43
- http: HttpConfigSchema.optional(),
44
11
  });
45
12
  //# sourceMappingURL=schema.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/config/schema.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAC;AAE3B;;;GAGG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,CAAC,CAAC,MAAM,CAAC;IACnD,0EAA0E;IAC1E,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,yBAAyB,CAAC;IACxD,mEAAmE;IACnE,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,wBAAwB,CAAC;IACtD,2EAA2E;IAC3E,aAAa,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC,CAAC,QAAQ,EAAE;CAC5E,CAAC,CAAC;AAEH;;GAEG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC;IACvC,wCAAwC;IACxC,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;IACnC,sCAAsC;IACtC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,WAAW,CAAC;IACrC,yCAAyC;IACzC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC;IACtD,2DAA2D;IAC3D,gBAAgB,EAAE,4BAA4B,CAAC,QAAQ,EAAE;CAC1D,CAAC,CAAC;AAEH;;GAEG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC;IACzC,qDAAqD;IACrD,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,wDAAwD;IACxD,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;IACnB,qDAAqD;IACrD,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC;IAC7D,2EAA2E;IAC3E,IAAI,EAAE,gBAAgB,CAAC,QAAQ,EAAE;CAClC,CAAC,CAAC"}
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/config/schema.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAC;AAE3B,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC;IACzC,qDAAqD;IACrD,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,wDAAwD;IACxD,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;CACpB,CAAC,CAAC"}
package/dist/index.d.ts CHANGED
@@ -1,11 +1,6 @@
1
1
  #!/usr/bin/env node
2
2
  /**
3
3
  * index.ts
4
- * Entry point for the macOS MCP server
5
- *
6
- * Supports multiple transport modes:
7
- * - stdio: Standard input/output (default, for Claude Desktop)
8
- * - http: HTTP/SSE transport (for remote access via Cloudflare Tunnel)
9
- * - both: Run both transports simultaneously
4
+ * Entry point for the macOS MCP server (stdio transport)
10
5
  */
11
6
  export {};
package/dist/index.js CHANGED
@@ -1,61 +1,21 @@
1
1
  #!/usr/bin/env node
2
2
  /**
3
3
  * index.ts
4
- * Entry point for the macOS MCP server
5
- *
6
- * Supports multiple transport modes:
7
- * - stdio: Standard input/output (default, for Claude Desktop)
8
- * - http: HTTP/SSE transport (for remote access via Cloudflare Tunnel)
9
- * - both: Run both transports simultaneously
4
+ * Entry point for the macOS MCP server (stdio transport)
10
5
  */
11
6
  import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
12
7
  import { loadConfig } from './config/index.js';
13
8
  import { createServer } from './server/server.js';
14
9
  import { contactResolver } from './utils/contactResolver.js';
15
- /** Active HTTP transport instance for cleanup */
16
- let httpTransport = null;
17
- /**
18
- * Graceful shutdown handler
19
- * Stops HTTP server if running and exits cleanly
20
- */
21
- async function shutdown() {
22
- process.stderr.write(`${JSON.stringify({ timestamp: new Date().toISOString(), event: 'shutdown_initiated' })}\n`);
23
- if (httpTransport) {
24
- await httpTransport.stop();
25
- }
26
- process.exit(0);
27
- }
28
- /**
29
- * Main entry point
30
- * Loads configuration and starts appropriate transport(s)
31
- */
32
10
  async function main() {
33
11
  const config = loadConfig();
34
12
  const server = createServer(config);
35
- // Warm contact cache before connecting transports.
36
- // Fire-and-forget: cache builds concurrently, giving maximum head start
37
- // before the first enrichment request arrives.
13
+ // Warm contact cache before connecting transport.
14
+ // Fire-and-forget: cache builds concurrently with stdio handshake.
38
15
  void contactResolver.warmCache();
39
- // Register graceful shutdown handlers
40
- process.on('SIGINT', () => void shutdown());
41
- process.on('SIGTERM', () => void shutdown());
42
- // Start stdio transport if configured
43
- if (config.transport === 'stdio' || config.transport === 'both') {
44
- const stdioTransport = new StdioServerTransport();
45
- await server.connect(stdioTransport);
46
- }
47
- // Start HTTP transport if configured
48
- if (config.transport === 'http' || config.transport === 'both') {
49
- if (!config.http?.enabled) {
50
- throw new Error('HTTP transport requested but http.enabled is false');
51
- }
52
- // Dynamic import to avoid loading express when not needed
53
- const { createHttpTransport } = await import('./server/transports/http/index.js');
54
- httpTransport = createHttpTransport(server, config, config.http);
55
- await httpTransport.start();
56
- }
16
+ const transport = new StdioServerTransport();
17
+ await server.connect(transport);
57
18
  }
58
- // Handle --check flag for preflight validation
59
19
  if (process.argv.includes('--check')) {
60
20
  import('./utils/preflight.js').then(async ({ runPreflight, formatResults }) => {
61
21
  const results = await runPreflight();
@@ -65,7 +25,6 @@ if (process.argv.includes('--check')) {
65
25
  });
66
26
  }
67
27
  else {
68
- // Start the application
69
28
  main().catch((error) => {
70
29
  const errorMessage = error instanceof Error ? error.message : String(error);
71
30
  process.stderr.write(`${JSON.stringify({ timestamp: new Date().toISOString(), error: 'fatal', message: errorMessage })}\n`);
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA;;;GAGG;AAEH,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAyB,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACtE,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAE7D,KAAK,UAAU,IAAI;IACjB,MAAM,MAAM,GAAqB,UAAU,EAAE,CAAC;IAC9C,MAAM,MAAM,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;IAEpC,kDAAkD;IAClD,mEAAmE;IACnE,KAAK,eAAe,CAAC,SAAS,EAAE,CAAC;IAEjC,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;IAC7C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;AAClC,CAAC;AAED,IAAI,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;IACrC,MAAM,CAAC,sBAAsB,CAAC,CAAC,IAAI,CACjC,KAAK,EAAE,EAAE,YAAY,EAAE,aAAa,EAAE,EAAE,EAAE;QACxC,MAAM,OAAO,GAAG,MAAM,YAAY,EAAE,CAAC;QACrC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACpD,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC;QAC5D,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACnC,CAAC,CACF,CAAC;AACJ,CAAC;KAAM,CAAC;IACN,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE;QAC9B,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC5E,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,CAAC,IAAI,CACtG,CAAC;QACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -31,7 +31,7 @@ export function createCliPermissionHint(domain) {
31
31
  * Includes the System Settings deep-link URL for FDA.
32
32
  */
33
33
  export function createFdaHint(dbName) {
34
- return `Grant Full Disk Access to your terminal app (or the actual node binary for LaunchAgent) in System Settings > Privacy & Security > Full Disk Access. Open settings: ${SYSTEM_SETTINGS.FULL_DISK_ACCESS} (${dbName} database)`;
34
+ return `Grant Full Disk Access to your terminal app (or the actual node binary if running headless) in System Settings > Privacy & Security > Full Disk Access. Open settings: ${SYSTEM_SETTINGS.FULL_DISK_ACCESS} (${dbName} database)`;
35
35
  }
36
36
  /**
37
37
  * Creates a user-friendly error message for known JXA failure modes.
@@ -1 +1 @@
1
- {"version":3,"file":"errorHandling.js","sourceRoot":"","sources":["../../src/utils/errorHandling.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"errorHandling.js","sourceRoot":"","sources":["../../src/utils/errorHandling.ts"],"names":[],"mappings":"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"}
@@ -16,7 +16,8 @@ export declare const SafeSearchSchema: z.ZodOptional<z.ZodString>;
16
16
  export declare const SafeDateSchema: z.ZodOptional<z.ZodString>;
17
17
  export declare const SafeUrlSchema: z.ZodOptional<z.ZodString>;
18
18
  export declare const SafeIdSchema: z.ZodString;
19
- /** Mail IDs are SQLite ROWIDs — always numeric. Defense-in-depth against JXA injection. */
19
+ /** Mail IDs are SQLite ROWIDs — always numeric. Defense-in-depth against JXA injection.
20
+ * Coerces number inputs to strings (LLMs sometimes send numeric IDs as JSON numbers). */
20
21
  export declare const SafeMailIdSchema: z.ZodString;
21
22
  /**
22
23
  * Tool-specific validation schemas
@@ -85,8 +85,9 @@ const BaseReminderFields = {
85
85
  targetList: SafeListNameSchema,
86
86
  };
87
87
  export const SafeIdSchema = z.string().min(1, 'ID cannot be empty');
88
- /** Mail IDs are SQLite ROWIDs — always numeric. Defense-in-depth against JXA injection. */
89
- export const SafeMailIdSchema = z
88
+ /** Mail IDs are SQLite ROWIDs — always numeric. Defense-in-depth against JXA injection.
89
+ * Coerces number inputs to strings (LLMs sometimes send numeric IDs as JSON numbers). */
90
+ export const SafeMailIdSchema = z.coerce
90
91
  .string()
91
92
  .min(1, 'Mail ID cannot be empty')
92
93
  .regex(/^\d+$/, 'Mail ID must be numeric');
@@ -1 +1 @@
1
- {"version":3,"file":"schemas.js","sourceRoot":"","sources":["../../src/validation/schemas.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"schemas.js","sourceRoot":"","sources":["../../src/validation/schemas.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "mcp-macos",
3
- "version": "2.1.4",
4
- "description": "MCP server that provides native integration with Apple Reminders, Calendar, Notes, Mail, and Messages on macOS.",
3
+ "version": "3.0.0",
4
+ "description": "MCP server for Reminders, Calendar, Notes, Mail, Messages, and Contacts on macOS.",
5
5
  "author": "Kyle Jensen",
6
6
  "contributors": [
7
7
  "Frad Lee <https://frad.me>"
@@ -55,20 +55,18 @@
55
55
  "test": "NODE_NO_WARNINGS=1 jest",
56
56
  "test:e2e": "pnpm build && node --import tsx/esm --test --test-concurrency=1 tests/e2e/functional.test.mts",
57
57
  "test:e2e:functional": "pnpm build && node --import tsx/esm --test --test-concurrency=1 tests/e2e/functional.test.mts",
58
- "test:e2e:http": "pnpm build && node --import tsx/esm --test --test-concurrency=1 tests/e2e/http-transport.test.mts",
59
58
  "test:e2e:all": "pnpm build && node --import tsx/esm --test --test-concurrency=1 tests/e2e/*.test.mts",
60
59
  "lint": "pnpm exec biome check --write --unsafe && pnpm exec tsc --noEmit --project tsconfig.json",
61
60
  "postinstall": "node -e \"process.platform === 'darwin' && require('child_process').execSync('node scripts/build-swift.mjs', {stdio: 'inherit'})\"",
62
- "prepublishOnly": "pnpm build && pnpm test"
61
+ "prepare": "git config core.hooksPath scripts/hooks",
62
+ "prepublishOnly": "pnpm build && pnpm test",
63
+ "release:preview": "npx semantic-release --dry-run"
63
64
  },
64
65
  "engines": {
65
66
  "node": ">=20.0.0"
66
67
  },
67
68
  "dependencies": {
68
69
  "@modelcontextprotocol/sdk": "^1.26.0",
69
- "express": "^5.2.1",
70
- "express-rate-limit": "^8.2.1",
71
- "jose": "^6.1.3",
72
70
  "zod": "^4.3.6"
73
71
  },
74
72
  "devDependencies": {
@@ -76,16 +74,13 @@
76
74
  "@biomejs/biome": "2.3.15",
77
75
  "@semantic-release/changelog": "^6.0.3",
78
76
  "@semantic-release/git": "^10.0.1",
79
- "@types/express": "^5.0.6",
80
77
  "@types/jest": "^30.0.0",
81
78
  "@types/node": "^25.2.3",
82
- "@types/supertest": "^6.0.3",
83
79
  "babel-jest": "^30.2.0",
84
80
  "tsx": "^4.21.0",
85
81
  "babel-plugin-transform-import-meta": "^2.3.3",
86
82
  "jest": "^30.2.0",
87
83
  "semantic-release": "^25.0.3",
88
- "supertest": "^7.2.2",
89
84
  "ts-jest": "^29.4.6",
90
85
  "typescript": "^5.9.3"
91
86
  },
@@ -1,34 +0,0 @@
1
- /**
2
- * @fileoverview Cloudflare Access JWT verification for HTTP transport
3
- * @module server/transports/http/auth
4
- * @description Verifies JWTs from Cloudflare Access for defense-in-depth security
5
- */
6
- import type { NextFunction, Request, Response } from 'express';
7
- import type { CloudflareAccessConfig } from '../../../config/index.js';
8
- /** JWT verification result */
9
- interface JwtVerificationResult {
10
- valid: boolean;
11
- email?: string;
12
- error?: string;
13
- }
14
- /**
15
- * Verifies a Cloudflare Access JWT
16
- *
17
- * @param token - JWT from Cf-Access-Jwt-Assertion header
18
- * @param config - Cloudflare Access configuration
19
- * @returns Verification result
20
- */
21
- export declare function verifyCloudflareAccessJwt(token: string, config: CloudflareAccessConfig): Promise<JwtVerificationResult>;
22
- /**
23
- * Express middleware that verifies Cloudflare Access JWTs
24
- * Returns 401 if no valid JWT is present
25
- *
26
- * @param config - Cloudflare Access configuration
27
- * @returns Express middleware function
28
- */
29
- export declare function createAuthMiddleware(config: CloudflareAccessConfig): (req: Request, res: Response, next: NextFunction) => Promise<void>;
30
- /**
31
- * Clears the JWKS cache (useful for testing)
32
- */
33
- export declare function clearJwksCache(): void;
34
- export {};
@@ -1,148 +0,0 @@
1
- /**
2
- * @fileoverview Cloudflare Access JWT verification for HTTP transport
3
- * @module server/transports/http/auth
4
- * @description Verifies JWTs from Cloudflare Access for defense-in-depth security
5
- */
6
- import * as jose from 'jose';
7
- /** JWKS cache TTL in milliseconds (1 hour) */
8
- const JWKS_CACHE_TTL = 60 * 60 * 1000;
9
- /** JWKS cache keyed by team domain */
10
- const jwksCache = new Map();
11
- /**
12
- * Gets the JWKS URL for a Cloudflare Access team domain
13
- * @param teamDomain - Cloudflare Access team domain
14
- * @returns JWKS URL
15
- */
16
- function getJwksUrl(teamDomain) {
17
- // Normalize domain - remove protocol if present and ensure .cloudflareaccess.com suffix
18
- let domain = teamDomain.replace(/^https?:\/\//, '');
19
- // If just the team name is provided, add the full domain
20
- if (!domain.includes('.')) {
21
- domain = `${domain}.cloudflareaccess.com`;
22
- }
23
- return `https://${domain}/cdn-cgi/access/certs`;
24
- }
25
- /**
26
- * Gets or creates a cached JWKS getter for the team domain
27
- * @param teamDomain - Cloudflare Access team domain
28
- * @returns JWKS getter function
29
- */
30
- async function getJwks(teamDomain) {
31
- const cached = jwksCache.get(teamDomain);
32
- if (cached && cached.expiresAt > Date.now()) {
33
- return cached.jwks;
34
- }
35
- const jwksUrl = getJwksUrl(teamDomain);
36
- const jwks = jose.createRemoteJWKSet(new URL(jwksUrl));
37
- jwksCache.set(teamDomain, {
38
- jwks,
39
- expiresAt: Date.now() + JWKS_CACHE_TTL,
40
- });
41
- return jwks;
42
- }
43
- /**
44
- * Verifies a Cloudflare Access JWT
45
- *
46
- * @param token - JWT from Cf-Access-Jwt-Assertion header
47
- * @param config - Cloudflare Access configuration
48
- * @returns Verification result
49
- */
50
- export async function verifyCloudflareAccessJwt(token, config) {
51
- try {
52
- const jwks = await getJwks(config.teamDomain);
53
- // Normalize team domain for issuer validation
54
- let normalizedDomain = config.teamDomain.replace(/^https?:\/\//, '');
55
- if (!normalizedDomain.includes('.')) {
56
- normalizedDomain = `${normalizedDomain}.cloudflareaccess.com`;
57
- }
58
- const expectedIssuer = `https://${normalizedDomain}`;
59
- const { payload } = await jose.jwtVerify(token, jwks, {
60
- audience: config.policyAUD,
61
- issuer: expectedIssuer,
62
- });
63
- // Extract email from payload
64
- const email = typeof payload.email === 'string' ? payload.email : undefined;
65
- // Validate email against allowed list if configured
66
- if (config.allowedEmails && config.allowedEmails.length > 0) {
67
- if (!email) {
68
- return {
69
- valid: false,
70
- error: 'JWT missing email claim',
71
- };
72
- }
73
- if (!config.allowedEmails.includes(email)) {
74
- return {
75
- valid: false,
76
- error: `Email ${email} not in allowed list`,
77
- };
78
- }
79
- }
80
- return {
81
- valid: true,
82
- email,
83
- };
84
- }
85
- catch (error) {
86
- if (error instanceof jose.errors.JWTExpired) {
87
- return {
88
- valid: false,
89
- error: 'JWT has expired',
90
- };
91
- }
92
- if (error instanceof jose.errors.JWTClaimValidationFailed) {
93
- return {
94
- valid: false,
95
- error: `JWT claim validation failed: ${error.message}`,
96
- };
97
- }
98
- if (error instanceof jose.errors.JWSSignatureVerificationFailed) {
99
- return {
100
- valid: false,
101
- error: 'JWT signature verification failed',
102
- };
103
- }
104
- const errorMessage = error instanceof Error ? error.message : 'Unknown error';
105
- return {
106
- valid: false,
107
- error: `JWT verification failed: ${errorMessage}`,
108
- };
109
- }
110
- }
111
- /**
112
- * Express middleware that verifies Cloudflare Access JWTs
113
- * Returns 401 if no valid JWT is present
114
- *
115
- * @param config - Cloudflare Access configuration
116
- * @returns Express middleware function
117
- */
118
- export function createAuthMiddleware(config) {
119
- return async (req, res, next) => {
120
- // Get JWT from Cloudflare Access header
121
- const token = req.headers['cf-access-jwt-assertion'];
122
- if (!token || typeof token !== 'string') {
123
- res.status(401).json({
124
- error: 'Unauthorized',
125
- message: 'Missing Cf-Access-Jwt-Assertion header',
126
- });
127
- return;
128
- }
129
- const result = await verifyCloudflareAccessJwt(token, config);
130
- if (!result.valid) {
131
- res.status(401).json({
132
- error: 'Unauthorized',
133
- message: result.error ?? 'JWT verification failed',
134
- });
135
- return;
136
- }
137
- // Attach verified email to request for logging
138
- req.cfAccessEmail = result.email;
139
- next();
140
- };
141
- }
142
- /**
143
- * Clears the JWKS cache (useful for testing)
144
- */
145
- export function clearJwksCache() {
146
- jwksCache.clear();
147
- }
148
- //# sourceMappingURL=auth.js.map