@apify/actors-mcp-server 0.5.6 → 0.5.8
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 +34 -5
- package/dist/actor/server.d.ts.map +1 -1
- package/dist/actor/server.js +29 -3
- package/dist/actor/server.js.map +1 -1
- package/dist/const.d.ts +11 -0
- package/dist/const.d.ts.map +1 -1
- package/dist/const.js +16 -0
- package/dist/const.js.map +1 -1
- package/dist/mcp/server.d.ts +18 -11
- package/dist/mcp/server.d.ts.map +1 -1
- package/dist/mcp/server.js +119 -20
- package/dist/mcp/server.js.map +1 -1
- package/dist/mcp/utils.d.ts +1 -3
- package/dist/mcp/utils.d.ts.map +1 -1
- package/dist/mcp/utils.js +2 -3
- package/dist/mcp/utils.js.map +1 -1
- package/dist/stdio.js +77 -6
- package/dist/stdio.js.map +1 -1
- package/dist/telemetry.d.ts +25 -0
- package/dist/telemetry.d.ts.map +1 -0
- package/dist/telemetry.js +71 -0
- package/dist/telemetry.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/types.d.ts +59 -2
- package/dist/types.d.ts.map +1 -1
- package/dist/utils/generic.d.ts +7 -0
- package/dist/utils/generic.d.ts.map +1 -1
- package/dist/utils/generic.js +28 -0
- package/dist/utils/generic.js.map +1 -1
- package/dist/utils/tools-loader.d.ts +1 -3
- package/dist/utils/tools-loader.d.ts.map +1 -1
- package/dist/utils/tools-loader.js +1 -2
- package/dist/utils/tools-loader.js.map +1 -1
- package/dist/utils/userid-cache.d.ts +8 -0
- package/dist/utils/userid-cache.d.ts.map +1 -0
- package/dist/utils/userid-cache.js +28 -0
- package/dist/utils/userid-cache.js.map +1 -0
- package/dist/utils/version.d.ts +6 -0
- package/dist/utils/version.d.ts.map +1 -0
- package/dist/utils/version.js +11 -0
- package/dist/utils/version.js.map +1 -0
- package/manifest.json +1 -1
- package/package.json +3 -1
- package/server.json +1 -1
package/README.md
CHANGED
|
@@ -34,6 +34,7 @@ The Apify Model Context Protocol (MCP) server at [**mcp.apify.com**](https://mcp
|
|
|
34
34
|
- [🤖 MCP clients and examples](#-mcp-clients-and-examples)
|
|
35
35
|
- [🪄 Try Apify MCP instantly](#-try-apify-mcp-instantly)
|
|
36
36
|
- [🛠️ Tools, resources, and prompts](#-tools-resources-and-prompts)
|
|
37
|
+
- [📊 Telemetry](#telemetry)
|
|
37
38
|
- [🐛 Troubleshooting (local MCP server)](#-troubleshooting-local-mcp-server)
|
|
38
39
|
- [⚙️ Development](#-development)
|
|
39
40
|
- [🤝 Contributing](#-contributing)
|
|
@@ -266,13 +267,32 @@ The server provides a set of predefined example prompts to help you get started
|
|
|
266
267
|
|
|
267
268
|
The server does not yet provide any resources.
|
|
268
269
|
|
|
269
|
-
|
|
270
|
+
## 📡 Telemetry
|
|
270
271
|
|
|
271
|
-
|
|
272
|
+
The Apify MCP Server collects telemetry data about tool calls to help Apify understand usage patterns and improve the service.
|
|
273
|
+
By default, telemetry is **enabled** for all tool calls.
|
|
272
274
|
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
275
|
+
### Opting out of telemetry
|
|
276
|
+
|
|
277
|
+
You can opt out of telemetry by setting the `--telemetry-enabled` CLI flag to `false` or the `TELEMETRY_ENABLED` environment variable to `false`.
|
|
278
|
+
CLI flags take precedence over environment variables.
|
|
279
|
+
|
|
280
|
+
#### Examples
|
|
281
|
+
|
|
282
|
+
**For the remote server (mcp.apify.com)**:
|
|
283
|
+
```text
|
|
284
|
+
# Disable via URL parameter
|
|
285
|
+
https://mcp.apify.com?telemetry-enabled=false
|
|
286
|
+
```
|
|
287
|
+
|
|
288
|
+
**For the local stdio server**:
|
|
289
|
+
```bash
|
|
290
|
+
# Disable via CLI flag
|
|
291
|
+
npx @apify/actors-mcp-server --telemetry-enabled=false
|
|
292
|
+
|
|
293
|
+
# Or set environment variable
|
|
294
|
+
export TELEMETRY_ENABLED=false
|
|
295
|
+
npx @apify/actors-mcp-server
|
|
276
296
|
```
|
|
277
297
|
|
|
278
298
|
# ⚙️ Development
|
|
@@ -333,6 +353,15 @@ The Apify MCP Server is also available on [Docker Hub](https://hub.docker.com/mc
|
|
|
333
353
|
- Make sure the `APIFY_TOKEN` environment variable is set.
|
|
334
354
|
- Always use the latest version of the MCP server by using `@apify/actors-mcp-server@latest`.
|
|
335
355
|
|
|
356
|
+
### Debugging the NPM package
|
|
357
|
+
|
|
358
|
+
To debug the server, use the [MCP Inspector](https://github.com/modelcontextprotocol/inspector) tool:
|
|
359
|
+
|
|
360
|
+
```shell
|
|
361
|
+
export APIFY_TOKEN="your-apify-token"
|
|
362
|
+
npx @modelcontextprotocol/inspector npx -y @apify/actors-mcp-server
|
|
363
|
+
```
|
|
364
|
+
|
|
336
365
|
## 💡 Limitations
|
|
337
366
|
|
|
338
367
|
The Actor input schema is processed to be compatible with most MCP clients while adhering to [JSON Schema](https://json-schema.org/) standards. The processing includes:
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/actor/server.ts"],"names":[],"mappings":"AAUA,OAAO,OAAO,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/actor/server.ts"],"names":[],"mappings":"AAUA,OAAO,OAAO,MAAM,SAAS,CAAC;AAU9B,wBAAgB,gBAAgB,CAC5B,IAAI,EAAE,MAAM,GACb,OAAO,CAAC,OAAO,CAoPjB"}
|
package/dist/actor/server.js
CHANGED
|
@@ -8,6 +8,7 @@ import express from 'express';
|
|
|
8
8
|
import log from '@apify/log';
|
|
9
9
|
import { ApifyClient } from '../apify-client.js';
|
|
10
10
|
import { ActorsMcpServer } from '../mcp/server.js';
|
|
11
|
+
import { parseBooleanFromString } from '../utils/generic.js';
|
|
11
12
|
import { getHelpMessage, HEADER_READINESS_PROBE, Routes, TransportType } from './const.js';
|
|
12
13
|
import { getActorRunData } from './utils.js';
|
|
13
14
|
export function createExpressApp(host) {
|
|
@@ -61,13 +62,25 @@ export function createExpressApp(host) {
|
|
|
61
62
|
res.status(200).end();
|
|
62
63
|
});
|
|
63
64
|
app.get(Routes.SSE, async (req, res) => {
|
|
65
|
+
var _a, _b;
|
|
64
66
|
try {
|
|
65
67
|
log.info('MCP API', {
|
|
66
68
|
mth: req.method,
|
|
67
69
|
rt: Routes.SSE,
|
|
68
70
|
tr: TransportType.SSE,
|
|
69
71
|
});
|
|
70
|
-
|
|
72
|
+
// Extract telemetry query parameters
|
|
73
|
+
const urlParams = new URL(req.url, `http://${req.headers.host}`).searchParams;
|
|
74
|
+
const telemetryEnabledParam = urlParams.get('telemetry-enabled');
|
|
75
|
+
// URL param > env var > default (true)
|
|
76
|
+
const telemetryEnabled = (_b = (_a = parseBooleanFromString(telemetryEnabledParam)) !== null && _a !== void 0 ? _a : parseBooleanFromString(process.env.TELEMETRY_ENABLED)) !== null && _b !== void 0 ? _b : true;
|
|
77
|
+
const mcpServer = new ActorsMcpServer({
|
|
78
|
+
setupSigintHandler: false,
|
|
79
|
+
transportType: 'sse',
|
|
80
|
+
telemetry: {
|
|
81
|
+
enabled: telemetryEnabled,
|
|
82
|
+
},
|
|
83
|
+
});
|
|
71
84
|
const transport = new SSEServerTransport(Routes.MESSAGE, res);
|
|
72
85
|
// Load MCP server tools
|
|
73
86
|
const apifyToken = process.env.APIFY_TOKEN;
|
|
@@ -134,6 +147,7 @@ export function createExpressApp(host) {
|
|
|
134
147
|
// It must be used before the POST /mcp route but after the GET /sse route :shrug:
|
|
135
148
|
app.use(express.json());
|
|
136
149
|
app.post(Routes.MCP, async (req, res) => {
|
|
150
|
+
var _a, _b;
|
|
137
151
|
log.info('Received MCP request:', req.body);
|
|
138
152
|
try {
|
|
139
153
|
// Check for existing session ID
|
|
@@ -144,12 +158,24 @@ export function createExpressApp(host) {
|
|
|
144
158
|
transport = transports[sessionId];
|
|
145
159
|
}
|
|
146
160
|
else if (!sessionId && isInitializeRequest(req.body)) {
|
|
147
|
-
// New initialization request
|
|
161
|
+
// New initialization request
|
|
148
162
|
transport = new StreamableHTTPServerTransport({
|
|
149
163
|
sessionIdGenerator: () => randomUUID(),
|
|
150
164
|
enableJsonResponse: false, // Use SSE response mode
|
|
151
165
|
});
|
|
152
|
-
|
|
166
|
+
// Extract telemetry query parameters
|
|
167
|
+
const urlParams = new URL(req.url, `http://${req.headers.host}`).searchParams;
|
|
168
|
+
const telemetryEnabledParam = urlParams.get('telemetry-enabled');
|
|
169
|
+
// URL param > env var > default (true)
|
|
170
|
+
const telemetryEnabled = (_b = (_a = parseBooleanFromString(telemetryEnabledParam)) !== null && _a !== void 0 ? _a : parseBooleanFromString(process.env.TELEMETRY_ENABLED)) !== null && _b !== void 0 ? _b : true;
|
|
171
|
+
const mcpServer = new ActorsMcpServer({
|
|
172
|
+
setupSigintHandler: false,
|
|
173
|
+
initializeRequestData: req.body,
|
|
174
|
+
transportType: 'http',
|
|
175
|
+
telemetry: {
|
|
176
|
+
enabled: telemetryEnabled,
|
|
177
|
+
},
|
|
178
|
+
});
|
|
153
179
|
// Load MCP server tools
|
|
154
180
|
const apifyToken = process.env.APIFY_TOKEN;
|
|
155
181
|
log.debug('Loading tools from URL', { sessionId: transport.sessionId, tr: TransportType.HTTP });
|
package/dist/actor/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/actor/server.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/actor/server.ts"],"names":[],"mappings":"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"}
|
package/dist/const.d.ts
CHANGED
|
@@ -54,6 +54,8 @@ export declare const GET_HTML_SKELETON_CACHE_TTL_SECS: number;
|
|
|
54
54
|
export declare const GET_HTML_SKELETON_CACHE_MAX_SIZE = 200;
|
|
55
55
|
export declare const MCP_SERVER_CACHE_MAX_SIZE = 500;
|
|
56
56
|
export declare const MCP_SERVER_CACHE_TTL_SECS: number;
|
|
57
|
+
export declare const USER_CACHE_MAX_SIZE = 200;
|
|
58
|
+
export declare const USER_CACHE_TTL_SECS: number;
|
|
57
59
|
export declare const ACTOR_PRICING_MODEL: {
|
|
58
60
|
/** Rental Actors */
|
|
59
61
|
readonly FLAT_PRICE_PER_MONTH: "FLAT_PRICE_PER_MONTH";
|
|
@@ -76,4 +78,13 @@ export declare const ALGOLIA: {
|
|
|
76
78
|
};
|
|
77
79
|
export declare const PROGRESS_NOTIFICATION_INTERVAL_MS = 5000;
|
|
78
80
|
export declare const APIFY_STORE_URL = "https://apify.com";
|
|
81
|
+
export declare const TELEMETRY_ENV: {
|
|
82
|
+
readonly DEV: "DEV";
|
|
83
|
+
readonly PROD: "PROD";
|
|
84
|
+
};
|
|
85
|
+
export type TelemetryEnv = (typeof TELEMETRY_ENV)[keyof typeof TELEMETRY_ENV];
|
|
86
|
+
export declare const DEFAULT_TELEMETRY_ENABLED = true;
|
|
87
|
+
export declare const DEFAULT_TELEMETRY_ENV: TelemetryEnv;
|
|
88
|
+
export declare const SEGMENT_FLUSH_AT_EVENTS = 50;
|
|
89
|
+
export declare const SEGMENT_FLUSH_INTERVAL_MS = 5000;
|
|
79
90
|
//# sourceMappingURL=const.d.ts.map
|
package/dist/const.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"const.d.ts","sourceRoot":"","sources":["../src/const.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,uBAAuB,OAAQ,CAAC;AAE7C,eAAO,MAAM,qBAAqB,OAAO,CAAC;AAC1C,eAAO,MAAM,4BAA4B,MAAM,CAAC;AAGhD,eAAO,MAAM,uBAAuB,OAAQ,CAAC;AAG7C;;;;;GAKG;AACH,eAAO,MAAM,qBAAqB,QAAQ,CAAC;AAG3C,eAAO,MAAM,WAAW,qBAAqB,CAAC;AAC9C,eAAO,MAAM,cAAc,UAAU,CAAC;AAGtC,eAAO,MAAM,iBAAiB,sBAAsB,CAAC;AAErD,oBAAY,WAAW;IACnB,SAAS,cAAc;IACvB,UAAU,eAAe;IACzB,iBAAiB,wBAAwB;IACzC,gBAAgB,qBAAqB;IACrC,gBAAgB,oBAAoB;IACpC,cAAc,kBAAkB;IAChC,cAAc,kBAAkB;IAChC,kBAAkB,uBAAuB;IACzC,WAAW,gBAAgB;IAC3B,gBAAgB,qBAAqB;IACrC,iBAAiB,sBAAsB;IACvC,kBAAkB,uBAAuB;IACzC,wBAAwB,6BAA6B;IACrD,mBAAmB,wBAAwB;IAC3C,wBAAwB,6BAA6B;IACrD,0BAA0B,+BAA+B;IACzD,YAAY,kBAAkB;IAC9B,WAAW,sBAAsB;IACjC,UAAU,qBAAqB;IAC/B,iBAAiB,sBAAsB;CAC1C;AAED,eAAO,MAAM,eAAe,0BAA0B,CAAC;AACvD,eAAO,MAAM,kCAAkC,UAA2C,CAAC;AAC3F,eAAO,MAAM,+BAA+B,+JAA+J,CAAC;AAE5M,eAAO,MAAM,QAAQ;;CAIpB,CAAC;AAEF,eAAO,MAAM,sBAAsB,IAAM,CAAC;AAC1C,eAAO,MAAM,iBAAiB,oBAAwC,CAAC;AAEvE,eAAO,MAAM,yBAAyB,QAAisB,CAAC;AAExuB,eAAO,MAAM,mCAAmC,oDAAoD,CAAC;AAErG,eAAO,MAAM,sBAAsB,QAA0wB,CAAC;AAE9yB,eAAO,MAAM,oCAAoC,2JAAuJ,CAAC;AAGzM,eAAO,MAAM,oBAAoB,MAAM,CAAC;AACxC,eAAO,MAAM,oBAAoB,QAAU,CAAC;AAC5C,eAAO,MAAM,yBAAyB,MAAM,CAAC;AAC7C,eAAO,MAAM,yBAAyB,QAAU,CAAC;AACjD,eAAO,MAAM,gCAAgC,QAAS,CAAC;AACvD,eAAO,MAAM,gCAAgC,MAAM,CAAC;AACpD,eAAO,MAAM,yBAAyB,MAAM,CAAC;AAC7C,eAAO,MAAM,yBAAyB,QAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"const.d.ts","sourceRoot":"","sources":["../src/const.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,uBAAuB,OAAQ,CAAC;AAE7C,eAAO,MAAM,qBAAqB,OAAO,CAAC;AAC1C,eAAO,MAAM,4BAA4B,MAAM,CAAC;AAGhD,eAAO,MAAM,uBAAuB,OAAQ,CAAC;AAG7C;;;;;GAKG;AACH,eAAO,MAAM,qBAAqB,QAAQ,CAAC;AAG3C,eAAO,MAAM,WAAW,qBAAqB,CAAC;AAC9C,eAAO,MAAM,cAAc,UAAU,CAAC;AAGtC,eAAO,MAAM,iBAAiB,sBAAsB,CAAC;AAErD,oBAAY,WAAW;IACnB,SAAS,cAAc;IACvB,UAAU,eAAe;IACzB,iBAAiB,wBAAwB;IACzC,gBAAgB,qBAAqB;IACrC,gBAAgB,oBAAoB;IACpC,cAAc,kBAAkB;IAChC,cAAc,kBAAkB;IAChC,kBAAkB,uBAAuB;IACzC,WAAW,gBAAgB;IAC3B,gBAAgB,qBAAqB;IACrC,iBAAiB,sBAAsB;IACvC,kBAAkB,uBAAuB;IACzC,wBAAwB,6BAA6B;IACrD,mBAAmB,wBAAwB;IAC3C,wBAAwB,6BAA6B;IACrD,0BAA0B,+BAA+B;IACzD,YAAY,kBAAkB;IAC9B,WAAW,sBAAsB;IACjC,UAAU,qBAAqB;IAC/B,iBAAiB,sBAAsB;CAC1C;AAED,eAAO,MAAM,eAAe,0BAA0B,CAAC;AACvD,eAAO,MAAM,kCAAkC,UAA2C,CAAC;AAC3F,eAAO,MAAM,+BAA+B,+JAA+J,CAAC;AAE5M,eAAO,MAAM,QAAQ;;CAIpB,CAAC;AAEF,eAAO,MAAM,sBAAsB,IAAM,CAAC;AAC1C,eAAO,MAAM,iBAAiB,oBAAwC,CAAC;AAEvE,eAAO,MAAM,yBAAyB,QAAisB,CAAC;AAExuB,eAAO,MAAM,mCAAmC,oDAAoD,CAAC;AAErG,eAAO,MAAM,sBAAsB,QAA0wB,CAAC;AAE9yB,eAAO,MAAM,oCAAoC,2JAAuJ,CAAC;AAGzM,eAAO,MAAM,oBAAoB,MAAM,CAAC;AACxC,eAAO,MAAM,oBAAoB,QAAU,CAAC;AAC5C,eAAO,MAAM,yBAAyB,MAAM,CAAC;AAC7C,eAAO,MAAM,yBAAyB,QAAU,CAAC;AACjD,eAAO,MAAM,gCAAgC,QAAS,CAAC;AACvD,eAAO,MAAM,gCAAgC,MAAM,CAAC;AACpD,eAAO,MAAM,yBAAyB,MAAM,CAAC;AAC7C,eAAO,MAAM,yBAAyB,QAAU,CAAC;AACjD,eAAO,MAAM,mBAAmB,MAAM,CAAC;AACvC,eAAO,MAAM,mBAAmB,QAAU,CAAC;AAE3C,eAAO,MAAM,mBAAmB;IAC5B,oBAAoB;;;IAGpB,kCAAkC;;IAElC,iCAAiC;;CAE3B,CAAC;AAEX;;;GAGG;AACH,eAAO,MAAM,wBAAwB,KAAK,CAAC;AAE3C,eAAO,MAAM,uBAAuB,SAAS,CAAC;AAE9C,eAAO,MAAM,OAAO;;;;CAInB,CAAC;AAEF,eAAO,MAAM,iCAAiC,OAAQ,CAAC;AAEvD,eAAO,MAAM,eAAe,sBAAsB,CAAC;AAGnD,eAAO,MAAM,aAAa;;;CAGhB,CAAC;AACX,MAAM,MAAM,YAAY,GAAG,CAAC,OAAO,aAAa,CAAC,CAAC,MAAM,OAAO,aAAa,CAAC,CAAC;AAE9E,eAAO,MAAM,yBAAyB,OAAO,CAAC;AAC9C,eAAO,MAAM,qBAAqB,EAAE,YAAiC,CAAC;AAMtE,eAAO,MAAM,uBAAuB,KAAK,CAAC;AAE1C,eAAO,MAAM,yBAAyB,OAAQ,CAAC"}
|
package/dist/const.js
CHANGED
|
@@ -64,6 +64,8 @@ export const GET_HTML_SKELETON_CACHE_TTL_SECS = 5 * 60; // 5 minutes
|
|
|
64
64
|
export const GET_HTML_SKELETON_CACHE_MAX_SIZE = 200;
|
|
65
65
|
export const MCP_SERVER_CACHE_MAX_SIZE = 500;
|
|
66
66
|
export const MCP_SERVER_CACHE_TTL_SECS = 30 * 60; // 30 minutes
|
|
67
|
+
export const USER_CACHE_MAX_SIZE = 200;
|
|
68
|
+
export const USER_CACHE_TTL_SECS = 60 * 60; // 1 hour
|
|
67
69
|
export const ACTOR_PRICING_MODEL = {
|
|
68
70
|
/** Rental Actors */
|
|
69
71
|
FLAT_PRICE_PER_MONTH: 'FLAT_PRICE_PER_MONTH',
|
|
@@ -86,4 +88,18 @@ export const ALGOLIA = {
|
|
|
86
88
|
};
|
|
87
89
|
export const PROGRESS_NOTIFICATION_INTERVAL_MS = 5000; // 5 seconds
|
|
88
90
|
export const APIFY_STORE_URL = 'https://apify.com';
|
|
91
|
+
// Telemetry
|
|
92
|
+
export const TELEMETRY_ENV = {
|
|
93
|
+
DEV: 'DEV',
|
|
94
|
+
PROD: 'PROD',
|
|
95
|
+
};
|
|
96
|
+
export const DEFAULT_TELEMETRY_ENABLED = true;
|
|
97
|
+
export const DEFAULT_TELEMETRY_ENV = TELEMETRY_ENV.PROD;
|
|
98
|
+
// We are using the same values as apify-core for consistency (despite that we ship events of different types).
|
|
99
|
+
// https://github.com/apify/apify-core/blob/2284766c122c6ac5bc4f27ec28051f4057d6f9c0/src/packages/analytics/src/server/segment.ts#L28
|
|
100
|
+
// Reasoning from the apify-core:
|
|
101
|
+
// Flush at 50 events to avoid sending too many small requests (default is 15)
|
|
102
|
+
export const SEGMENT_FLUSH_AT_EVENTS = 50;
|
|
103
|
+
// Flush interval in milliseconds (default is 10000)
|
|
104
|
+
export const SEGMENT_FLUSH_INTERVAL_MS = 5000;
|
|
89
105
|
//# sourceMappingURL=const.js.map
|
package/dist/const.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"const.js","sourceRoot":"","sources":["../src/const.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"const.js","sourceRoot":"","sources":["../src/const.ts"],"names":[],"mappings":"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"}
|
package/dist/mcp/server.d.ts
CHANGED
|
@@ -3,17 +3,8 @@
|
|
|
3
3
|
*/
|
|
4
4
|
import { Server } from '@modelcontextprotocol/sdk/server/index.js';
|
|
5
5
|
import type { Transport } from '@modelcontextprotocol/sdk/shared/transport.js';
|
|
6
|
-
import type { InitializeRequest } from '@modelcontextprotocol/sdk/types.js';
|
|
7
6
|
import { ApifyClient } from '../apify-client.js';
|
|
8
|
-
import type { ToolEntry } from '../types.js';
|
|
9
|
-
interface ActorsMcpServerOptions {
|
|
10
|
-
setupSigintHandler?: boolean;
|
|
11
|
-
/**
|
|
12
|
-
* Switch to enable Skyfire agentic payment mode.
|
|
13
|
-
*/
|
|
14
|
-
skyfireMode?: boolean;
|
|
15
|
-
initializeRequestData?: InitializeRequest;
|
|
16
|
-
}
|
|
7
|
+
import type { ActorsMcpServerOptions, ToolEntry } from '../types.js';
|
|
17
8
|
/**
|
|
18
9
|
* Create Apify MCP server
|
|
19
10
|
*/
|
|
@@ -24,7 +15,13 @@ export declare class ActorsMcpServer {
|
|
|
24
15
|
private sigintHandler;
|
|
25
16
|
private currentLogLevel;
|
|
26
17
|
readonly options: ActorsMcpServerOptions;
|
|
18
|
+
private telemetryEnabled;
|
|
19
|
+
private telemetryEnv;
|
|
27
20
|
constructor(options?: ActorsMcpServerOptions);
|
|
21
|
+
/**
|
|
22
|
+
* Telemetry configuration with precedence: explicit options > env vars > defaults
|
|
23
|
+
*/
|
|
24
|
+
private setupTelemetry;
|
|
28
25
|
/**
|
|
29
26
|
* Returns an array of tool names.
|
|
30
27
|
* @returns {string[]} - An array of tool names.
|
|
@@ -108,8 +105,18 @@ export declare class ActorsMcpServer {
|
|
|
108
105
|
*/
|
|
109
106
|
private setupPromptHandlers;
|
|
110
107
|
private setupToolHandlers;
|
|
108
|
+
/**
|
|
109
|
+
* Finalizes and tracks telemetry for a tool call.
|
|
110
|
+
* Calculates execution time, sets final status, and sends the telemetry event.
|
|
111
|
+
*
|
|
112
|
+
* @param telemetryData - Telemetry data to finalize and track (null if telemetry is disabled)
|
|
113
|
+
* @param userId - Apify user ID (string or null if not available)
|
|
114
|
+
* @param startTime - Timestamp when the tool call started
|
|
115
|
+
* @param toolStatus - Final status of the tool call ('succeeded', 'failed', or 'aborted')
|
|
116
|
+
*/
|
|
117
|
+
private finalizeAndTrackTelemetry;
|
|
118
|
+
private prepareTelemetryData;
|
|
111
119
|
connect(transport: Transport): Promise<void>;
|
|
112
120
|
close(): Promise<void>;
|
|
113
121
|
}
|
|
114
|
-
export {};
|
|
115
122
|
//# sourceMappingURL=server.d.ts.map
|
package/dist/mcp/server.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AACnE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,+CAA+C,CAAC;
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AACnE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,+CAA+C,CAAC;AAqB/E,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAgBjD,OAAO,KAAK,EAER,sBAAsB,EAItB,SAAS,EACZ,MAAM,aAAa,CAAC;AAerB;;GAEG;AACH,qBAAa,eAAe;IACxB,SAAgB,MAAM,EAAE,MAAM,CAAC;IAC/B,SAAgB,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IAC9C,OAAO,CAAC,mBAAmB,CAAkC;IAC7D,OAAO,CAAC,aAAa,CAAoC;IACzD,OAAO,CAAC,eAAe,CAAU;IACjC,SAAgB,OAAO,EAAE,sBAAsB,CAAC;IAGhD,OAAO,CAAC,gBAAgB,CAAwB;IAChD,OAAO,CAAC,YAAY,CAAuC;gBAE/C,OAAO,GAAE,sBAA2B;IAmChD;;OAEG;IACH,OAAO,CAAC,cAAc;IAetB;;;OAGG;IACI,aAAa,IAAI,MAAM,EAAE;IAIhC;;;;;;;MAOE;IACK,2BAA2B,CAAC,OAAO,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,IAAI;IAOzE;;;MAGE;IACK,6BAA6B;IAOpC;;;OAGG;IACH,OAAO,CAAC,qBAAqB;IAM7B;;;OAGG;IACI,kBAAkB,IAAI,MAAM,EAAE;IAMrC;;;OAGG;IACH,OAAO,CAAC,yBAAyB;IAQjC;;;OAGG;IACI,gBAAgB,IAAI,MAAM,EAAE;IAInC;;;;;MAKE;IACW,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,WAAW,EAAE,WAAW;IA6B1E;;;;;;OAMG;IACU,iBAAiB,CAAC,eAAe,EAAE,MAAM,EAAE,EAAE,WAAW,EAAE,WAAW,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IAQzG;;;;;;OAMG;IACU,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,WAAW,EAAE,WAAW;IAQnE;OACG;IACI,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,+BAA+B,UAAQ,GAAG,MAAM,EAAE;IAahG;;;;;OAKG;IACI,WAAW,CAAC,KAAK,EAAE,SAAS,EAAE,EAAE,+BAA+B,UAAQ;IAyC9E,OAAO,CAAC,yBAAyB;IAQjC,OAAO,CAAC,gBAAgB;IASxB,OAAO,CAAC,kBAAkB;IAc1B,OAAO,CAAC,iBAAiB;IAczB,OAAO,CAAC,oBAAoB;IAW5B,OAAO,CAAC,qBAAqB;IA8C7B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAyC3B,OAAO,CAAC,iBAAiB;IAwPzB;;;;;;;;OAQG;IACH,OAAO,CAAC,yBAAyB;YAsBnB,oBAAoB;IAmC5B,OAAO,CAAC,SAAS,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IAI5C,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAoB/B"}
|
package/dist/mcp/server.js
CHANGED
|
@@ -5,15 +5,19 @@ import { Server } from '@modelcontextprotocol/sdk/server/index.js';
|
|
|
5
5
|
import { CallToolRequestSchema, CallToolResultSchema, ErrorCode, GetPromptRequestSchema, ListPromptsRequestSchema, ListResourcesRequestSchema, ListResourceTemplatesRequestSchema, ListToolsRequestSchema, McpError, ReadResourceRequestSchema, ServerNotificationSchema, SetLevelRequestSchema, } from '@modelcontextprotocol/sdk/types.js';
|
|
6
6
|
import log from '@apify/log';
|
|
7
7
|
import { ApifyClient } from '../apify-client.js';
|
|
8
|
-
import { HelperTools, SERVER_NAME, SERVER_VERSION, SKYFIRE_PAY_ID_PROPERTY_DESCRIPTION, SKYFIRE_README_CONTENT, SKYFIRE_TOOL_INSTRUCTIONS, } from '../const.js';
|
|
8
|
+
import { DEFAULT_TELEMETRY_ENABLED, DEFAULT_TELEMETRY_ENV, HelperTools, SERVER_NAME, SERVER_VERSION, SKYFIRE_PAY_ID_PROPERTY_DESCRIPTION, SKYFIRE_README_CONTENT, SKYFIRE_TOOL_INSTRUCTIONS, } from '../const.js';
|
|
9
9
|
import { prompts } from '../prompts/index.js';
|
|
10
|
+
import { getTelemetryEnv, trackToolCall } from '../telemetry.js';
|
|
10
11
|
import { callActorGetDataset, defaultTools, getActorsAsTools, toolCategories } from '../tools/index.js';
|
|
11
12
|
import { decodeDotPropertyNames } from '../tools/utils.js';
|
|
12
13
|
import { buildActorResponseContent } from '../utils/actor-response.js';
|
|
14
|
+
import { parseBooleanFromString } from '../utils/generic.js';
|
|
13
15
|
import { logHttpError } from '../utils/logging.js';
|
|
14
16
|
import { buildMCPResponse } from '../utils/mcp.js';
|
|
15
17
|
import { createProgressTracker } from '../utils/progress.js';
|
|
16
18
|
import { cloneToolEntry, getToolPublicFieldOnly } from '../utils/tools.js';
|
|
19
|
+
import { getUserIdFromTokenCached } from '../utils/userid-cache.js';
|
|
20
|
+
import { getPackageVersion } from '../utils/version.js';
|
|
17
21
|
import { connectMCPClient } from './client.js';
|
|
18
22
|
import { EXTERNAL_TOOL_CALL_TIMEOUT_MSEC, LOG_LEVEL_MAP } from './const.js';
|
|
19
23
|
import { processParamsGetTools } from './utils.js';
|
|
@@ -58,6 +62,19 @@ export class ActorsMcpServer {
|
|
|
58
62
|
writable: true,
|
|
59
63
|
value: void 0
|
|
60
64
|
});
|
|
65
|
+
// Telemetry configuration (resolved from options and env vars in setupTelemetry)
|
|
66
|
+
Object.defineProperty(this, "telemetryEnabled", {
|
|
67
|
+
enumerable: true,
|
|
68
|
+
configurable: true,
|
|
69
|
+
writable: true,
|
|
70
|
+
value: null
|
|
71
|
+
});
|
|
72
|
+
Object.defineProperty(this, "telemetryEnv", {
|
|
73
|
+
enumerable: true,
|
|
74
|
+
configurable: true,
|
|
75
|
+
writable: true,
|
|
76
|
+
value: DEFAULT_TELEMETRY_ENV
|
|
77
|
+
});
|
|
61
78
|
this.options = options;
|
|
62
79
|
const { setupSigintHandler = true } = options;
|
|
63
80
|
this.server = new Server({
|
|
@@ -67,7 +84,7 @@ export class ActorsMcpServer {
|
|
|
67
84
|
capabilities: {
|
|
68
85
|
tools: { listChanged: true },
|
|
69
86
|
/**
|
|
70
|
-
* Declaring
|
|
87
|
+
* Declaring resources even though we are not using them
|
|
71
88
|
* to prevent clients like Claude desktop from failing.
|
|
72
89
|
*/
|
|
73
90
|
resources: {},
|
|
@@ -75,6 +92,7 @@ export class ActorsMcpServer {
|
|
|
75
92
|
logging: {},
|
|
76
93
|
},
|
|
77
94
|
});
|
|
95
|
+
this.setupTelemetry();
|
|
78
96
|
this.setupLoggingProxy();
|
|
79
97
|
this.tools = new Map();
|
|
80
98
|
this.setupErrorHandling(setupSigintHandler);
|
|
@@ -86,6 +104,24 @@ export class ActorsMcpServer {
|
|
|
86
104
|
*/
|
|
87
105
|
this.setupResourceHandlers();
|
|
88
106
|
}
|
|
107
|
+
/**
|
|
108
|
+
* Telemetry configuration with precedence: explicit options > env vars > defaults
|
|
109
|
+
*/
|
|
110
|
+
setupTelemetry() {
|
|
111
|
+
var _a, _b, _c;
|
|
112
|
+
const explicitEnabled = parseBooleanFromString((_a = this.options.telemetry) === null || _a === void 0 ? void 0 : _a.enabled);
|
|
113
|
+
if (explicitEnabled !== undefined) {
|
|
114
|
+
this.telemetryEnabled = explicitEnabled;
|
|
115
|
+
}
|
|
116
|
+
else {
|
|
117
|
+
const envEnabled = parseBooleanFromString(process.env.TELEMETRY_ENABLED);
|
|
118
|
+
this.telemetryEnabled = envEnabled !== null && envEnabled !== void 0 ? envEnabled : DEFAULT_TELEMETRY_ENABLED;
|
|
119
|
+
}
|
|
120
|
+
// Configure telemetryEnv: explicit option > env var > default ('PROD')
|
|
121
|
+
if (this.telemetryEnabled) {
|
|
122
|
+
this.telemetryEnv = getTelemetryEnv((_c = (_b = this.options.telemetry) === null || _b === void 0 ? void 0 : _b.env) !== null && _c !== void 0 ? _c : process.env.TELEMETRY_ENV);
|
|
123
|
+
}
|
|
124
|
+
}
|
|
89
125
|
/**
|
|
90
126
|
* Returns an array of tool names.
|
|
91
127
|
* @returns {string[]} - An array of tool names.
|
|
@@ -209,7 +245,7 @@ export class ActorsMcpServer {
|
|
|
209
245
|
* Used primarily for SSE.
|
|
210
246
|
*/
|
|
211
247
|
async loadToolsFromUrl(url, apifyClient) {
|
|
212
|
-
const tools = await processParamsGetTools(url, apifyClient
|
|
248
|
+
const tools = await processParamsGetTools(url, apifyClient);
|
|
213
249
|
if (tools.length > 0) {
|
|
214
250
|
log.debug('Loading tools from query parameters');
|
|
215
251
|
this.upsertTools(tools, false);
|
|
@@ -237,21 +273,19 @@ export class ActorsMcpServer {
|
|
|
237
273
|
* @returns Array of added/updated tool wrappers
|
|
238
274
|
*/
|
|
239
275
|
upsertTools(tools, shouldNotifyToolsChangedHandler = false) {
|
|
240
|
-
// Handle Skyfire mode modifications before storing tools
|
|
241
276
|
if (this.options.skyfireMode) {
|
|
242
277
|
for (const wrap of tools) {
|
|
243
|
-
|
|
278
|
+
// Clone the tool before modifying it to avoid affecting shared objects
|
|
279
|
+
const clonedWrap = cloneToolEntry(wrap);
|
|
280
|
+
let modified = false;
|
|
281
|
+
// Handle Skyfire mode modifications
|
|
282
|
+
if (this.options.skyfireMode && (wrap.type === 'actor'
|
|
244
283
|
|| (wrap.type === 'internal' && wrap.name === HelperTools.ACTOR_CALL)
|
|
245
|
-
|| (wrap.type === 'internal' && wrap.name === HelperTools.ACTOR_OUTPUT_GET)) {
|
|
246
|
-
// Clone the tool before modifying it to avoid affecting shared objects
|
|
247
|
-
const clonedWrap = cloneToolEntry(wrap);
|
|
284
|
+
|| (wrap.type === 'internal' && wrap.name === HelperTools.ACTOR_OUTPUT_GET))) {
|
|
248
285
|
// Add Skyfire instructions to description if not already present
|
|
249
286
|
if (clonedWrap.description && !clonedWrap.description.includes(SKYFIRE_TOOL_INSTRUCTIONS)) {
|
|
250
287
|
clonedWrap.description += `\n\n${SKYFIRE_TOOL_INSTRUCTIONS}`;
|
|
251
288
|
}
|
|
252
|
-
else if (!clonedWrap.description) {
|
|
253
|
-
clonedWrap.description = SKYFIRE_TOOL_INSTRUCTIONS;
|
|
254
|
-
}
|
|
255
289
|
// Add skyfire-pay-id property if not present
|
|
256
290
|
if (clonedWrap.inputSchema && 'properties' in clonedWrap.inputSchema) {
|
|
257
291
|
const props = clonedWrap.inputSchema.properties;
|
|
@@ -262,13 +296,10 @@ export class ActorsMcpServer {
|
|
|
262
296
|
};
|
|
263
297
|
}
|
|
264
298
|
}
|
|
265
|
-
|
|
266
|
-
this.tools.set(clonedWrap.name, clonedWrap);
|
|
267
|
-
}
|
|
268
|
-
else {
|
|
269
|
-
// Store unmodified tools as-is
|
|
270
|
-
this.tools.set(wrap.name, wrap);
|
|
299
|
+
modified = true;
|
|
271
300
|
}
|
|
301
|
+
// Store the cloned and modified tool only if modifications were made
|
|
302
|
+
this.tools.set(clonedWrap.name, modified ? clonedWrap : wrap);
|
|
272
303
|
}
|
|
273
304
|
}
|
|
274
305
|
else {
|
|
@@ -428,15 +459,20 @@ export class ActorsMcpServer {
|
|
|
428
459
|
* @throws {McpError} - based on the McpServer class code from the typescript MCP SDK
|
|
429
460
|
*/
|
|
430
461
|
this.server.setRequestHandler(CallToolRequestSchema, async (request, extra) => {
|
|
462
|
+
var _a;
|
|
431
463
|
// eslint-disable-next-line prefer-const
|
|
432
464
|
let { name, arguments: args, _meta: meta } = request.params;
|
|
433
465
|
const { progressToken } = meta || {};
|
|
434
|
-
const apifyToken = (request.params.apifyToken || process.env.APIFY_TOKEN);
|
|
466
|
+
const apifyToken = (request.params.apifyToken || this.options.token || process.env.APIFY_TOKEN);
|
|
435
467
|
const userRentedActorIds = request.params.userRentedActorIds;
|
|
468
|
+
// mcpSessionId was injected upstream by stdio; optional (for telemetry purposes only)
|
|
469
|
+
const mcpSessionId = typeof request.params.mcpSessionId === 'string' ? request.params.mcpSessionId : undefined;
|
|
436
470
|
// Remove apifyToken from request.params just in case
|
|
437
471
|
delete request.params.apifyToken;
|
|
438
472
|
// Remove other custom params passed from apify-mcp-server
|
|
439
473
|
delete request.params.userRentedActorIds;
|
|
474
|
+
// Remove mcpSessionId
|
|
475
|
+
delete request.params.mcpSessionId;
|
|
440
476
|
// Validate token
|
|
441
477
|
if (!apifyToken && !this.options.skyfireMode) {
|
|
442
478
|
const msg = `APIFY_TOKEN is required but was not provided.
|
|
@@ -490,6 +526,9 @@ Please check the tool's input schema using ${HelperTools.ACTOR_GET_DETAILS} tool
|
|
|
490
526
|
await this.server.sendLoggingMessage({ level: 'error', data: msg });
|
|
491
527
|
throw new McpError(ErrorCode.InvalidParams, msg);
|
|
492
528
|
}
|
|
529
|
+
const { telemetryData, userId } = await this.prepareTelemetryData(tool, mcpSessionId, apifyToken);
|
|
530
|
+
const startTime = Date.now();
|
|
531
|
+
let toolStatus = 'succeeded';
|
|
493
532
|
try {
|
|
494
533
|
// Handle internal tool
|
|
495
534
|
if (tool.type === 'internal') {
|
|
@@ -510,6 +549,7 @@ Please check the tool's input schema using ${HelperTools.ACTOR_GET_DETAILS} tool
|
|
|
510
549
|
if (progressTracker) {
|
|
511
550
|
progressTracker.stop();
|
|
512
551
|
}
|
|
552
|
+
toolStatus = ('isError' in res && res.isError) ? 'failed' : 'succeeded';
|
|
513
553
|
return { ...res };
|
|
514
554
|
}
|
|
515
555
|
if (tool.type === 'actor-mcp') {
|
|
@@ -521,6 +561,7 @@ Please check the tool's input schema using ${HelperTools.ACTOR_GET_DETAILS} tool
|
|
|
521
561
|
Please verify the server URL is correct and accessible, and ensure you have a valid Apify token with appropriate permissions.`;
|
|
522
562
|
log.softFail(msg, { statusCode: 408 }); // 408 Request Timeout
|
|
523
563
|
await this.server.sendLoggingMessage({ level: 'error', data: msg });
|
|
564
|
+
toolStatus = 'failed';
|
|
524
565
|
return buildMCPResponse([msg], true);
|
|
525
566
|
}
|
|
526
567
|
// Only set up notification handlers if progressToken is provided by the client
|
|
@@ -557,8 +598,7 @@ Please verify the server URL is correct and accessible, and ensure you have a va
|
|
|
557
598
|
}
|
|
558
599
|
// Handle actor tool
|
|
559
600
|
if (tool.type === 'actor') {
|
|
560
|
-
if (this.options.skyfireMode
|
|
561
|
-
&& args['skyfire-pay-id'] === undefined) {
|
|
601
|
+
if (this.options.skyfireMode && args['skyfire-pay-id'] === undefined) {
|
|
562
602
|
return buildMCPResponse([SKYFIRE_TOOL_INSTRUCTIONS]);
|
|
563
603
|
}
|
|
564
604
|
// Create progress tracker if progressToken is available
|
|
@@ -575,6 +615,7 @@ Please verify the server URL is correct and accessible, and ensure you have a va
|
|
|
575
615
|
log.info('Calling Actor', { actorName: tool.actorFullName, input: actorArgs });
|
|
576
616
|
const callResult = await callActorGetDataset(tool.actorFullName, actorArgs, apifyClient, callOptions, progressTracker, extra.signal);
|
|
577
617
|
if (!callResult) {
|
|
618
|
+
toolStatus = 'aborted';
|
|
578
619
|
// Receivers of cancellation notifications SHOULD NOT send a response for the cancelled request
|
|
579
620
|
// https://modelcontextprotocol.io/specification/2025-06-18/basic/utilities/cancellation#behavior-requirements
|
|
580
621
|
return {};
|
|
@@ -590,6 +631,7 @@ Please verify the server URL is correct and accessible, and ensure you have a va
|
|
|
590
631
|
}
|
|
591
632
|
}
|
|
592
633
|
catch (error) {
|
|
634
|
+
toolStatus = ((_a = extra.signal) === null || _a === void 0 ? void 0 : _a.aborted) ? 'aborted' : 'failed';
|
|
593
635
|
logHttpError(error, 'Error occurred while calling tool', { toolName: name });
|
|
594
636
|
const errorMessage = (error instanceof Error) ? error.message : 'Unknown error';
|
|
595
637
|
return buildMCPResponse([
|
|
@@ -597,6 +639,9 @@ Please verify the server URL is correct and accessible, and ensure you have a va
|
|
|
597
639
|
Please verify the tool name, input parameters, and ensure all required resources are available.`,
|
|
598
640
|
], true);
|
|
599
641
|
}
|
|
642
|
+
finally {
|
|
643
|
+
this.finalizeAndTrackTelemetry(telemetryData, userId, startTime, toolStatus);
|
|
644
|
+
}
|
|
600
645
|
const availableTools = this.listToolNames();
|
|
601
646
|
const msg = `Unknown tool type for "${name}".
|
|
602
647
|
Available tools: ${availableTools.length > 0 ? availableTools.join(', ') : 'none'}.
|
|
@@ -609,6 +654,60 @@ Please verify the tool name and ensure the tool is properly registered.`;
|
|
|
609
654
|
throw new McpError(ErrorCode.InvalidParams, msg);
|
|
610
655
|
});
|
|
611
656
|
}
|
|
657
|
+
/**
|
|
658
|
+
* Finalizes and tracks telemetry for a tool call.
|
|
659
|
+
* Calculates execution time, sets final status, and sends the telemetry event.
|
|
660
|
+
*
|
|
661
|
+
* @param telemetryData - Telemetry data to finalize and track (null if telemetry is disabled)
|
|
662
|
+
* @param userId - Apify user ID (string or null if not available)
|
|
663
|
+
* @param startTime - Timestamp when the tool call started
|
|
664
|
+
* @param toolStatus - Final status of the tool call ('succeeded', 'failed', or 'aborted')
|
|
665
|
+
*/
|
|
666
|
+
finalizeAndTrackTelemetry(telemetryData, userId, startTime, toolStatus) {
|
|
667
|
+
if (!telemetryData) {
|
|
668
|
+
return;
|
|
669
|
+
}
|
|
670
|
+
const execTime = Date.now() - startTime;
|
|
671
|
+
const finalizedTelemetryData = {
|
|
672
|
+
...telemetryData,
|
|
673
|
+
tool_status: toolStatus,
|
|
674
|
+
tool_exec_time_ms: execTime,
|
|
675
|
+
};
|
|
676
|
+
trackToolCall(userId, this.telemetryEnv, finalizedTelemetryData);
|
|
677
|
+
}
|
|
678
|
+
/*
|
|
679
|
+
* Creates telemetry data for a tool call.
|
|
680
|
+
*/
|
|
681
|
+
async prepareTelemetryData(tool, mcpSessionId, apifyToken) {
|
|
682
|
+
var _a, _b, _c, _d, _e;
|
|
683
|
+
if (!this.telemetryEnabled) {
|
|
684
|
+
return { telemetryData: null, userId: null };
|
|
685
|
+
}
|
|
686
|
+
const toolFullName = tool.type === 'actor' ? tool.actorFullName : tool.name;
|
|
687
|
+
// Get userId from cache or fetch from API
|
|
688
|
+
let userId = null;
|
|
689
|
+
if (apifyToken) {
|
|
690
|
+
const apifyClient = new ApifyClient({ token: apifyToken });
|
|
691
|
+
userId = await getUserIdFromTokenCached(apifyToken, apifyClient);
|
|
692
|
+
log.debug('Telemetry: fetched userId', { userId });
|
|
693
|
+
}
|
|
694
|
+
const capabilities = (_b = (_a = this.options.initializeRequestData) === null || _a === void 0 ? void 0 : _a.params) === null || _b === void 0 ? void 0 : _b.capabilities;
|
|
695
|
+
const params = (_c = this.options.initializeRequestData) === null || _c === void 0 ? void 0 : _c.params;
|
|
696
|
+
const telemetryData = {
|
|
697
|
+
app: 'mcp',
|
|
698
|
+
app_version: getPackageVersion() || '',
|
|
699
|
+
mcp_client_name: ((_d = params === null || params === void 0 ? void 0 : params.clientInfo) === null || _d === void 0 ? void 0 : _d.name) || '',
|
|
700
|
+
mcp_client_version: ((_e = params === null || params === void 0 ? void 0 : params.clientInfo) === null || _e === void 0 ? void 0 : _e.version) || '',
|
|
701
|
+
mcp_protocol_version: (params === null || params === void 0 ? void 0 : params.protocolVersion) || '',
|
|
702
|
+
mcp_client_capabilities: capabilities || null,
|
|
703
|
+
mcp_session_id: mcpSessionId || '',
|
|
704
|
+
transport_type: this.options.transportType || '',
|
|
705
|
+
tool_name: toolFullName,
|
|
706
|
+
tool_status: 'succeeded', // Will be updated in finally
|
|
707
|
+
tool_exec_time_ms: 0, // Will be calculated in finally
|
|
708
|
+
};
|
|
709
|
+
return { telemetryData, userId };
|
|
710
|
+
}
|
|
612
711
|
async connect(transport) {
|
|
613
712
|
await this.server.connect(transport);
|
|
614
713
|
}
|