@apify/actors-mcp-server 0.1.22-beta.1 → 0.1.22-beta.11
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 +65 -2
- package/dist/actor/server.d.ts +1 -1
- package/dist/actor/server.d.ts.map +1 -1
- package/dist/actor/server.js +4 -3
- package/dist/actor/server.js.map +1 -1
- package/dist/actor/types.d.ts +0 -7
- package/dist/actor/types.d.ts.map +1 -1
- package/dist/actor/utils.d.ts +1 -9
- package/dist/actor/utils.d.ts.map +1 -1
- package/dist/actor/utils.js +0 -24
- package/dist/actor/utils.js.map +1 -1
- package/dist/{tools/mcp-apify-client.d.ts → apify-client.d.ts} +1 -1
- package/dist/apify-client.d.ts.map +1 -0
- package/dist/{tools/mcp-apify-client.js → apify-client.js} +3 -2
- package/dist/apify-client.js.map +1 -0
- package/dist/const.d.ts +1 -0
- package/dist/const.d.ts.map +1 -1
- package/dist/const.js +1 -0
- package/dist/const.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/input.d.ts.map +1 -0
- package/dist/input.js.map +1 -0
- package/dist/main.d.ts.map +1 -1
- package/dist/main.js +13 -3
- package/dist/main.js.map +1 -1
- package/dist/mcp/actors.d.ts +4 -0
- package/dist/mcp/actors.d.ts.map +1 -0
- package/dist/mcp/actors.js +18 -0
- package/dist/mcp/actors.js.map +1 -0
- package/dist/mcp/client.d.ts +6 -0
- package/dist/mcp/client.d.ts.map +1 -0
- package/dist/mcp/client.js +33 -0
- package/dist/mcp/client.js.map +1 -0
- package/dist/mcp/const.d.ts +3 -0
- package/dist/mcp/const.d.ts.map +1 -0
- package/dist/mcp/const.js +3 -0
- package/dist/mcp/const.js.map +1 -0
- package/dist/mcp/proxy.d.ts +4 -0
- package/dist/mcp/proxy.d.ts.map +1 -0
- package/dist/mcp/proxy.js +29 -0
- package/dist/mcp/proxy.js.map +1 -0
- package/dist/{mcp-server.d.ts → mcp/server.d.ts} +6 -4
- package/dist/mcp/server.d.ts.map +1 -0
- package/dist/{mcp-server.js → mcp/server.js} +33 -11
- package/dist/mcp/server.js.map +1 -0
- package/dist/mcp/utils.d.ts +36 -0
- package/dist/mcp/utils.d.ts.map +1 -0
- package/dist/mcp/utils.js +94 -0
- package/dist/mcp/utils.js.map +1 -0
- package/dist/stdio.js +2 -2
- package/dist/stdio.js.map +1 -1
- package/dist/tools/actor.d.ts +4 -1
- package/dist/tools/actor.d.ts.map +1 -1
- package/dist/tools/actor.js +50 -3
- package/dist/tools/actor.js.map +1 -1
- package/dist/tools/build.d.ts +1 -1
- package/dist/tools/build.d.ts.map +1 -1
- package/dist/tools/build.js +5 -5
- package/dist/tools/build.js.map +1 -1
- package/dist/tools/helpers.js +2 -2
- package/dist/tools/helpers.js.map +1 -1
- package/dist/tools/store_collection.d.ts +1 -1
- package/dist/tools/store_collection.d.ts.map +1 -1
- package/dist/tools/store_collection.js +5 -5
- package/dist/tools/store_collection.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/types.d.ts +25 -2
- package/dist/types.d.ts.map +1 -1
- package/package.json +1 -1
- package/dist/actor/input.d.ts.map +0 -1
- package/dist/actor/input.js.map +0 -1
- package/dist/mcp-server.d.ts.map +0 -1
- package/dist/mcp-server.js.map +0 -1
- package/dist/tools/mcp-apify-client.d.ts.map +0 -1
- package/dist/tools/mcp-apify-client.js.map +0 -1
- /package/dist/{actor/input.d.ts → input.d.ts} +0 -0
- /package/dist/{actor/input.js → input.js} +0 -0
package/README.md
CHANGED
|
@@ -27,6 +27,7 @@ For example it can:
|
|
|
27
27
|
|
|
28
28
|
To interact with the Apify MCP server, you can use MCP clients such as:
|
|
29
29
|
- [Claude Desktop](https://claude.ai/download) (only Stdio support)
|
|
30
|
+
- [Visual Studio Code](https://code.visualstudio.com/) (Stdio and SSE support)
|
|
30
31
|
- [LibreChat](https://www.librechat.ai/) (stdio and SSE support (yet without Authorization header))
|
|
31
32
|
- [Apify Tester MCP Client](https://apify.com/jiri.spilka/tester-mcp-client) (SSE support with Authorization headers)
|
|
32
33
|
- other clients at [https://modelcontextprotocol.io/clients](https://modelcontextprotocol.io/clients)
|
|
@@ -275,6 +276,63 @@ To configure Claude Desktop to work with the MCP server, follow these steps. For
|
|
|
275
276
|
Find and analyze instagram profile of the Rock.
|
|
276
277
|
```
|
|
277
278
|
|
|
279
|
+
#### VS Code
|
|
280
|
+
|
|
281
|
+
For one-click installation, click one of the install buttons below:
|
|
282
|
+
|
|
283
|
+
[](https://insiders.vscode.dev/redirect/mcp/install?name=actors-mcp-server&config=%7B%22command%22%3A%22npx%22%2C%22args%22%3A%5B%22-y%22%2C%22%40apify%2Factors-mcp-server%22%5D%2C%22env%22%3A%7B%22APIFY_TOKEN%22%3A%22%24%7Binput%3Aapify_token%7D%22%7D%7D&inputs=%5B%7B%22type%22%3A%22promptString%22%2C%22id%22%3A%22apify_token%22%2C%22description%22%3A%22Apify+API+Token%22%2C%22password%22%3Atrue%7D%5D) [](https://insiders.vscode.dev/redirect/mcp/install?name=actors-mcp-server&config=%7B%22command%22%3A%22npx%22%2C%22args%22%3A%5B%22-y%22%2C%22%40apify%2Factors-mcp-server%22%5D%2C%22env%22%3A%7B%22APIFY_TOKEN%22%3A%22%24%7Binput%3Aapify_token%7D%22%7D%7D&inputs=%5B%7B%22type%22%3A%22promptString%22%2C%22id%22%3A%22apify_token%22%2C%22description%22%3A%22Apify+API+Token%22%2C%22password%22%3Atrue%7D%5D&quality=insiders)
|
|
284
|
+
|
|
285
|
+
##### Manual installation
|
|
286
|
+
|
|
287
|
+
You can manually install the Apify MCP Server in VS Code. First, click one of the install buttons at the top of this section for a one-click installation.
|
|
288
|
+
|
|
289
|
+
Alternatively, add the following JSON block to your User Settings (JSON) file in VS Code. You can do this by pressing `Ctrl + Shift + P` and typing `Preferences: Open User Settings (JSON)`.
|
|
290
|
+
|
|
291
|
+
```json
|
|
292
|
+
{
|
|
293
|
+
"mcp": {
|
|
294
|
+
"inputs": [
|
|
295
|
+
{
|
|
296
|
+
"type": "promptString",
|
|
297
|
+
"id": "apify_token",
|
|
298
|
+
"description": "Apify API Token",
|
|
299
|
+
"password": true
|
|
300
|
+
}
|
|
301
|
+
],
|
|
302
|
+
"servers": {
|
|
303
|
+
"actors-mcp-server": {
|
|
304
|
+
"command": "npx",
|
|
305
|
+
"args": ["-y", "@apify/actors-mcp-server"],
|
|
306
|
+
"env": {
|
|
307
|
+
"APIFY_TOKEN": "${input:apify_token}"
|
|
308
|
+
}
|
|
309
|
+
}
|
|
310
|
+
}
|
|
311
|
+
}
|
|
312
|
+
}
|
|
313
|
+
```
|
|
314
|
+
|
|
315
|
+
Optionally, you can add it to a file called `.vscode/mcp.json` in your workspace - just omit the top-level `mcp {}` key. This will allow you to share the configuration with others.
|
|
316
|
+
|
|
317
|
+
If you want to specify which Actors to load, you can add the `--actors` argument:
|
|
318
|
+
|
|
319
|
+
```json
|
|
320
|
+
{
|
|
321
|
+
"servers": {
|
|
322
|
+
"actors-mcp-server": {
|
|
323
|
+
"command": "npx",
|
|
324
|
+
"args": [
|
|
325
|
+
"-y", "@apify/actors-mcp-server",
|
|
326
|
+
"--actors", "lukaskrivka/google-maps-with-contact-details,apify/instagram-scraper"
|
|
327
|
+
],
|
|
328
|
+
"env": {
|
|
329
|
+
"APIFY_TOKEN": "${input:apify_token}"
|
|
330
|
+
}
|
|
331
|
+
}
|
|
332
|
+
}
|
|
333
|
+
}
|
|
334
|
+
```
|
|
335
|
+
|
|
278
336
|
#### Debugging NPM package @apify/actors-mcp-server with @modelcontextprotocol/inspector
|
|
279
337
|
|
|
280
338
|
To debug the server, use the [MCP Inspector](https://github.com/modelcontextprotocol/inspector) tool:
|
|
@@ -365,8 +423,13 @@ Upon launching, the Inspector will display a URL that you can access in your bro
|
|
|
365
423
|
|
|
366
424
|
## ⓘ Limitations and feedback
|
|
367
425
|
|
|
368
|
-
|
|
369
|
-
|
|
426
|
+
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:
|
|
427
|
+
- **Descriptions** are truncated to 500 characters (as defined in `MAX_DESCRIPTION_LENGTH`).
|
|
428
|
+
- **Enum fields** are truncated to a maximum combined length of 200 characters for all elements (as defined in `ACTOR_ENUM_MAX_LENGTH`).
|
|
429
|
+
- **Required fields** are explicitly marked with a "REQUIRED" prefix in their descriptions for compatibility with frameworks that may not handle JSON schema properly.
|
|
430
|
+
- **Nested properties** are built for special cases like proxy configuration and request list sources to ensure correct input structure.
|
|
431
|
+
- **Array item types** are inferred when not explicitly defined in the schema, using a priority order: explicit type in items > prefill type > default value type > editor type.
|
|
432
|
+
- **Enum values and examples** are added to property descriptions to ensure visibility even if the client doesn't fully support JSON schema.
|
|
370
433
|
|
|
371
434
|
Memory for each Actor is limited to 4GB.
|
|
372
435
|
Free users have an 8GB limit, 128MB needs to be allocated for running `Actors-MCP-Server`.
|
package/dist/actor/server.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import express from 'express';
|
|
2
|
-
import { type ActorsMcpServer } from '../mcp
|
|
2
|
+
import { type ActorsMcpServer } from '../mcp/server.js';
|
|
3
3
|
export declare function createExpressApp(host: string, mcpServer: ActorsMcpServer): express.Express;
|
|
4
4
|
//# sourceMappingURL=server.d.ts.map
|
|
@@ -1 +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;
|
|
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;AAIxD,wBAAgB,gBAAgB,CAC5B,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,eAAe,GAC3B,OAAO,CAAC,OAAO,CA0EjB"}
|
package/dist/actor/server.js
CHANGED
|
@@ -5,7 +5,8 @@ import { SSEServerTransport } from '@modelcontextprotocol/sdk/server/sse.js';
|
|
|
5
5
|
import express from 'express';
|
|
6
6
|
import log from '@apify/log';
|
|
7
7
|
import { HEADER_READINESS_PROBE, Routes } from './const.js';
|
|
8
|
-
import { getActorRunData
|
|
8
|
+
import { getActorRunData } from './utils.js';
|
|
9
|
+
import { processParamsGetTools } from '../mcp/utils.js';
|
|
9
10
|
export function createExpressApp(host, mcpServer) {
|
|
10
11
|
const HELP_MESSAGE = `Connect to the server with GET request to ${host}/sse?token=YOUR-APIFY-TOKEN`
|
|
11
12
|
+ ` and then send POST requests to ${host}/message?token=YOUR-APIFY-TOKEN`;
|
|
@@ -20,7 +21,7 @@ export function createExpressApp(host, mcpServer) {
|
|
|
20
21
|
}
|
|
21
22
|
try {
|
|
22
23
|
log.info(`Received GET message at: ${Routes.ROOT}`);
|
|
23
|
-
const tools = await processParamsGetTools(req.url);
|
|
24
|
+
const tools = await processParamsGetTools(req.url, process.env.APIFY_TOKEN);
|
|
24
25
|
if (tools) {
|
|
25
26
|
mcpServer.updateTools(tools);
|
|
26
27
|
}
|
|
@@ -41,7 +42,7 @@ export function createExpressApp(host, mcpServer) {
|
|
|
41
42
|
.get(async (req, res) => {
|
|
42
43
|
try {
|
|
43
44
|
log.info(`Received GET message at: ${Routes.SSE}`);
|
|
44
|
-
const tools = await processParamsGetTools(req.url);
|
|
45
|
+
const tools = await processParamsGetTools(req.url, process.env.APIFY_TOKEN);
|
|
45
46
|
if (tools) {
|
|
46
47
|
mcpServer.updateTools(tools);
|
|
47
48
|
}
|
package/dist/actor/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/actor/server.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,kBAAkB,EAAE,MAAM,yCAAyC,CAAC;AAE7E,OAAO,OAAO,MAAM,SAAS,CAAC;AAE9B,OAAO,GAAG,MAAM,YAAY,CAAC;AAE7B,OAAO,EAAE,sBAAsB,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAE5D,OAAO,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/actor/server.ts"],"names":[],"mappings":"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"}
|
package/dist/actor/types.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/actor/types.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/actor/types.ts"],"names":[],"mappings":"AACA,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"}
|
package/dist/actor/utils.d.ts
CHANGED
|
@@ -1,11 +1,3 @@
|
|
|
1
|
-
import type { ActorRunData
|
|
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[]>;
|
|
1
|
+
import type { ActorRunData } from './types.js';
|
|
10
2
|
export declare function getActorRunData(): ActorRunData | null;
|
|
11
3
|
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/actor/utils.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/actor/utils.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAG/C,wBAAgB,eAAe,IAAI,YAAY,GAAG,IAAI,CAuBrD"}
|
package/dist/actor/utils.js
CHANGED
|
@@ -1,28 +1,4 @@
|
|
|
1
|
-
import { parse } from 'node:querystring';
|
|
2
1
|
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
2
|
export function getActorRunData() {
|
|
27
3
|
return Actor.isAtHome() ? {
|
|
28
4
|
id: process.env.ACTOR_RUN_ID,
|
package/dist/actor/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/actor/utils.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/actor/utils.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC;AAI9B,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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"apify-client.d.ts","sourceRoot":"","sources":["../src/apify-client.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,OAAO,CAAC;AAChD,OAAO,EAAE,WAAW,IAAI,YAAY,EAAE,MAAM,cAAc,CAAC;AAiB3D,qBAAa,WAAY,SAAQ,YAAY;gBAC7B,OAAO,EAAE,kBAAkB;CAO1C"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { ApifyClient as _ApifyClient } from 'apify-client';
|
|
2
|
-
import { USER_AGENT_ORIGIN } from '
|
|
2
|
+
import { USER_AGENT_ORIGIN } from './const.js';
|
|
3
3
|
/**
|
|
4
4
|
* Adds a User-Agent header to the request config.
|
|
5
5
|
* @param config
|
|
@@ -15,8 +15,9 @@ export class ApifyClient extends _ApifyClient {
|
|
|
15
15
|
constructor(options) {
|
|
16
16
|
super({
|
|
17
17
|
...options,
|
|
18
|
+
baseUrl: process.env.APIFY_API_BASE_URL || undefined,
|
|
18
19
|
requestInterceptors: [addUserAgent],
|
|
19
20
|
});
|
|
20
21
|
}
|
|
21
22
|
}
|
|
22
|
-
//# sourceMappingURL=
|
|
23
|
+
//# sourceMappingURL=apify-client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"apify-client.js","sourceRoot":"","sources":["../src/apify-client.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,IAAI,YAAY,EAAE,MAAM,cAAc,CAAC;AAG3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAE/C;;;;GAIG;AACH,SAAS,YAAY,CAAC,MAA0B;IAC5C,MAAM,aAAa,GAAG,EAAE,GAAG,MAAM,EAAE,CAAC;IACpC,aAAa,CAAC,OAAO,GAAG,aAAa,CAAC,OAAO,IAAI,EAAE,CAAC;IACpD,aAAa,CAAC,OAAO,CAAC,YAAY,CAAC,GAAG,GAAG,aAAa,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,EAAE,KAAK,iBAAiB,EAAE,CAAC;IAC3G,OAAO,aAAa,CAAC;AACzB,CAAC;AAED,MAAM,OAAO,WAAY,SAAQ,YAAY;IACzC,YAAY,OAA2B;QACnC,KAAK,CAAC;YACF,GAAG,OAAO;YACV,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,kBAAkB,IAAI,SAAS;YACpD,mBAAmB,EAAE,CAAC,YAAY,CAAC;SACtC,CAAC,CAAC;IACP,CAAC;CACJ"}
|
package/dist/const.d.ts
CHANGED
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;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;AAED,eAAO,MAAM,QAAQ;;;;CAQpB,CAAC"}
|
|
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;AAED,eAAO,MAAM,QAAQ;;;;CAQpB,CAAC;AAEF,eAAO,MAAM,cAAc,UAAU,CAAC"}
|
package/dist/const.js
CHANGED
package/dist/const.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
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;AAED,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"}
|
|
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;AAED,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,CAAC,MAAM,cAAc,GAAG,OAAO,CAAC"}
|
package/dist/index.d.ts
CHANGED
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":"AAMA,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,eAAe,eAAe,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
This file provides essential functions and tools for MCP servers, serving as a library.
|
|
3
3
|
The ActorsMcpServer should be the only class exported from the package
|
|
4
4
|
*/
|
|
5
|
-
import { ActorsMcpServer } from './mcp
|
|
5
|
+
import { ActorsMcpServer } from './mcp/server.js';
|
|
6
6
|
export default ActorsMcpServer;
|
|
7
7
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA;;;EAGE;AAEF,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,eAAe,eAAe,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"input.d.ts","sourceRoot":"","sources":["../src/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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"input.js","sourceRoot":"","sources":["../src/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"}
|
package/dist/main.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":"AACA;;;GAGG"}
|
package/dist/main.js
CHANGED
|
@@ -4,10 +4,11 @@
|
|
|
4
4
|
*/
|
|
5
5
|
import { Actor } from 'apify';
|
|
6
6
|
import log from '@apify/log';
|
|
7
|
-
import { processInput } from './
|
|
7
|
+
import { processInput } from './input.js';
|
|
8
8
|
import { createExpressApp } from './actor/server.js';
|
|
9
|
-
import { ActorsMcpServer } from './mcp
|
|
10
|
-
import { actorDefinitionTool, addTool, removeTool, searchTool, callActorGetDataset } from './tools/index.js';
|
|
9
|
+
import { ActorsMcpServer } from './mcp/server.js';
|
|
10
|
+
import { actorDefinitionTool, addTool, removeTool, searchTool, callActorGetDataset, getActorsAsTools } from './tools/index.js';
|
|
11
|
+
import { defaults } from './const.js';
|
|
11
12
|
const STANDBY_MODE = Actor.getEnv().metaOrigin === 'STANDBY';
|
|
12
13
|
await Actor.init();
|
|
13
14
|
const HOST = Actor.isAtHome() ? process.env.ACTOR_STANDBY_URL : 'http://localhost';
|
|
@@ -26,6 +27,15 @@ if (STANDBY_MODE) {
|
|
|
26
27
|
if (input.enableActorAutoLoading) {
|
|
27
28
|
tools.push(addTool, removeTool);
|
|
28
29
|
}
|
|
30
|
+
if (input.actors === undefined || input.actors === null) {
|
|
31
|
+
const actorTools = await getActorsAsTools(defaults.actors, process.env.APIFY_TOKEN);
|
|
32
|
+
tools.push(...actorTools);
|
|
33
|
+
}
|
|
34
|
+
else {
|
|
35
|
+
const actorsToLoad = Array.isArray(input.actors) ? input.actors : input.actors.split(',');
|
|
36
|
+
const actorTools = await getActorsAsTools(actorsToLoad, process.env.APIFY_TOKEN);
|
|
37
|
+
tools.push(...actorTools);
|
|
38
|
+
}
|
|
29
39
|
mcpServer.updateTools(tools);
|
|
30
40
|
app.listen(PORT, () => {
|
|
31
41
|
log.info(`The Actor web server is listening for user requests at ${HOST}`);
|
package/dist/main.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"main.js","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"main.js","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":"AACA;;;GAGG;AAEH,OAAO,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC;AAG9B,OAAO,GAAG,MAAM,YAAY,CAAC;AAE7B,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAErD,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,mBAAmB,EAAE,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAC/H,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEtC,MAAM,YAAY,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,UAAU,KAAK,SAAS,CAAC;AAE7D,MAAM,KAAK,CAAC,IAAI,EAAE,CAAC;AAEnB,MAAM,IAAI,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,iBAA2B,CAAC,CAAC,CAAC,kBAAkB,CAAC;AAC7F,MAAM,IAAI,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AAE9E,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC;IAC3B,GAAG,CAAC,KAAK,CAAC,mEAAmE,CAAC,CAAC;IAC/E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACpB,CAAC;AAED,MAAM,SAAS,GAAG,IAAI,eAAe,EAAE,CAAC;AAExC,MAAM,KAAK,GAAG,YAAY,CAAC,CAAC,MAAM,KAAK,CAAC,QAAQ,EAAkB,CAAC,IAAK,EAAY,CAAC,CAAC;AACtF,GAAG,CAAC,IAAI,CAAC,iBAAiB,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AAEpD,IAAI,YAAY,EAAE,CAAC;IACf,MAAM,GAAG,GAAG,gBAAgB,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IAC9C,GAAG,CAAC,IAAI,CAAC,uCAAuC,CAAC,CAAC;IAClD,MAAM,KAAK,GAAG,CAAC,UAAU,EAAE,mBAAmB,CAAC,CAAC;IAChD,IAAI,KAAK,CAAC,sBAAsB,EAAE,CAAC;QAC/B,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;IACpC,CAAC;IACD,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS,IAAI,KAAK,CAAC,MAAM,KAAK,IAAI,EAAE,CAAC;QACtD,MAAM,UAAU,GAAG,MAAM,gBAAgB,CAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,WAAqB,CAAC,CAAC;QAC9F,KAAK,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,CAAC;IAC9B,CAAC;SAAM,CAAC;QACJ,MAAM,YAAY,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC1F,MAAM,UAAU,GAAG,MAAM,gBAAgB,CAAC,YAAY,EAAE,OAAO,CAAC,GAAG,CAAC,WAAqB,CAAC,CAAC;QAC3F,KAAK,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,CAAC;IAC9B,CAAC;IACD,SAAS,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;IAC7B,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,EAAE;QAClB,GAAG,CAAC,IAAI,CAAC,0DAA0D,IAAI,EAAE,CAAC,CAAC;IAC/E,CAAC,CAAC,CAAC;AACP,CAAC;KAAM,CAAC;IACJ,GAAG,CAAC,IAAI,CAAC,8FAA8F,CAAC,CAAC;IAEzG,IAAI,KAAK,IAAI,CAAC,KAAK,CAAC,UAAU,IAAI,CAAC,KAAK,CAAC,eAAe,EAAE,CAAC;QACvD,MAAM,KAAK,CAAC,IAAI,CAAC,8GAA8G,CAAC,CAAC;IACrI,CAAC;IACD,MAAM,OAAO,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC,mBAAmB,EAAsB,CAAC;IAC1E,MAAM,KAAK,GAAG,MAAM,mBAAmB,CAAC,KAAK,CAAC,UAAW,EAAE,KAAK,CAAC,eAAgB,EAAE,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IAErH,MAAM,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC5B,GAAG,CAAC,IAAI,CAAC,UAAU,KAAK,CAAC,MAAM,uBAAuB,CAAC,CAAC;IACxD,MAAM,KAAK,CAAC,IAAI,EAAE,CAAC;AACvB,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export declare function isActorMCPServer(actorID: string, apifyToken: string): Promise<boolean>;
|
|
2
|
+
export declare function getActorsMCPServerPath(actorID: string, apifyToken: string): Promise<string | undefined>;
|
|
3
|
+
export declare function getActorsMCPServerURL(actorID: string, _apifyToken: string): Promise<string>;
|
|
4
|
+
//# sourceMappingURL=actors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"actors.d.ts","sourceRoot":"","sources":["../../src/mcp/actors.ts"],"names":[],"mappings":"AAIA,wBAAsB,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAG5F;AAED,wBAAsB,sBAAsB,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAG7G;AAED,wBAAsB,qBAAqB,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAOjG"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { getActorDefinition, getActorStandbyURL } from "./utils.js";
|
|
2
|
+
export async function isActorMCPServer(actorID, apifyToken) {
|
|
3
|
+
const mcpPath = await getActorsMCPServerPath(actorID, apifyToken);
|
|
4
|
+
return (mcpPath?.length || 0) > 0;
|
|
5
|
+
}
|
|
6
|
+
export async function getActorsMCPServerPath(actorID, apifyToken) {
|
|
7
|
+
const actorDefinition = await getActorDefinition(actorID, apifyToken);
|
|
8
|
+
return actorDefinition.webServerMcpPath;
|
|
9
|
+
}
|
|
10
|
+
export async function getActorsMCPServerURL(actorID, _apifyToken) {
|
|
11
|
+
// TODO: get from API instead
|
|
12
|
+
const standbyBaseUrl = process.env.HOSTNAME === 'mcp-securitybyobscurity.apify.com' ?
|
|
13
|
+
'securitybyobscurity.apify.actor' : 'apify.actor';
|
|
14
|
+
const standbyUrl = getActorStandbyURL(actorID, standbyBaseUrl);
|
|
15
|
+
const mcpPath = await getActorsMCPServerPath(actorID, _apifyToken);
|
|
16
|
+
return `${standbyUrl}${mcpPath}`;
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=actors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"actors.js","sourceRoot":"","sources":["../../src/mcp/actors.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAEpE,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,OAAe,EAAE,UAAkB;IACtE,MAAM,OAAO,GAAG,MAAM,sBAAsB,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;IAClE,OAAO,CAAC,OAAO,EAAE,MAAM,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;AACtC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAAC,OAAe,EAAE,UAAkB;IAC5E,MAAM,eAAe,GAAG,MAAM,kBAAkB,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;IACtE,OAAQ,eAAuB,CAAC,gBAAgB,CAAC;AACrD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAAC,OAAe,EAAE,WAAmB;IAC5E,6BAA6B;IAC7B,MAAM,cAAc,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,mCAAmC,CAAC,CAAC;QACjF,iCAAiC,CAAC,CAAC,CAAC,aAAa,CAAC;IACtD,MAAM,UAAU,GAAG,kBAAkB,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;IAC/D,MAAM,OAAO,GAAG,MAAM,sBAAsB,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;IACnE,OAAO,GAAG,UAAU,GAAG,OAAO,EAAE,CAAC;AACrC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/mcp/client.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AAInE;;GAEG;AACH,wBAAsB,eAAe,CACjC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAC3B,OAAO,CAAC,MAAM,CAAC,CA8BjB"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { Client } from "@modelcontextprotocol/sdk/client/index.js";
|
|
2
|
+
import { SSEClientTransport } from "@modelcontextprotocol/sdk/client/sse.js";
|
|
3
|
+
import { getMCPServerID } from "./utils.js";
|
|
4
|
+
/**
|
|
5
|
+
* Creates and connects a ModelContextProtocol client.
|
|
6
|
+
*/
|
|
7
|
+
export async function createMCPClient(url, token) {
|
|
8
|
+
const transport = new SSEClientTransport(new URL(url), {
|
|
9
|
+
requestInit: {
|
|
10
|
+
headers: {
|
|
11
|
+
authorization: `Bearer ${token}`,
|
|
12
|
+
},
|
|
13
|
+
},
|
|
14
|
+
eventSourceInit: {
|
|
15
|
+
// The EventSource package augments EventSourceInit with a "fetch" parameter.
|
|
16
|
+
// You can use this to set additional headers on the outgoing request.
|
|
17
|
+
// Based on this example: https://github.com/modelcontextprotocol/typescript-sdk/issues/118
|
|
18
|
+
async fetch(input, init) {
|
|
19
|
+
const headers = new Headers(init?.headers || {});
|
|
20
|
+
headers.set('authorization', `Bearer ${token}`);
|
|
21
|
+
return fetch(input, { ...init, headers });
|
|
22
|
+
},
|
|
23
|
+
// We have to cast to "any" to use it, since it's non-standard
|
|
24
|
+
}, // eslint-disable-line @typescript-eslint/no-explicit-any
|
|
25
|
+
});
|
|
26
|
+
const client = new Client({
|
|
27
|
+
name: getMCPServerID(url),
|
|
28
|
+
version: "1.0.0",
|
|
29
|
+
});
|
|
30
|
+
await client.connect(transport);
|
|
31
|
+
return client;
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/mcp/client.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AACnE,OAAO,EAAE,kBAAkB,EAAE,MAAM,yCAAyC,CAAC;AAC7E,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAE5C;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CACjC,GAAW,EAAE,KAAa;IAE1B,MAAM,SAAS,GAAG,IAAI,kBAAkB,CACpC,IAAI,GAAG,CAAC,GAAG,CAAC,EACZ;QACI,WAAW,EAAE;YACT,OAAO,EAAE;gBACL,aAAa,EAAE,UAAU,KAAK,EAAE;aACnC;SACJ;QACD,eAAe,EAAE;YACb,6EAA6E;YAC7E,sEAAsE;YACtE,2FAA2F;YAC3F,KAAK,CAAC,KAAK,CAAC,KAA6B,EAAE,IAAkB;gBACzD,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,IAAI,EAAE,OAAO,IAAI,EAAE,CAAC,CAAC;gBACjD,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,UAAU,KAAK,EAAE,CAAC,CAAC;gBAChD,OAAO,KAAK,CAAC,KAAK,EAAE,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;YAC9C,CAAC;YACL,8DAA8D;SACtD,EAAE,yDAAyD;KACtE,CAAC,CAAC;IAEP,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC;QACtB,IAAI,EAAE,cAAc,CAAC,GAAG,CAAC;QACzB,OAAO,EAAE,OAAO;KACnB,CAAC,CAAC;IAEH,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAEhC,OAAO,MAAM,CAAC;AAClB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"const.d.ts","sourceRoot":"","sources":["../../src/mcp/const.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,oBAAoB,KAAK,CAAC;AACvC,eAAO,MAAM,gBAAgB,IAAI,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"const.js","sourceRoot":"","sources":["../../src/mcp/const.ts"],"names":[],"mappings":"AACA,MAAM,CAAC,MAAM,oBAAoB,GAAG,EAAE,CAAC;AACvC,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"proxy.d.ts","sourceRoot":"","sources":["../../src/mcp/proxy.ts"],"names":[],"mappings":"AACA,OAAO,EAAgB,QAAQ,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AAGnE,wBAAsB,iBAAiB,CACnC,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,EAEd,SAAS,EAAE,MAAM,GAClB,OAAO,CAAC,QAAQ,EAAE,CAAC,CA8BrB"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import Ajv from "ajv";
|
|
2
|
+
import { getMCPServerID, getProxyMCPServerToolName } from "./utils.js";
|
|
3
|
+
export async function getMCPServerTools(actorID, client,
|
|
4
|
+
// Name of the MCP server
|
|
5
|
+
serverUrl) {
|
|
6
|
+
const res = await client.listTools();
|
|
7
|
+
const tools = res.tools;
|
|
8
|
+
const ajv = new Ajv({ coerceTypes: 'array', strict: false });
|
|
9
|
+
const compiledTools = [];
|
|
10
|
+
for (const tool of tools) {
|
|
11
|
+
const mcpTool = {
|
|
12
|
+
actorID,
|
|
13
|
+
serverId: getMCPServerID(serverUrl),
|
|
14
|
+
serverUrl,
|
|
15
|
+
originToolName: tool.name,
|
|
16
|
+
name: getProxyMCPServerToolName(serverUrl, tool.name),
|
|
17
|
+
description: tool.description || "",
|
|
18
|
+
inputSchema: tool.inputSchema,
|
|
19
|
+
ajvValidate: ajv.compile(tool.inputSchema)
|
|
20
|
+
};
|
|
21
|
+
const wrap = {
|
|
22
|
+
type: 'actor-mcp',
|
|
23
|
+
tool: mcpTool,
|
|
24
|
+
};
|
|
25
|
+
compiledTools.push(wrap);
|
|
26
|
+
}
|
|
27
|
+
return compiledTools;
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=proxy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"proxy.js","sourceRoot":"","sources":["../../src/mcp/proxy.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,KAAK,CAAC;AAGtB,OAAO,EAAE,cAAc,EAAE,yBAAyB,EAAE,MAAM,YAAY,CAAC;AAEvE,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACnC,OAAe,EACf,MAAc;AACd,yBAAyB;AACzB,SAAiB;IAEjB,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,SAAS,EAAE,CAAC;IACrC,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC;IAGxB,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;IAE7D,MAAM,aAAa,GAAe,EAAE,CAAC;IACrC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACvB,MAAM,OAAO,GAAiB;YAC1B,OAAO;YACP,QAAQ,EAAE,cAAc,CAAC,SAAS,CAAC;YACnC,SAAS;YACT,cAAc,EAAE,IAAI,CAAC,IAAI;YAEzB,IAAI,EAAE,yBAAyB,CAAC,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC;YACrD,WAAW,EAAE,IAAI,CAAC,WAAW,IAAI,EAAE;YACnC,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,WAAW,EAAE,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC;SAC7C,CAAA;QAED,MAAM,IAAI,GAAa;YACnB,IAAI,EAAE,WAAW;YACjB,IAAI,EAAE,OAAO;SAChB,CAAA;QAED,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC;IAED,OAAO,aAAa,CAAC;AACzB,CAAC"}
|
|
@@ -3,7 +3,7 @@
|
|
|
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 { ToolWrap } from '
|
|
6
|
+
import type { ToolWrap } from '../types.js';
|
|
7
7
|
/**
|
|
8
8
|
* Create Apify MCP server
|
|
9
9
|
*/
|
|
@@ -14,13 +14,15 @@ export declare class ActorsMcpServer {
|
|
|
14
14
|
/**
|
|
15
15
|
* Loads missing default tools.
|
|
16
16
|
*/
|
|
17
|
-
loadDefaultTools(): Promise<void>;
|
|
17
|
+
loadDefaultTools(apifyToken: string): Promise<void>;
|
|
18
18
|
/**
|
|
19
19
|
* Loads tools from URL params.
|
|
20
20
|
*
|
|
21
|
+
* This method also handles enabling of Actor auto loading via the processParamsGetTools.
|
|
22
|
+
*
|
|
21
23
|
* Used primarily for SSE.
|
|
22
24
|
*/
|
|
23
|
-
loadToolsFromUrl(url: string): Promise<void>;
|
|
25
|
+
loadToolsFromUrl(url: string, apifyToken: string): Promise<void>;
|
|
24
26
|
/**
|
|
25
27
|
* Upsert new tools.
|
|
26
28
|
* @param tools - Array of tool wrappers.
|
|
@@ -36,4 +38,4 @@ export declare class ActorsMcpServer {
|
|
|
36
38
|
private setupToolHandlers;
|
|
37
39
|
connect(transport: Transport): Promise<void>;
|
|
38
40
|
}
|
|
39
|
-
//# sourceMappingURL=
|
|
41
|
+
//# sourceMappingURL=server.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":"AACA;;GAEG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AACnE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,+CAA+C,CAAC;AAa/E,OAAO,KAAK,EAAuC,QAAQ,EAAE,MAAM,aAAa,CAAC;AAOjF;;GAEG;AACH,qBAAa,eAAe;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;;IAsBpC;;OAEG;IACU,gBAAgB,CAAC,UAAU,EAAE,MAAM;IAMhD;;;;;;OAMG;IACU,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM;IAK7D;;;;OAIG;IACI,WAAW,CAAC,KAAK,EAAE,QAAQ,EAAE;IAQpC;;;OAGG;IACI,YAAY,IAAI,MAAM,EAAE;IAI/B,OAAO,CAAC,kBAAkB;IAU1B,OAAO,CAAC,iBAAiB;IAsGnB,OAAO,CAAC,SAAS,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;CAGrD"}
|