@apify/actors-mcp-server 0.9.19-beta.2 → 0.9.19-beta.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.
@@ -4,8 +4,10 @@
4
4
  */
5
5
  export declare function getHttpStatusCode(error: unknown): number | undefined;
6
6
  /**
7
- * Logs HTTP errors based on status code, following apify-core pattern.
8
- * Uses `softFail` for status < 500 (API client errors) and `exception` for status >= 500 (API server errors).
7
+ * Logs HTTP or MCP errors at the appropriate level:
8
+ * - Client errors (HTTP < 500, or JSON-RPC client/transient codes) softFail (no stack).
9
+ * - Server errors (HTTP >= 500, or JSON-RPC server codes) → exception (with stack).
10
+ * - Anything unclassifiable → error.
9
11
  *
10
12
  * @param error - The error object
11
13
  * @param message - The log message
@@ -1 +1 @@
1
- {"version":3,"file":"logging.d.ts","sourceRoot":"","sources":["../../src/utils/logging.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAsBpE;AAED;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAAC,CAAC,SAAS,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAe9F;AASD;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO,CAU3D"}
1
+ {"version":3,"file":"logging.d.ts","sourceRoot":"","sources":["../../src/utils/logging.ts"],"names":[],"mappings":"AAIA;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAsBpE;AA0BD;;;;;;;;;GASG;AACH,wBAAgB,YAAY,CAAC,CAAC,SAAS,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAgC9F;AASD;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO,CAU3D"}
@@ -1,3 +1,4 @@
1
+ import { ErrorCode } from '@modelcontextprotocol/sdk/types.js';
1
2
  import log from '@apify/log';
2
3
  /**
3
4
  * Safely extract HTTP status code from errors.
@@ -24,8 +25,34 @@ export function getHttpStatusCode(error) {
24
25
  return undefined;
25
26
  }
26
27
  /**
27
- * Logs HTTP errors based on status code, following apify-core pattern.
28
- * Uses `softFail` for status < 500 (API client errors) and `exception` for status >= 500 (API server errors).
28
+ * Client/caller faults and transient transport conditions that shouldn't trigger error alerts.
29
+ * Anything else in the JSON-RPC reserved range (-32768..-32000) is treated as a server fault.
30
+ */
31
+ const SOFT_MCP_ERROR_CODES = new Set([
32
+ ErrorCode.ParseError,
33
+ ErrorCode.InvalidRequest,
34
+ ErrorCode.MethodNotFound,
35
+ ErrorCode.InvalidParams,
36
+ ErrorCode.ConnectionClosed,
37
+ ErrorCode.RequestTimeout,
38
+ ]);
39
+ /**
40
+ * Extract a JSON-RPC error code from an `McpError`-shaped object.
41
+ * Returns `undefined` if the `code` field is absent or outside the JSON-RPC reserved range.
42
+ */
43
+ function getMcpErrorCode(error) {
44
+ if (typeof error !== 'object' || error === null || !('code' in error))
45
+ return undefined;
46
+ const { code } = error;
47
+ if (typeof code === 'number' && code >= -32768 && code <= -32000)
48
+ return code;
49
+ return undefined;
50
+ }
51
+ /**
52
+ * Logs HTTP or MCP errors at the appropriate level:
53
+ * - Client errors (HTTP < 500, or JSON-RPC client/transient codes) → softFail (no stack).
54
+ * - Server errors (HTTP >= 500, or JSON-RPC server codes) → exception (with stack).
55
+ * - Anything unclassifiable → error.
29
56
  *
30
57
  * @param error - The error object
31
58
  * @param message - The log message
@@ -33,20 +60,34 @@ export function getHttpStatusCode(error) {
33
60
  */
