mcp-macos 2.1.5 → 4.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.
Files changed (40) hide show
  1. package/README.md +7 -60
  2. package/dist/config/index.d.ts +5 -32
  3. package/dist/config/index.js +5 -112
  4. package/dist/config/index.js.map +1 -1
  5. package/dist/config/schema.d.ts +1 -144
  6. package/dist/config/schema.js +1 -34
  7. package/dist/config/schema.js.map +1 -1
  8. package/dist/index.d.ts +1 -6
  9. package/dist/index.js +5 -46
  10. package/dist/index.js.map +1 -1
  11. package/dist/server/handlers.js +1 -20
  12. package/dist/server/handlers.js.map +1 -1
  13. package/dist/server/server.d.ts +1 -18
  14. package/dist/server/server.js +1 -33
  15. package/dist/server/server.js.map +1 -1
  16. package/dist/types/index.d.ts +1 -5
  17. package/dist/utils/errorHandling.js +1 -1
  18. package/dist/utils/errorHandling.js.map +1 -1
  19. package/package.json +3 -9
  20. package/dist/server/promptAbstractions.d.ts +0 -74
  21. package/dist/server/promptAbstractions.js +0 -150
  22. package/dist/server/promptAbstractions.js.map +0 -1
  23. package/dist/server/prompts.d.ts +0 -8
  24. package/dist/server/prompts.js +0 -480
  25. package/dist/server/prompts.js.map +0 -1
  26. package/dist/server/transports/http/auth.d.ts +0 -34
  27. package/dist/server/transports/http/auth.js +0 -148
  28. package/dist/server/transports/http/auth.js.map +0 -1
  29. package/dist/server/transports/http/health.d.ts +0 -35
  30. package/dist/server/transports/http/health.js +0 -93
  31. package/dist/server/transports/http/health.js.map +0 -1
  32. package/dist/server/transports/http/index.d.ts +0 -43
  33. package/dist/server/transports/http/index.js +0 -147
  34. package/dist/server/transports/http/index.js.map +0 -1
  35. package/dist/server/transports/http/middleware.d.ts +0 -53
  36. package/dist/server/transports/http/middleware.js +0 -133
  37. package/dist/server/transports/http/middleware.js.map +0 -1
  38. package/dist/types/prompts.d.ts +0 -84
  39. package/dist/types/prompts.js +0 -6
  40. package/dist/types/prompts.js.map +0 -1
