@apify/actors-mcp-server 0.1.20 → 0.1.22-beta.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.
- package/README.md +5 -25
- package/dist/actor/const.d.ts +15 -0
- package/dist/actor/const.d.ts.map +1 -0
- package/dist/actor/const.js +20 -0
- package/dist/actor/const.js.map +1 -0
- package/dist/{input.d.ts → actor/input.d.ts} +1 -1
- package/dist/actor/input.d.ts.map +1 -0
- package/dist/{input.js → actor/input.js} +5 -1
- package/dist/actor/input.js.map +1 -0
- package/dist/actor/server.d.ts +4 -0
- package/dist/actor/server.d.ts.map +1 -0
- package/dist/actor/server.js +81 -0
- package/dist/actor/server.js.map +1 -0
- package/dist/actor/types.d.ts +30 -0
- package/dist/actor/types.d.ts.map +1 -0
- package/dist/actor/types.js +2 -0
- package/dist/actor/types.js.map +1 -0
- package/dist/actor/utils.d.ts +11 -0
- package/dist/actor/utils.d.ts.map +1 -0
- package/dist/actor/utils.js +50 -0
- package/dist/actor/utils.js.map +1 -0
- package/dist/const.d.ts +10 -20
- package/dist/const.d.ts.map +1 -1
- package/dist/const.js +17 -27
- package/dist/const.js.map +1 -1
- package/dist/examples/clientSse.d.ts +10 -1
- package/dist/examples/clientSse.d.ts.map +1 -1
- package/dist/examples/clientSse.js +7 -4
- package/dist/examples/clientSse.js.map +1 -1
- package/dist/examples/clientStdio.js +2 -2
- package/dist/examples/clientStdio.js.map +1 -1
- package/dist/examples/clientStdioChat.js +1 -1
- package/dist/index.d.ts +2 -14
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -42
- package/dist/index.js.map +1 -1
- package/dist/main.d.ts +4 -0
- package/dist/main.d.ts.map +1 -1
- package/dist/main.js +21 -118
- package/dist/main.js.map +1 -1
- package/dist/mcp-server.d.ts +39 -0
- package/dist/mcp-server.d.ts.map +1 -0
- package/dist/mcp-server.js +155 -0
- package/dist/mcp-server.js.map +1 -0
- package/dist/stdio.d.ts +15 -0
- package/dist/stdio.d.ts.map +1 -0
- package/dist/stdio.js +46 -0
- package/dist/stdio.js.map +1 -0
- package/dist/tools/actor.d.ts +37 -0
- package/dist/tools/actor.d.ts.map +1 -0
- package/dist/tools/actor.js +89 -0
- package/dist/tools/actor.js.map +1 -0
- package/dist/tools/build.d.ts +12 -0
- package/dist/tools/build.d.ts.map +1 -0
- package/dist/tools/build.js +120 -0
- package/dist/tools/build.js.map +1 -0
- package/dist/tools/helpers.d.ts +19 -0
- package/dist/tools/helpers.d.ts.map +1 -0
- package/dist/tools/helpers.js +62 -0
- package/dist/tools/helpers.js.map +1 -0
- package/dist/tools/index.d.ts +6 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +8 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/mcp-apify-client.d.ts +6 -0
- package/dist/tools/mcp-apify-client.d.ts.map +1 -0
- package/dist/tools/mcp-apify-client.js +22 -0
- package/dist/tools/mcp-apify-client.js.map +1 -0
- package/dist/tools/store_collection.d.ts +21 -0
- package/dist/tools/store_collection.d.ts.map +1 -0
- package/dist/tools/store_collection.js +80 -0
- package/dist/tools/store_collection.js.map +1 -0
- package/dist/tools/utils.d.ts +77 -0
- package/dist/tools/utils.d.ts.map +1 -0
- package/dist/{actors.js → tools/utils.js} +112 -241
- package/dist/tools/utils.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/types.d.ts +70 -9
- package/dist/types.d.ts.map +1 -1
- package/package.json +17 -14
- package/dist/actors.d.ts +0 -74
- package/dist/actors.d.ts.map +0 -1
- package/dist/actors.js.map +0 -1
- package/dist/input.d.ts.map +0 -1
- package/dist/input.js.map +0 -1
- package/dist/logger.d.ts +0 -3
- package/dist/logger.d.ts.map +0 -1
- package/dist/logger.js +0 -4
- package/dist/logger.js.map +0 -1
- package/dist/server.d.ts +0 -43
- package/dist/server.d.ts.map +0 -1
- package/dist/server.js +0 -178
- package/dist/server.js.map +0 -1
- package/dist/tools.d.ts +0 -46
- package/dist/tools.d.ts.map +0 -1
- package/dist/tools.js +0 -128
- package/dist/tools.js.map +0 -1
package/README.md
CHANGED
|
@@ -7,11 +7,11 @@ Implementation of an MCP server for all [Apify Actors](https://apify.com/store).
|
|
|
7
7
|
This server enables interaction with one or more Apify Actors that can be defined in the MCP Server configuration.
|
|
8
8
|
|
|
9
9
|
The server can be used in two ways:
|
|
10
|
-
- **🇦 [MCP Server Actor](https://apify.com/apify/actors-mcp-server)** – HTTP server accessible via Server-Sent Events (SSE)
|
|
11
|
-
- **⾕ MCP Server Stdio** – Local server available via standard input/output (stdio)
|
|
10
|
+
- **🇦 [MCP Server Actor](https://apify.com/apify/actors-mcp-server)** – HTTP server accessible via Server-Sent Events (SSE), see [guide](#-mcp-server-actor)
|
|
11
|
+
- **⾕ MCP Server Stdio** – Local server available via standard input/output (stdio), see [guide](#-mcp-server-at-a-local-host)
|
|
12
12
|
|
|
13
13
|
|
|
14
|
-
|
|
14
|
+
It can also interact with the MCP server using chat-like UI with 💬 [Tester MCP Client](https://apify.com/jiri.spilka/tester-mcp-client)
|
|
15
15
|
|
|
16
16
|
# 🎯 What does Apify MCP server do?
|
|
17
17
|
|
|
@@ -211,26 +211,6 @@ You can also use [Smithery](https://smithery.ai/server/@apify/actors-mcp-server)
|
|
|
211
211
|
- [Node.js](https://nodejs.org/en) (v18 or higher)
|
|
212
212
|
- [Apify API Token](https://docs.apify.com/platform/integrations/api#api-token) (`APIFY_TOKEN`)
|
|
213
213
|
|
|
214
|
-
### Install
|
|
215
|
-
|
|
216
|
-
First, clone the repository using the following command:
|
|
217
|
-
|
|
218
|
-
```bash
|
|
219
|
-
git clone git@github.com:apify/actor-mcp-server.git
|
|
220
|
-
```
|
|
221
|
-
Navigate to the project directory and install the required dependencies:
|
|
222
|
-
|
|
223
|
-
```bash
|
|
224
|
-
cd actor-mcp-server
|
|
225
|
-
npm install
|
|
226
|
-
```
|
|
227
|
-
|
|
228
|
-
Before running the server, you need to build the project:
|
|
229
|
-
|
|
230
|
-
```bash
|
|
231
|
-
npm run build
|
|
232
|
-
```
|
|
233
|
-
|
|
234
214
|
#### Claude Desktop
|
|
235
215
|
|
|
236
216
|
To configure Claude Desktop to work with the MCP server, follow these steps. For a detailed guide, refer to the [Claude Desktop Users Guide](https://modelcontextprotocol.io/quickstart/user).
|
|
@@ -295,7 +275,7 @@ To configure Claude Desktop to work with the MCP server, follow these steps. For
|
|
|
295
275
|
Find and analyze instagram profile of the Rock.
|
|
296
276
|
```
|
|
297
277
|
|
|
298
|
-
#### Debugging NPM package @apify/actors-mcp-server with modelcontextprotocol/inspector
|
|
278
|
+
#### Debugging NPM package @apify/actors-mcp-server with @modelcontextprotocol/inspector
|
|
299
279
|
|
|
300
280
|
To debug the server, use the [MCP Inspector](https://github.com/modelcontextprotocol/inspector) tool:
|
|
301
281
|
|
|
@@ -378,7 +358,7 @@ You can launch the MCP Inspector via [`npm`](https://docs.npmjs.com/downloading-
|
|
|
378
358
|
|
|
379
359
|
```bash
|
|
380
360
|
export APIFY_TOKEN=your-apify-token
|
|
381
|
-
npx @modelcontextprotocol/inspector node ./dist/
|
|
361
|
+
npx @modelcontextprotocol/inspector node ./dist/stdio.js
|
|
382
362
|
```
|
|
383
363
|
|
|
384
364
|
Upon launching, the Inspector will display a URL that you can access in your browser to begin debugging.
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Constants for the Actor.
|
|
3
|
+
*/
|
|
4
|
+
export declare const HEADER_READINESS_PROBE = "x-apify-container-server-readiness-probe";
|
|
5
|
+
export declare const defaults: {
|
|
6
|
+
actors: string[];
|
|
7
|
+
enableActorAutoLoading: boolean;
|
|
8
|
+
maxMemoryMbytes: number;
|
|
9
|
+
};
|
|
10
|
+
export declare enum Routes {
|
|
11
|
+
ROOT = "/",
|
|
12
|
+
SSE = "/sse",
|
|
13
|
+
MESSAGE = "/message"
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=const.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"const.d.ts","sourceRoot":"","sources":["../../src/actor/const.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,eAAO,MAAM,sBAAsB,6CAA6C,CAAC;AAEjF,eAAO,MAAM,QAAQ;;;;CAQpB,CAAC;AAEF,oBAAY,MAAM;IACd,IAAI,MAAM;IACV,GAAG,SAAS;IACZ,OAAO,aAAa;CACvB"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Constants for the Actor.
|
|
3
|
+
*/
|
|
4
|
+
export const HEADER_READINESS_PROBE = 'x-apify-container-server-readiness-probe';
|
|
5
|
+
export const defaults = {
|
|
6
|
+
actors: [
|
|
7
|
+
'apify/instagram-scraper',
|
|
8
|
+
'apify/rag-web-browser',
|
|
9
|
+
'lukaskrivka/google-maps-with-contact-details',
|
|
10
|
+
],
|
|
11
|
+
enableActorAutoLoading: false,
|
|
12
|
+
maxMemoryMbytes: 4096,
|
|
13
|
+
};
|
|
14
|
+
export var Routes;
|
|
15
|
+
(function (Routes) {
|
|
16
|
+
Routes["ROOT"] = "/";
|
|
17
|
+
Routes["SSE"] = "/sse";
|
|
18
|
+
Routes["MESSAGE"] = "/message";
|
|
19
|
+
})(Routes || (Routes = {}));
|
|
20
|
+
//# sourceMappingURL=const.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"const.js","sourceRoot":"","sources":["../../src/actor/const.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,0CAA0C,CAAC;AAEjF,MAAM,CAAC,MAAM,QAAQ,GAAG;IACpB,MAAM,EAAE;QACJ,yBAAyB;QACzB,uBAAuB;QACvB,8CAA8C;KACjD;IACD,sBAAsB,EAAE,KAAK;IAC7B,eAAe,EAAE,IAAI;CACxB,CAAC;AAEF,MAAM,CAAN,IAAY,MAIX;AAJD,WAAY,MAAM;IACd,oBAAU,CAAA;IACV,sBAAY,CAAA;IACZ,8BAAoB,CAAA;AACxB,CAAC,EAJW,MAAM,KAAN,MAAM,QAIjB"}
|
|
@@ -4,5 +4,5 @@ import type { Input } from './types.js';
|
|
|
4
4
|
* @param originalInput
|
|
5
5
|
* @returns input
|
|
6
6
|
*/
|
|
7
|
-
export declare function processInput(originalInput: Partial<Input>):
|
|
7
|
+
export declare function processInput(originalInput: Partial<Input>): Input;
|
|
8
8
|
//# sourceMappingURL=input.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"input.d.ts","sourceRoot":"","sources":["../../src/actor/input.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAExC;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,aAAa,EAAE,OAAO,CAAC,KAAK,CAAC,GAAG,KAAK,CAejE"}
|
|
@@ -3,12 +3,16 @@
|
|
|
3
3
|
* @param originalInput
|
|
4
4
|
* @returns input
|
|
5
5
|
*/
|
|
6
|
-
export
|
|
6
|
+
export function processInput(originalInput) {
|
|
7
7
|
const input = originalInput;
|
|
8
8
|
// actors can be a string or an array of strings
|
|
9
9
|
if (input.actors && typeof input.actors === 'string') {
|
|
10
10
|
input.actors = input.actors.split(',').map((format) => format.trim());
|
|
11
11
|
}
|
|
12
|
+
// Convert string boolean to actual boolean
|
|
13
|
+
if (input.enableActorAutoLoading && typeof input.enableActorAutoLoading === 'string') {
|
|
14
|
+
input.enableActorAutoLoading = input.enableActorAutoLoading === 'true';
|
|
15
|
+
}
|
|
12
16
|
if (!input.enableActorAutoLoading) {
|
|
13
17
|
input.enableActorAutoLoading = false;
|
|
14
18
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"input.js","sourceRoot":"","sources":["../../src/actor/input.ts"],"names":[],"mappings":"AAKA;;;;GAIG;AACH,MAAM,UAAU,YAAY,CAAC,aAA6B;IACtD,MAAM,KAAK,GAAG,aAAsB,CAAC;IAErC,gDAAgD;IAChD,IAAI,KAAK,CAAC,MAAM,IAAI,OAAO,KAAK,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;QACnD,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,MAAc,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE,CAAa,CAAC;IAC9F,CAAC;IACD,2CAA2C;IAC3C,IAAI,KAAK,CAAC,sBAAsB,IAAI,OAAO,KAAK,CAAC,sBAAsB,KAAK,QAAQ,EAAE,CAAC;QACnF,KAAK,CAAC,sBAAsB,GAAG,KAAK,CAAC,sBAAsB,KAAK,MAAM,CAAC;IAC3E,CAAC;IACD,IAAI,CAAC,KAAK,CAAC,sBAAsB,EAAE,CAAC;QAChC,KAAK,CAAC,sBAAsB,GAAG,KAAK,CAAC;IACzC,CAAC;IACD,OAAO,KAAK,CAAC;AACjB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/actor/server.ts"],"names":[],"mappings":"AAMA,OAAO,OAAO,MAAM,SAAS,CAAC;AAK9B,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAGxD,wBAAgB,gBAAgB,CAC5B,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,eAAe,GAC3B,OAAO,CAAC,OAAO,CA0EjB"}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Express server implementation used for standby Actor mode.
|
|
3
|
+
*/
|
|
4
|
+
import { SSEServerTransport } from '@modelcontextprotocol/sdk/server/sse.js';
|
|
5
|
+
import express from 'express';
|
|
6
|
+
import log from '@apify/log';
|
|
7
|
+
import { HEADER_READINESS_PROBE, Routes } from './const.js';
|
|
8
|
+
import { getActorRunData, processParamsGetTools } from './utils.js';
|
|
9
|
+
export function createExpressApp(host, mcpServer) {
|
|
10
|
+
const HELP_MESSAGE = `Connect to the server with GET request to ${host}/sse?token=YOUR-APIFY-TOKEN`
|
|
11
|
+
+ ` and then send POST requests to ${host}/message?token=YOUR-APIFY-TOKEN`;
|
|
12
|
+
const app = express();
|
|
13
|
+
let transport;
|
|
14
|
+
app.route(Routes.ROOT)
|
|
15
|
+
.get(async (req, res) => {
|
|
16
|
+
if (req.headers && req.get(HEADER_READINESS_PROBE) !== undefined) {
|
|
17
|
+
log.debug('Received readiness probe');
|
|
18
|
+
res.status(200).json({ message: 'Server is ready' }).end();
|
|
19
|
+
return;
|
|
20
|
+
}
|
|
21
|
+
try {
|
|
22
|
+
log.info(`Received GET message at: ${Routes.ROOT}`);
|
|
23
|
+
const tools = await processParamsGetTools(req.url);
|
|
24
|
+
if (tools) {
|
|
25
|
+
mcpServer.updateTools(tools);
|
|
26
|
+
}
|
|
27
|
+
res.setHeader('Content-Type', 'text/event-stream');
|
|
28
|
+
res.setHeader('Cache-Control', 'no-cache');
|
|
29
|
+
res.setHeader('Connection', 'keep-alive');
|
|
30
|
+
res.status(200).json({ message: `Actor is using Model Context Protocol. ${HELP_MESSAGE}`, data: getActorRunData() }).end();
|
|
31
|
+
}
|
|
32
|
+
catch (error) {
|
|
33
|
+
log.error(`Error in GET ${Routes.ROOT} ${error}`);
|
|
34
|
+
res.status(500).json({ message: 'Internal Server Error' }).end();
|
|
35
|
+
}
|
|
36
|
+
})
|
|
37
|
+
.head((_req, res) => {
|
|
38
|
+
res.status(200).end();
|
|
39
|
+
});
|
|
40
|
+
app.route(Routes.SSE)
|
|
41
|
+
.get(async (req, res) => {
|
|
42
|
+
try {
|
|
43
|
+
log.info(`Received GET message at: ${Routes.SSE}`);
|
|
44
|
+
const tools = await processParamsGetTools(req.url);
|
|
45
|
+
if (tools) {
|
|
46
|
+
mcpServer.updateTools(tools);
|
|
47
|
+
}
|
|
48
|
+
transport = new SSEServerTransport(Routes.MESSAGE, res);
|
|
49
|
+
await mcpServer.connect(transport);
|
|
50
|
+
}
|
|
51
|
+
catch (error) {
|
|
52
|
+
log.error(`Error in GET ${Routes.SSE}: ${error}`);
|
|
53
|
+
res.status(500).json({ message: 'Internal Server Error' }).end();
|
|
54
|
+
}
|
|
55
|
+
});
|
|
56
|
+
app.route(Routes.MESSAGE)
|
|
57
|
+
.post(async (req, res) => {
|
|
58
|
+
try {
|
|
59
|
+
log.info(`Received POST message at: ${Routes.MESSAGE}`);
|
|
60
|
+
if (transport) {
|
|
61
|
+
await transport.handlePostMessage(req, res);
|
|
62
|
+
}
|
|
63
|
+
else {
|
|
64
|
+
res.status(400).json({
|
|
65
|
+
message: 'Server is not connected to the client. '
|
|
66
|
+
+ 'Connect to the server with GET request to /sse endpoint',
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
catch (error) {
|
|
71
|
+
log.error(`Error in POST ${Routes.MESSAGE}: ${error}`);
|
|
72
|
+
res.status(500).json({ message: 'Internal Server Error' }).end();
|
|
73
|
+
}
|
|
74
|
+
});
|
|
75
|
+
// Catch-all for undefined routes
|
|
76
|
+
app.use((req, res) => {
|
|
77
|
+
res.status(404).json({ message: `There is nothing at route ${req.method} ${req.originalUrl}. ${HELP_MESSAGE}` }).end();
|
|
78
|
+
});
|
|
79
|
+
return app;
|
|
80
|
+
}
|
|
81
|
+
//# sourceMappingURL=server.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/actor/server.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
export type Input = {
|
|
2
|
+
actors: string[] | string;
|
|
3
|
+
enableActorAutoLoading?: boolean;
|
|
4
|
+
maxActorMemoryBytes?: number;
|
|
5
|
+
debugActor?: string;
|
|
6
|
+
debugActorInput?: unknown;
|
|
7
|
+
};
|
|
8
|
+
export interface ActorRunData {
|
|
9
|
+
id?: string;
|
|
10
|
+
actId?: string;
|
|
11
|
+
userId?: string;
|
|
12
|
+
startedAt?: string;
|
|
13
|
+
finishedAt: null;
|
|
14
|
+
status: 'RUNNING';
|
|
15
|
+
meta: {
|
|
16
|
+
origin?: string;
|
|
17
|
+
};
|
|
18
|
+
options: {
|
|
19
|
+
build?: string;
|
|
20
|
+
memoryMbytes?: string;
|
|
21
|
+
};
|
|
22
|
+
buildId?: string;
|
|
23
|
+
defaultKeyValueStoreId?: string;
|
|
24
|
+
defaultDatasetId?: string;
|
|
25
|
+
defaultRequestQueueId?: string;
|
|
26
|
+
buildNumber?: string;
|
|
27
|
+
containerUrl?: string;
|
|
28
|
+
standbyUrl?: string;
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/actor/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,KAAK,GAAG;IAChB,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC;IAC1B,sBAAsB,CAAC,EAAE,OAAO,CAAC;IACjC,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,eAAe,CAAC,EAAE,OAAO,CAAC;CAC7B,CAAC;AAEF,MAAM,WAAW,YAAY;IACzB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,IAAI,CAAC;IACjB,MAAM,EAAE,SAAS,CAAC;IAClB,IAAI,EAAE;QACF,MAAM,CAAC,EAAE,MAAM,CAAC;KACnB,CAAC;IACF,OAAO,EAAE;QACL,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,YAAY,CAAC,EAAE,MAAM,CAAC;KACzB,CAAC;IACF,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;CACvB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/actor/types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { ActorRunData, Input } from './types.js';
|
|
2
|
+
import type { ToolWrap } from '../types.js';
|
|
3
|
+
export declare function parseInputParamsFromUrl(url: string): Input;
|
|
4
|
+
/**
|
|
5
|
+
* Process input parameters and get tools
|
|
6
|
+
* If URL contains query parameter `actors`, return tools from Actors otherwise return null.
|
|
7
|
+
* @param url
|
|
8
|
+
*/
|
|
9
|
+
export declare function processParamsGetTools(url: string): Promise<ToolWrap[]>;
|
|
10
|
+
export declare function getActorRunData(): ActorRunData | null;
|
|
11
|
+
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/actor/utils.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAEtD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAE5C,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,MAAM,GAAG,KAAK,CAI1D;AAED;;;;GAIG;AACH,wBAAsB,qBAAqB,CAAC,GAAG,EAAE,MAAM,uBAUtD;AAED,wBAAgB,eAAe,IAAI,YAAY,GAAG,IAAI,CAuBrD"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { parse } from 'node:querystring';
|
|
2
|
+
import { Actor } from 'apify';
|
|
3
|
+
import { processInput } from './input.js';
|
|
4
|
+
import { addTool, getActorsAsTools, removeTool } from '../tools/index.js';
|
|
5
|
+
export function parseInputParamsFromUrl(url) {
|
|
6
|
+
const query = url.split('?')[1] || '';
|
|
7
|
+
const params = parse(query);
|
|
8
|
+
return processInput(params);
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Process input parameters and get tools
|
|
12
|
+
* If URL contains query parameter `actors`, return tools from Actors otherwise return null.
|
|
13
|
+
* @param url
|
|
14
|
+
*/
|
|
15
|
+
export async function processParamsGetTools(url) {
|
|
16
|
+
const input = parseInputParamsFromUrl(url);
|
|
17
|
+
let tools = [];
|
|
18
|
+
if (input.actors) {
|
|
19
|
+
tools = await getActorsAsTools(input.actors);
|
|
20
|
+
}
|
|
21
|
+
if (input.enableActorAutoLoading) {
|
|
22
|
+
tools.push(addTool, removeTool);
|
|
23
|
+
}
|
|
24
|
+
return tools;
|
|
25
|
+
}
|
|
26
|
+
export function getActorRunData() {
|
|
27
|
+
return Actor.isAtHome() ? {
|
|
28
|
+
id: process.env.ACTOR_RUN_ID,
|
|
29
|
+
actId: process.env.ACTOR_ID,
|
|
30
|
+
userId: process.env.APIFY_USER_ID,
|
|
31
|
+
startedAt: process.env.ACTOR_STARTED_AT,
|
|
32
|
+
finishedAt: null,
|
|
33
|
+
status: 'RUNNING',
|
|
34
|
+
meta: {
|
|
35
|
+
origin: process.env.APIFY_META_ORIGIN,
|
|
36
|
+
},
|
|
37
|
+
options: {
|
|
38
|
+
build: process.env.ACTOR_BUILD_NUMBER,
|
|
39
|
+
memoryMbytes: process.env.ACTOR_MEMORY_MBYTES,
|
|
40
|
+
},
|
|
41
|
+
buildId: process.env.ACTOR_BUILD_ID,
|
|
42
|
+
defaultKeyValueStoreId: process.env.ACTOR_DEFAULT_KEY_VALUE_STORE_ID,
|
|
43
|
+
defaultDatasetId: process.env.ACTOR_DEFAULT_DATASET_ID,
|
|
44
|
+
defaultRequestQueueId: process.env.ACTOR_DEFAULT_REQUEST_QUEUE_ID,
|
|
45
|
+
buildNumber: process.env.ACTOR_BUILD_NUMBER,
|
|
46
|
+
containerUrl: process.env.ACTOR_WEB_SERVER_URL,
|
|
47
|
+
standbyUrl: process.env.ACTOR_STANDBY_URL,
|
|
48
|
+
} : null;
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/actor/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAEzC,OAAO,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC;AAE9B,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE1C,OAAO,EAAE,OAAO,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAG1E,MAAM,UAAU,uBAAuB,CAAC,GAAW;IAC/C,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IACtC,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAqB,CAAC;IAChD,OAAO,YAAY,CAAC,MAAM,CAAC,CAAC;AAChC,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAAC,GAAW;IACnD,MAAM,KAAK,GAAG,uBAAuB,CAAC,GAAG,CAAC,CAAC;IAC3C,IAAI,KAAK,GAAe,EAAE,CAAC;IAC3B,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;QACf,KAAK,GAAG,MAAM,gBAAgB,CAAC,KAAK,CAAC,MAAkB,CAAC,CAAC;IAC7D,CAAC;IACD,IAAI,KAAK,CAAC,sBAAsB,EAAE,CAAC;QAC/B,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;IACpC,CAAC;IACD,OAAO,KAAK,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,eAAe;IAC3B,OAAO,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;QACtB,EAAE,EAAE,OAAO,CAAC,GAAG,CAAC,YAAY;QAC5B,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,QAAQ;QAC3B,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,aAAa;QACjC,SAAS,EAAE,OAAO,CAAC,GAAG,CAAC,gBAAgB;QACvC,UAAU,EAAE,IAAI;QAChB,MAAM,EAAE,SAAS;QACjB,IAAI,EAAE;YACF,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,iBAAiB;SACxC;QACD,OAAO,EAAE;YACL,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,kBAAkB;YACrC,YAAY,EAAE,OAAO,CAAC,GAAG,CAAC,mBAAmB;SAChD;QACD,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,cAAc;QACnC,sBAAsB,EAAE,OAAO,CAAC,GAAG,CAAC,gCAAgC;QACpE,gBAAgB,EAAE,OAAO,CAAC,GAAG,CAAC,wBAAwB;QACtD,qBAAqB,EAAE,OAAO,CAAC,GAAG,CAAC,8BAA8B;QACjE,WAAW,EAAE,OAAO,CAAC,GAAG,CAAC,kBAAkB;QAC3C,YAAY,EAAE,OAAO,CAAC,GAAG,CAAC,oBAAoB;QAC9C,UAAU,EAAE,OAAO,CAAC,GAAG,CAAC,iBAAiB;KAC5C,CAAC,CAAC,CAAC,IAAI,CAAC;AACb,CAAC"}
|
package/dist/const.d.ts
CHANGED
|
@@ -1,27 +1,17 @@
|
|
|
1
|
-
export declare const SERVER_NAME = "apify-mcp-server";
|
|
2
|
-
export declare const SERVER_VERSION = "0.1.0";
|
|
3
|
-
export declare const HEADER_READINESS_PROBE = "x-apify-container-server-readiness-probe";
|
|
4
|
-
export declare const MAX_DESCRIPTION_LENGTH = 500;
|
|
5
|
-
export declare const USER_AGENT_ORIGIN = "Origin/mcp-server";
|
|
6
|
-
export declare const defaults: {
|
|
7
|
-
actors: string[];
|
|
8
|
-
enableActorAutoLoading: boolean;
|
|
9
|
-
maxMemoryMbytes: number;
|
|
10
|
-
};
|
|
11
1
|
export declare const ACTOR_README_MAX_LENGTH = 5000;
|
|
12
2
|
export declare const ACTOR_ENUM_MAX_LENGTH = 200;
|
|
3
|
+
export declare const ACTOR_MAX_DESCRIPTION_LENGTH = 500;
|
|
13
4
|
export declare const ACTOR_OUTPUT_MAX_CHARS_PER_ITEM = 5000;
|
|
14
5
|
export declare const ACTOR_OUTPUT_TRUNCATED_MESSAGE: string;
|
|
15
6
|
export declare const ACTOR_ADDITIONAL_INSTRUCTIONS: string;
|
|
16
|
-
export declare
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
MESSAGE = "/message"
|
|
7
|
+
export declare const ACTOR_MAX_MEMORY_MBYTES = 4096;
|
|
8
|
+
export declare const SERVER_NAME = "apify-mcp-server";
|
|
9
|
+
export declare const SERVER_VERSION = "0.1.0";
|
|
10
|
+
export declare const USER_AGENT_ORIGIN = "Origin/mcp-server";
|
|
11
|
+
export declare enum HelperTools {
|
|
12
|
+
SEARCH = "search",
|
|
13
|
+
ADD_TOOL = "add-tool",
|
|
14
|
+
REMOVE_TOOL = "remove-tool",
|
|
15
|
+
GET_TOOL_DETAILS = "get-tool-details"
|
|
26
16
|
}
|
|
27
17
|
//# 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":"
|
|
1
|
+
{"version":3,"file":"const.d.ts","sourceRoot":"","sources":["../src/const.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,uBAAuB,OAAQ,CAAC;AAC7C,eAAO,MAAM,qBAAqB,MAAM,CAAC;AACzC,eAAO,MAAM,4BAA4B,MAAM,CAAC;AAGhD,eAAO,MAAM,+BAA+B,OAAQ,CAAC;AACrD,eAAO,MAAM,8BAA8B,QACQ,CAAC;AAEpD,eAAO,MAAM,6BAA6B,QACuB,CAAC;AAGlE,eAAO,MAAM,uBAAuB,OAAQ,CAAC;AAG7C,eAAO,MAAM,WAAW,qBAAqB,CAAC;AAC9C,eAAO,MAAM,cAAc,UAAU,CAAC;AAGtC,eAAO,MAAM,iBAAiB,sBAAsB,CAAC;AAErD,oBAAY,WAAW;IACnB,MAAM,WAAW;IACjB,QAAQ,aAAa;IACrB,WAAW,gBAAgB;IAC3B,gBAAgB,qBAAqB;CACxC"}
|
package/dist/const.js
CHANGED
|
@@ -1,35 +1,25 @@
|
|
|
1
|
-
|
|
2
|
-
export const SERVER_VERSION = '0.1.0';
|
|
3
|
-
export const HEADER_READINESS_PROBE = 'x-apify-container-server-readiness-probe';
|
|
4
|
-
export const MAX_DESCRIPTION_LENGTH = 500;
|
|
5
|
-
export const USER_AGENT_ORIGIN = 'Origin/mcp-server';
|
|
6
|
-
export const defaults = {
|
|
7
|
-
actors: [
|
|
8
|
-
'apify/instagram-scraper',
|
|
9
|
-
'apify/rag-web-browser',
|
|
10
|
-
'lukaskrivka/google-maps-with-contact-details',
|
|
11
|
-
],
|
|
12
|
-
enableActorAutoLoading: false,
|
|
13
|
-
maxMemoryMbytes: 4096,
|
|
14
|
-
};
|
|
1
|
+
// Actor input const
|
|
15
2
|
export const ACTOR_README_MAX_LENGTH = 5_000;
|
|
16
3
|
export const ACTOR_ENUM_MAX_LENGTH = 200;
|
|
4
|
+
export const ACTOR_MAX_DESCRIPTION_LENGTH = 500;
|
|
5
|
+
// Actor output const
|
|
17
6
|
export const ACTOR_OUTPUT_MAX_CHARS_PER_ITEM = 5_000;
|
|
18
7
|
export const ACTOR_OUTPUT_TRUNCATED_MESSAGE = `Output was truncated because it will not fit into context.`
|
|
19
8
|
+ `There is no reason to call this tool again!`;
|
|
20
9
|
export const ACTOR_ADDITIONAL_INSTRUCTIONS = 'Never call/execute tool/Actor unless confirmed by the user. '
|
|
21
10
|
+ 'Always limit the number of results in the call arguments.';
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
export var
|
|
30
|
-
(function (
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
11
|
+
// Actor run const
|
|
12
|
+
export const ACTOR_MAX_MEMORY_MBYTES = 4_096; // If the Actor requires 8GB of memory, free users can't run actors-mcp-server and requested Actor
|
|
13
|
+
// MCP Server
|
|
14
|
+
export const SERVER_NAME = 'apify-mcp-server';
|
|
15
|
+
export const SERVER_VERSION = '0.1.0';
|
|
16
|
+
// User agent headers
|
|
17
|
+
export const USER_AGENT_ORIGIN = 'Origin/mcp-server';
|
|
18
|
+
export var HelperTools;
|
|
19
|
+
(function (HelperTools) {
|
|
20
|
+
HelperTools["SEARCH"] = "search";
|
|
21
|
+
HelperTools["ADD_TOOL"] = "add-tool";
|
|
22
|
+
HelperTools["REMOVE_TOOL"] = "remove-tool";
|
|
23
|
+
HelperTools["GET_TOOL_DETAILS"] = "get-tool-details";
|
|
24
|
+
})(HelperTools || (HelperTools = {}));
|
|
35
25
|
//# 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":"AAAA,MAAM,CAAC,MAAM,
|
|
1
|
+
{"version":3,"file":"const.js","sourceRoot":"","sources":["../src/const.ts"],"names":[],"mappings":"AAAA,oBAAoB;AACpB,MAAM,CAAC,MAAM,uBAAuB,GAAG,KAAK,CAAC;AAC7C,MAAM,CAAC,MAAM,qBAAqB,GAAG,GAAG,CAAC;AACzC,MAAM,CAAC,MAAM,4BAA4B,GAAG,GAAG,CAAC;AAEhD,qBAAqB;AACrB,MAAM,CAAC,MAAM,+BAA+B,GAAG,KAAK,CAAC;AACrD,MAAM,CAAC,MAAM,8BAA8B,GAAG,4DAA4D;MACpG,6CAA6C,CAAC;AAEpD,MAAM,CAAC,MAAM,6BAA6B,GAAG,8DAA8D;MACrG,2DAA2D,CAAC;AAElE,kBAAkB;AAClB,MAAM,CAAC,MAAM,uBAAuB,GAAG,KAAK,CAAC,CAAC,kGAAkG;AAEhJ,aAAa;AACb,MAAM,CAAC,MAAM,WAAW,GAAG,kBAAkB,CAAC;AAC9C,MAAM,CAAC,MAAM,cAAc,GAAG,OAAO,CAAC;AAEtC,qBAAqB;AACrB,MAAM,CAAC,MAAM,iBAAiB,GAAG,mBAAmB,CAAC;AAErD,MAAM,CAAN,IAAY,WAKX;AALD,WAAY,WAAW;IACnB,gCAAiB,CAAA;IACjB,oCAAqB,CAAA;IACrB,0CAA2B,CAAA;IAC3B,oDAAqC,CAAA;AACzC,CAAC,EALW,WAAW,KAAX,WAAW,QAKtB"}
|
|
@@ -4,5 +4,14 @@
|
|
|
4
4
|
*
|
|
5
5
|
* It requires the `APIFY_TOKEN` in the `.env` file.
|
|
6
6
|
*/
|
|
7
|
-
|
|
7
|
+
import { EventSource, EventSourceInit } from 'eventsource';
|
|
8
|
+
declare global {
|
|
9
|
+
var EventSource: {
|
|
10
|
+
new (url: string, eventSourceInitDict?: EventSourceInit): EventSource;
|
|
11
|
+
prototype: EventSource;
|
|
12
|
+
CONNECTING: 0;
|
|
13
|
+
OPEN: 1;
|
|
14
|
+
CLOSED: 2;
|
|
15
|
+
};
|
|
16
|
+
}
|
|
8
17
|
//# sourceMappingURL=clientSse.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"clientSse.d.ts","sourceRoot":"","sources":["../../src/examples/clientSse.ts"],"names":[],"mappings":"AACA;;;;;GAKG"}
|
|
1
|
+
{"version":3,"file":"clientSse.d.ts","sourceRoot":"","sources":["../../src/examples/clientSse.ts"],"names":[],"mappings":"AACA;;;;;GAKG;AASH,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAsB3D,OAAO,CAAC,MAAM,CAAC;IACX,IAAI,WAAW,EAAE;QACb,KAAI,GAAG,EAAE,MAAM,EAAE,mBAAmB,CAAC,EAAE,eAAe,GAAG,WAAW,CAAC;QACrE,SAAS,EAAE,WAAW,CAAC;QACvB,UAAU,EAAE,CAAC,CAAC;QACd,IAAI,EAAE,CAAC,CAAC;QACR,MAAM,EAAE,CAAC,CAAC;KACb,CAAC;CACL"}
|
|
@@ -12,15 +12,16 @@ import { SSEClientTransport } from '@modelcontextprotocol/sdk/client/sse.js';
|
|
|
12
12
|
import { CallToolResultSchema } from '@modelcontextprotocol/sdk/types.js';
|
|
13
13
|
import dotenv from 'dotenv';
|
|
14
14
|
import { EventSource } from 'eventsource';
|
|
15
|
-
import { actorNameToToolName } from '../
|
|
15
|
+
import { actorNameToToolName } from '../tools/utils.js';
|
|
16
16
|
const REQUEST_TIMEOUT = 120_000; // 2 minutes
|
|
17
17
|
const filename = fileURLToPath(import.meta.url);
|
|
18
18
|
const dirname = path.dirname(filename);
|
|
19
19
|
dotenv.config({ path: path.resolve(dirname, '../../.env') });
|
|
20
|
-
const SERVER_URL = 'https://actors-mcp-server.apify.actor/sse';
|
|
20
|
+
const SERVER_URL = process.env.MCP_SERVER_URL_BASE || 'https://actors-mcp-server.apify.actor/sse';
|
|
21
21
|
// We need to change forward slash / to underscore -- in the tool name as Anthropic does not allow forward slashes in the tool name
|
|
22
22
|
const SELECTED_TOOL = actorNameToToolName('apify/rag-web-browser');
|
|
23
|
-
const QUERY = 'web browser for Anthropic';
|
|
23
|
+
// const QUERY = 'web browser for Anthropic';
|
|
24
|
+
const QUERY = 'apify';
|
|
24
25
|
if (!process.env.APIFY_TOKEN) {
|
|
25
26
|
console.error('APIFY_TOKEN is required but not set in the environment variables.');
|
|
26
27
|
process.exit(1);
|
|
@@ -71,12 +72,14 @@ async function main() {
|
|
|
71
72
|
catch (error) {
|
|
72
73
|
if (error instanceof Error) {
|
|
73
74
|
console.error('Error:', error.message);
|
|
74
|
-
console.error(error.stack);
|
|
75
75
|
}
|
|
76
76
|
else {
|
|
77
77
|
console.error('An unknown error occurred:', error);
|
|
78
78
|
}
|
|
79
79
|
}
|
|
80
|
+
finally {
|
|
81
|
+
await client.close();
|
|
82
|
+
}
|
|
80
83
|
}
|
|
81
84
|
await main();
|
|
82
85
|
//# sourceMappingURL=clientSse.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"clientSse.js","sourceRoot":"","sources":["../../src/examples/clientSse.ts"],"names":[],"mappings":"AAAA,+BAA+B;AAC/B;;;;;GAKG;AAEH,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AAEpC,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AACnE,OAAO,EAAE,kBAAkB,EAAE,MAAM,yCAAyC,CAAC;AAC7E,OAAO,EAAE,oBAAoB,EAAE,MAAM,oCAAoC,CAAC;AAC1E,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAE,WAAW,
|
|
1
|
+
{"version":3,"file":"clientSse.js","sourceRoot":"","sources":["../../src/examples/clientSse.ts"],"names":[],"mappings":"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"}
|
|
@@ -12,12 +12,12 @@ import { Client } from '@modelcontextprotocol/sdk/client/index.js';
|
|
|
12
12
|
import { StdioClientTransport } from '@modelcontextprotocol/sdk/client/stdio.js';
|
|
13
13
|
import { CallToolResultSchema } from '@modelcontextprotocol/sdk/types.js';
|
|
14
14
|
import dotenv from 'dotenv';
|
|
15
|
-
import { actorNameToToolName } from '../
|
|
15
|
+
import { actorNameToToolName } from '../tools/utils.js';
|
|
16
16
|
// Resolve dirname equivalent in ES module
|
|
17
17
|
const filename = fileURLToPath(import.meta.url);
|
|
18
18
|
const dirname = path.dirname(filename);
|
|
19
19
|
dotenv.config({ path: path.resolve(dirname, '../../.env') });
|
|
20
|
-
const SERVER_PATH = path.resolve(dirname, '../../dist/
|
|
20
|
+
const SERVER_PATH = path.resolve(dirname, '../../dist/stdio.js');
|
|
21
21
|
const NODE_PATH = execSync(process.platform === 'win32' ? 'where node' : 'which node').toString().trim();
|
|
22
22
|
const TOOLS = 'apify/rag-web-browser,lukaskrivka/google-maps-with-contact-details';
|
|
23
23
|
const SELECTED_TOOL = actorNameToToolName('apify/rag-web-browser');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"clientStdio.js","sourceRoot":"","sources":["../../src/examples/clientStdio.ts"],"names":[],"mappings":"AAAA,+BAA+B;AAC/B;;;;;GAKG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AAEpC,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,oBAAoB,EAAE,MAAM,oCAAoC,CAAC;AAC1E,OAAO,MAAM,MAAM,QAAQ,CAAC;AAE5B,OAAO,EAAE,mBAAmB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"clientStdio.js","sourceRoot":"","sources":["../../src/examples/clientStdio.ts"],"names":[],"mappings":"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"}
|
|
@@ -34,7 +34,7 @@ const MAX_TOKENS = 2048; // Maximum tokens for Claude response
|
|
|
34
34
|
// const CLAUDE_MODEL = 'claude-3-5-haiku-20241022'; // a fastest model
|
|
35
35
|
const CLAUDE_MODEL = 'claude-3-haiku-20240307'; // a fastest and most compact model for near-instant responsiveness
|
|
36
36
|
const DEBUG = true;
|
|
37
|
-
const DEBUG_SERVER_PATH = path.resolve(dirname, '../../dist/
|
|
37
|
+
const DEBUG_SERVER_PATH = path.resolve(dirname, '../../dist/stdio.js');
|
|
38
38
|
const NODE_PATH = execSync('which node').toString().trim();
|
|
39
39
|
dotenv.config(); // Load environment variables from .env
|
|
40
40
|
class MCPClient {
|
package/dist/index.d.ts
CHANGED
|
@@ -1,15 +1,3 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
* This script initializes and starts the Apify MCP server using the Stdio transport.
|
|
4
|
-
*
|
|
5
|
-
* Usage:
|
|
6
|
-
* node <script_name> --actors=<actor1,actor2,...>
|
|
7
|
-
*
|
|
8
|
-
* Command-line arguments:
|
|
9
|
-
* --actors - A comma-separated list of actor full names to add to the server.
|
|
10
|
-
*
|
|
11
|
-
* Example:
|
|
12
|
-
* node index.js --actors=apify/google-search-scraper,apify/instagram-scraper
|
|
13
|
-
*/
|
|
14
|
-
export {};
|
|
1
|
+
import { ActorsMcpServer } from './mcp-server.js';
|
|
2
|
+
export default ActorsMcpServer;
|
|
15
3
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,eAAe,eAAe,CAAC"}
|