34
61
  export function logHttpError(error, message, data) {
35
62
  const statusCode = getHttpStatusCode(error);
36
- const errorMessage = error instanceof Error ? error.message : String(error);
63
+ const rawErrorMessage = error instanceof Error ? error.message : String(error);
64
+ // Mezmo (logDNA) promotes log entries to error level when message/keys contain "error".
65
+ // Sanitize for softFail paths (see CONTRIBUTING.md § Logging → Mezmo promotion rule).
66
+ const softErrMessage = rawErrorMessage.replace(/ error:/gi, ' failure:');
37
67
  if (statusCode !== undefined && statusCode < 500) {
38
- // Client errors (< 500) - log as softFail without stack trace
39
- log.softFail(message, { errMessage: errorMessage, statusCode, ...data });
68
+ // HTTP client errors (< 500) - softFail without stack trace
69
+ log.softFail(message, { errMessage: softErrMessage, statusCode, ...data });
70
+ return;
40
71
  }
41
- else if (statusCode !== undefined && statusCode >= 500) {
42
- // Server errors (>= 500) - log as exception with full error (includes stack trace)
72
+ if (statusCode !== undefined && statusCode >= 500) {
73
+ // HTTP server errors (>= 500) - exception with full error (includes stack trace)
43
74
  const errorObj = error instanceof Error ? error : new Error(String(error));
44
75
  log.exception(errorObj, message, { statusCode, ...data });
76
+ return;
45
77
  }
46
- else {
47
- // No status code available - log as error
48
- log.error(message, { error, ...data });
78
+ const mcpErrorCode = getMcpErrorCode(error);
79
+ if (mcpErrorCode !== undefined) {
80
+ if (SOFT_MCP_ERROR_CODES.has(mcpErrorCode)) {
81
+ log.softFail(message, { errMessage: softErrMessage, mcpErrorCode, ...data });
82
+ }
83
+ else {
84
+ const errorObj = error instanceof Error ? error : new Error(String(error));
85
+ log.exception(errorObj, message, { mcpErrorCode, ...data });
86
+ }
87
+ return;
49
88
  }
89
+ // No status code available - log as error
90
+ log.error(message, { error, ...data });
50
91
  }
51
92
  const SKYFIRE_PAY_ID_KEY = 'skyfire-pay-id';
52
93
  const REDACTED_VALUE = '[REDACTED]';
@@ -1 +1 @@
1
- {"version":3,"file":"logging.js","sourceRoot":"","sources":["../../src/utils/logging.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,YAAY,CAAC;AAE7B;;;GAGG;AACH,MAAM,UAAU,iBAAiB,CAAC,KAAc;IAC5C,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QAC9C,OAAO,SAAS,CAAC;IACrB,CAAC;IAED,uDAAuD;IACvD,IAAI,YAAY,IAAI,KAAK,EAAE,CAAC;QACxB,MAAM,EAAE,UAAU,EAAE,GAAI,KAAkC,CAAC;QAC3D,IAAI,OAAO,UAAU,KAAK,QAAQ,IAAI,UAAU,IAAI,GAAG,IAAI,UAAU,GAAG,GAAG,EAAE,CAAC;YAC1E,OAAO,UAAU,CAAC;QACtB,CAAC;IACL,CAAC;IAED,qDAAqD;IACrD,IAAI,MAAM,IAAI,KAAK,EAAE,CAAC;QAClB,MAAM,EAAE,IAAI,EAAE,GAAI,KAA4B,CAAC;QAC/C,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,EAAE,CAAC;YACxD,OAAO,IAAI,CAAC;QAChB,CAAC;IACL,CAAC;IAED,OAAO,SAAS,CAAC;AACrB,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,YAAY,CAAmB,KAAc,EAAE,OAAe,EAAE,IAAQ;IACpF,MAAM,UAAU,GAAG,iBAAiB,CAAC,KAAK,CAAC,CAAC;IAC5C,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAE5E,IAAI,UAAU,KAAK,SAAS,IAAI,UAAU,GAAG,GAAG,EAAE,CAAC;QAC/C,8DAA8D;QAC9D,GAAG,CAAC,QAAQ,CAAC,OAAO,EAAE,EAAE,UAAU,EAAE,YAAY,EAAE,UAAU,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC;IAC7E,CAAC;SAAM,IAAI,UAAU,KAAK,SAAS,IAAI,UAAU,IAAI,GAAG,EAAE,CAAC;QACvD,mFAAmF;QACnF,MAAM,QAAQ,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QAC3E,GAAG,CAAC,SAAS,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC;IAC9D,CAAC;SAAM,CAAC;QACJ,0CAA0C;QAC1C,GAAG,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC;IAC3C,CAAC;AACL,CAAC;AAED,MAAM,kBAAkB,GAAG,gBAAgB,CAAC;AAC5C,MAAM,cAAc,GAAG,YAAY,CAAC;AAEpC,MAAM,aAAa,GAAG,CAAC,KAAc,EAAoC,EAAE;IACvE,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAChF,CAAC,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,UAAU,kBAAkB,CAAC,MAAe;IAC9C,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,kBAAkB,IAAI,MAAM,CAAC,EAAE,CAAC;QAC5D,OAAO,MAAM,CAAC;IAClB,CAAC;IAED,IAAI,MAAM,CAAC,kBAAkB,CAAC,KAAK,cAAc,EAAE,CAAC;QAChD,OAAO,MAAM,CAAC;IAClB,CAAC;IAED,OAAO,EAAE,GAAG,MAAM,EAAE,CAAC,kBAAkB,CAAC,EAAE,cAAc,EAAE,CAAC;AAC/D,CAAC"}
1
+ {"version":3,"file":"logging.js","sourceRoot":"","sources":["../../src/utils/logging.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@apify/actors-mcp-server",
3
- "version": "0.9.19-beta.2",
3
+ "version": "0.9.19-beta.4",
4
4
  "type": "module",
5
5
  "description": "Apify MCP Server",
6
6
  "mcpName": "com.apify/apify-mcp-server",