@@ -1,133 +0,0 @@
1
- /**
2
- * @fileoverview HTTP middleware for rate limiting, logging, and CORS
3
- * @module server/transports/http/middleware
4
- * @description Express middleware stack for the HTTP transport
5
- */
6
- import rateLimit from 'express-rate-limit';
7
- /**
8
- * Creates a rate limiter middleware
9
- * Default: 100 requests per minute per IP
10
- *
11
- * @param maxRequests - Maximum requests per window (default: 100)
12
- * @param windowMs - Window size in milliseconds (default: 60000 = 1 minute)
13
- * @returns Express rate limiting middleware
14
- */
15
- export function createRateLimiter(maxRequests = 100, windowMs = 60000) {
16
- return rateLimit({
17
- windowMs,
18
- max: maxRequests,
19
- // Suppress ERR_ERL_KEY_GEN_IPV6 ValidationError — we're behind Cloudflare
20
- // Tunnel which always provides X-Forwarded-For, so IPv6 validation is irrelevant
21
- validate: { keyGeneratorIpFallback: false },
22
- message: {
23
- error: 'Too Many Requests',
24
- message: `Rate limit exceeded. Maximum ${maxRequests} requests per ${windowMs / 1000} seconds.`,
25
- },
26
- standardHeaders: true,
27
- legacyHeaders: false,
28
- // Use X-Forwarded-For header if behind proxy (Cloudflare Tunnel)
29
- keyGenerator: (req) => {
30
- const forwarded = req.headers['x-forwarded-for'];
31
- if (typeof forwarded === 'string') {
32
- // Take the first IP if there are multiple
33
- return forwarded.split(',')[0].trim();
34
- }
35
- return req.ip ?? req.socket.remoteAddress ?? 'unknown';
36
- },
37
- // Skip rate limiting for health checks
38
- skip: (req) => {
39
- return req.path === '/health' || req.path === '/health/ready';
40
- },
41
- });
42
- }
43
- /**
44
- * Request timing middleware
45
- * Adds startTime to request for duration calculation
46
- *
47
- * @returns Express middleware function
48
- */
49
- export function requestTiming() {
50
- return (req, _res, next) => {
51
- req.startTime = Date.now();
52
- next();
53
- };
54
- }
55
- /**
56
- * Request logging middleware
57
- * Logs request details after response is sent
58
- *
59
- * @returns Express middleware function
60
- */
61
- export function requestLogging() {
62
- return (req, res, next) => {
63
- // Log after response is finished
64
- res.on('finish', () => {
65
- const duration = req.startTime ? Date.now() - req.startTime : 0;
66
- const logEntry = {
67
- timestamp: new Date().toISOString(),
68
- method: req.method,
69
- path: req.path,
70
- status: res.statusCode,
71
- duration,
72
- ip: (typeof req.headers['x-forwarded-for'] === 'string'
73
- ? req.headers['x-forwarded-for'].split(',')[0].trim()
74
- : undefined) ??
75
- req.ip ??
76
- req.socket.remoteAddress ??
77
- 'unknown',
78
- };
79
- // Add user if available from Cloudflare Access
80
- if (req.cfAccessEmail) {
81
- logEntry.user = req.cfAccessEmail;
82
- }
83
- // Log to stderr to avoid interfering with stdio transport
84
- // Use structured JSON for easy parsing
85
- process.stderr.write(`${JSON.stringify(logEntry)}\n`);
86
- });
87
- next();
88
- };
89
- }
90
- /**
91
- * CORS middleware for handling preflight requests
92
- * Configured for Cloudflare Tunnel / Access
93
- *
94
- * @returns Express middleware function
95
- */
96
- export function corsMiddleware() {
97
- return (req, res, next) => {
98
- // Allow requests from same origin or Cloudflare
99
- res.setHeader('Access-Control-Allow-Origin', '*');
100
- res.setHeader('Access-Control-Allow-Methods', 'GET, POST, DELETE, OPTIONS');
101
- res.setHeader('Access-Control-Allow-Headers', 'Content-Type, Cf-Access-Jwt-Assertion, Mcp-Session-Id, Last-Event-Id');
102
- res.setHeader('Access-Control-Expose-Headers', 'Mcp-Session-Id');
103
- res.setHeader('Access-Control-Max-Age', '86400');
104
- // Handle preflight requests
105
- if (req.method === 'OPTIONS') {
106
- res.status(204).end();
107
- return;
108
- }
109
- next();
110
- };
111
- }
112
- /**
113
- * Error handling middleware
114
- * Catches unhandled errors and returns appropriate response
115
- *
116
- * @returns Express error handling middleware
117
- */
118
- export function errorHandler() {
119
- return (err, _req, res, _next) => {
120
- // Log error to stderr
121
- process.stderr.write(`${JSON.stringify({ timestamp: new Date().toISOString(), error: err.message, stack: err.stack })}\n`);
122
- // Send error response if not already sent
123
- if (!res.headersSent) {
124
- res.status(500).json({
125
- error: 'Internal Server Error',
126
- message: process.env.NODE_ENV === 'production'
127
- ? 'An unexpected error occurred'
128
- : err.message,
129
- });
130
- }
131
- };
132
- }
133
- //# sourceMappingURL=middleware.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"middleware.js","sourceRoot":"","sources":["../../../../src/server/transports/http/middleware.ts"],"names":[],"mappings":"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"}
@@ -1,84 +0,0 @@
1
- /**
2
- * types/prompts.ts
3
- * Type definitions for MCP prompt templates and arguments
4
- */
5
- export type PromptName = 'daily-task-organizer' | 'smart-reminder-creator' | 'reminder-review-assistant' | 'weekly-planning-workflow';
6
- /**
7
- * Describes an individual prompt argument exposed to MCP clients.
8
- */
9
- export interface PromptArgumentDefinition {
10
- name: string;
11
- description: string;
12
- required: boolean;
13
- }
14
- /**
15
- * Prompt metadata that is surfaced through the `ListPrompts` endpoint.
16
- */
17
- export interface PromptMetadata<Name extends PromptName = PromptName> {
18
- name: Name;
19
- description: string;
20
- arguments: PromptArgumentDefinition[];
21
- }
22
- /**
23
- * Content definition for a single prompt message.
24
- */
25
- export interface PromptMessageContent {
26
- type: 'text';
27
- text: string;
28
- }
29
- /**
30
- * User-facing prompt message structure used when constructing prompt templates.
31
- */
32
- export interface PromptMessage {
33
- role: 'user';
34
- content: PromptMessageContent;
35
- }
36
- /**
37
- * Response payload returned from `GetPrompt` requests.
38
- */
39
- export interface PromptResponse {
40
- description: string;
41
- messages: PromptMessage[];
42
- [key: string]: unknown;
43
- }
44
- /**
45
- * Arguments accepted by the `daily-task-organizer` prompt.
46
- */
47
- export interface DailyTaskOrganizerArgs {
48
- today_focus?: string;
49
- }
50
- /**
51
- * Arguments accepted by the `smart-reminder-creator` prompt.
52
- */
53
- export interface SmartReminderCreatorArgs {
54
- task_idea?: string;
55
- }
56
- /**
57
- * Arguments accepted by the `reminder-review-assistant` prompt.
58
- */
59
- export interface ReminderReviewAssistantArgs {
60
- review_focus?: string;
61
- }
62
- /**
63
- * Arguments accepted by the `weekly-planning-workflow` prompt.
64
- */
65
- export interface WeeklyPlanningWorkflowArgs {
66
- user_ideas?: string;
67
- }
68
- /**
69
- * Mapped helper type that links prompt names with their argument signatures.
70
- */
71
- export interface PromptArgsByName {
72
- 'daily-task-organizer': DailyTaskOrganizerArgs;
73
- 'smart-reminder-creator': SmartReminderCreatorArgs;
74
- 'reminder-review-assistant': ReminderReviewAssistantArgs;
75
- 'weekly-planning-workflow': WeeklyPlanningWorkflowArgs;
76
- }
77
- /**
78
- * Describes an individual prompt template with parsing and builder helpers.
79
- */
80
- export interface PromptTemplate<Name extends PromptName> {
81
- metadata: PromptMetadata<Name>;
82
- parseArgs(rawArgs: Record<string, unknown> | null | undefined): PromptArgsByName[Name];
83
- buildPrompt(args: PromptArgsByName[Name]): PromptResponse;
84
- }
@@ -1,6 +0,0 @@
1
- /**
2
- * types/prompts.ts
3
- * Type definitions for MCP prompt templates and arguments
4
- */
5
- export {};
6
- //# sourceMappingURL=prompts.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"prompts.js","sourceRoot":"","sources":["../../src/types/prompts.ts"],"names":[],"mappings":"AAAA;;;GAGG"}