@apify/actors-mcp-server 0.1.22-beta.3 → 0.1.22-beta.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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} +2 -2
- package/dist/apify-client.js.map +1 -0
- 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 +2 -2
- package/dist/main.js.map +1 -1
- package/dist/mcp/actors.d.ts +3 -0
- package/dist/mcp/actors.d.ts.map +1 -0
- package/dist/mcp/actors.js +12 -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 +26 -0
- package/dist/mcp/utils.d.ts.map +1 -0
- package/dist/mcp/utils.js +52 -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 +49 -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/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
|
|
@@ -20,4 +20,4 @@ export class ApifyClient extends _ApifyClient {
|
|
|
20
20
|
});
|
|
21
21
|
}
|
|
22
22
|
}
|
|
23
|
-
//# 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/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,9 +4,9 @@
|
|
|
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
|
|
9
|
+
import { ActorsMcpServer } from './mcp/server.js';
|
|
10
10
|
import { actorDefinitionTool, addTool, removeTool, searchTool, callActorGetDataset } from './tools/index.js';
|
|
11
11
|
const STANDBY_MODE = Actor.getEnv().metaOrigin === 'STANDBY';
|
|
12
12
|
await Actor.init();
|
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,MAAM,kBAAkB,CAAC;AAE7G,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,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 @@
|
|
|
1
|
+
{"version":3,"file":"actors.d.ts","sourceRoot":"","sources":["../../src/mcp/actors.ts"],"names":[],"mappings":"AACA,wBAAsB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAGxE;AAED,wBAAsB,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAM5E"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export async function isActorMCPServer(actorID) {
|
|
2
|
+
// TODO: implement the logic
|
|
3
|
+
return actorID === 'apify/actors-mcp-server';
|
|
4
|
+
}
|
|
5
|
+
export async function getActorsMCPServerURL(actorID) {
|
|
6
|
+
// TODO: implement the logic
|
|
7
|
+
if (actorID === 'apify/actors-mcp-server') {
|
|
8
|
+
return 'https://actors-mcp-server.apify.actor/sse';
|
|
9
|
+
}
|
|
10
|
+
throw new Error(`Actor ${actorID} is not an MCP server`);
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=actors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"actors.js","sourceRoot":"","sources":["../../src/mcp/actors.ts"],"names":[],"mappings":"AACA,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,OAAe;IAClD,4BAA4B;IAC5B,OAAO,OAAO,KAAK,yBAAyB,CAAC;AACjD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAAC,OAAe;IACvD,4BAA4B;IAC5B,IAAI,OAAO,KAAK,yBAAyB,EAAE,CAAC;QACxC,OAAO,2CAA2C,CAAC;IACvD,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,SAAS,OAAO,uBAAuB,CAAC,CAAC;AAC7D,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";
|
|
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,SAAS,CAAC;AAEzC;;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,UAAU,CAAC;AAClD,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";
|
|
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,SAAS,CAAC;AAEpE,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"}
|
|
@@ -4,11 +4,12 @@
|
|
|
4
4
|
import { Server } from '@modelcontextprotocol/sdk/server/index.js';
|
|
5
5
|
import { CallToolRequestSchema, ListToolsRequestSchema } from '@modelcontextprotocol/sdk/types.js';
|
|
6
6
|
import log from '@apify/log';
|
|
7
|
-
import { ACTOR_OUTPUT_MAX_CHARS_PER_ITEM, ACTOR_OUTPUT_TRUNCATED_MESSAGE, SERVER_NAME, SERVER_VERSION, } from '
|
|
8
|
-
import { actorDefinitionTool, callActorGetDataset, getActorsAsTools, searchTool } from '
|
|
9
|
-
import { defaults } from '
|
|
10
|
-
import { actorNameToToolName } from '
|
|
11
|
-
import { processParamsGetTools } from './
|
|
7
|
+
import { ACTOR_OUTPUT_MAX_CHARS_PER_ITEM, ACTOR_OUTPUT_TRUNCATED_MESSAGE, SERVER_NAME, SERVER_VERSION, } from '../const.js';
|
|
8
|
+
import { actorDefinitionTool, callActorGetDataset, getActorsAsTools, searchTool } from '../tools/index.js';
|
|
9
|
+
import { defaults } from '../const.js';
|
|
10
|
+
import { actorNameToToolName } from '../tools/utils.js';
|
|
11
|
+
import { processParamsGetTools } from './utils.js';
|
|
12
|
+
import { createMCPClient } from './client.js';
|
|
12
13
|
/**
|
|
13
14
|
* Create Apify MCP server
|
|
14
15
|
*/
|
|
@@ -33,19 +34,21 @@ export class ActorsMcpServer {
|
|
|
33
34
|
/**
|
|
34
35
|
* Loads missing default tools.
|
|
35
36
|
*/
|
|
36
|
-
async loadDefaultTools() {
|
|
37
|
+
async loadDefaultTools(apifyToken) {
|
|
37
38
|
const missingDefaultTools = defaults.actors.filter(name => !this.tools.has(actorNameToToolName(name)));
|
|
38
|
-
const tools = await getActorsAsTools(missingDefaultTools);
|
|
39
|
+
const tools = await getActorsAsTools(missingDefaultTools, apifyToken);
|
|
39
40
|
if (tools.length > 0)
|
|
40
41
|
this.updateTools(tools);
|
|
41
42
|
}
|
|
42
43
|
/**
|
|
43
44
|
* Loads tools from URL params.
|
|
44
45
|
*
|
|
46
|
+
* This method also handles enabling of Actor auto loading via the processParamsGetTools.
|
|
47
|
+
*
|
|
45
48
|
* Used primarily for SSE.
|
|
46
49
|
*/
|
|
47
|
-
async loadToolsFromUrl(url) {
|
|
48
|
-
const tools = await processParamsGetTools(url);
|
|
50
|
+
async loadToolsFromUrl(url, apifyToken) {
|
|
51
|
+
const tools = await processParamsGetTools(url, apifyToken);
|
|
49
52
|
if (tools.length > 0)
|
|
50
53
|
this.updateTools(tools);
|
|
51
54
|
}
|
|
@@ -95,7 +98,9 @@ export class ActorsMcpServer {
|
|
|
95
98
|
*/
|
|
96
99
|
this.server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
97
100
|
const { name, arguments: args } = request.params;
|
|
98
|
-
const apifyToken = request.params.apifyToken || process.env.APIFY_TOKEN;
|
|
101
|
+
const apifyToken = (request.params.apifyToken || process.env.APIFY_TOKEN);
|
|
102
|
+
// Remove apifyToken from request.params just in case
|
|
103
|
+
delete request.params.apifyToken;
|
|
99
104
|
// Validate token
|
|
100
105
|
if (!apifyToken) {
|
|
101
106
|
throw new Error('APIFY_TOKEN is required but not set in the environment variables or passed as a parameter.');
|
|
@@ -122,9 +127,26 @@ export class ActorsMcpServer {
|
|
|
122
127
|
args,
|
|
123
128
|
apifyMcpServer: this,
|
|
124
129
|
mcpServer: this.server,
|
|
130
|
+
apifyToken,
|
|
125
131
|
});
|
|
126
132
|
return { ...res };
|
|
127
133
|
}
|
|
134
|
+
if (tool.type === 'actor-mcp') {
|
|
135
|
+
const serverTool = tool.tool;
|
|
136
|
+
let client;
|
|
137
|
+
try {
|
|
138
|
+
client = await createMCPClient(serverTool.serverUrl, apifyToken);
|
|
139
|
+
const res = await client.callTool({
|
|
140
|
+
name: serverTool.originToolName,
|
|
141
|
+
arguments: args,
|
|
142
|
+
});
|
|
143
|
+
return { ...res };
|
|
144
|
+
}
|
|
145
|
+
finally {
|
|
146
|
+
if (client)
|
|
147
|
+
await client.close();
|
|
148
|
+
}
|
|
149
|
+
}
|
|
128
150
|
// Handle actor tool
|
|
129
151
|
if (tool.type === 'actor') {
|
|
130
152
|
const actorTool = tool.tool;
|
|
@@ -152,4 +174,4 @@ export class ActorsMcpServer {
|
|
|
152
174
|
await this.server.connect(transport);
|
|
153
175
|
}
|
|
154
176
|
}
|
|
155
|
-
//# sourceMappingURL=
|
|
177
|
+
//# sourceMappingURL=server.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import type { ToolWrap } from '../types.js';
|
|
2
|
+
import { Input } from "../types.js";
|
|
3
|
+
/**
|
|
4
|
+
* Generates a unique server ID based on the provided URL.
|
|
5
|
+
*
|
|
6
|
+
* URL is used instead of Actor ID becase one Actor may expose multiple servers - legacy SSE / streamable HTTP.
|
|
7
|
+
*
|
|
8
|
+
* @param url The URL to generate the server ID from.
|
|
9
|
+
* @returns A unique server ID.
|
|
10
|
+
*/
|
|
11
|
+
export declare function getMCPServerID(url: string): string;
|
|
12
|
+
/**
|
|
13
|
+
* Generates a unique tool name based on the provided URL and tool name.
|
|
14
|
+
* @param url The URL to generate the tool name from.
|
|
15
|
+
* @param toolName The tool name to generate the tool name from.
|
|
16
|
+
* @returns A unique tool name.
|
|
17
|
+
*/
|
|
18
|
+
export declare function getProxyMCPServerToolName(url: string, toolName: string): string;
|
|
19
|
+
/**
|
|
20
|
+
* Process input parameters and get tools
|
|
21
|
+
* If URL contains query parameter `actors`, return tools from Actors otherwise return null.
|
|
22
|
+
* @param url
|
|
23
|
+
*/
|
|
24
|
+
export declare function processParamsGetTools(url: string, apifyToken: string): Promise<ToolWrap[]>;
|
|
25
|
+
export declare function parseInputParamsFromUrl(url: string): Input;
|
|
26
|
+
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/mcp/utils.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAG5C,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAEpC;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAIlD;AAED;;;;;GAKG;AACH,wBAAgB,yBAAyB,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAK/E;AAED;;;;GAIG;AACH,wBAAsB,qBAAqB,CAAC,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,uBAY1E;AAED,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,MAAM,GAAG,KAAK,CAI1D"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { createHash } from "node:crypto";
|
|
2
|
+
import { MAX_TOOL_NAME_LENGTH, SERVER_ID_LENGTH } from "./const";
|
|
3
|
+
import { parse } from 'node:querystring';
|
|
4
|
+
import { processInput } from '../input.js';
|
|
5
|
+
import { addTool, getActorsAsTools, removeTool } from '../tools/index.js';
|
|
6
|
+
/**
|
|
7
|
+
* Generates a unique server ID based on the provided URL.
|
|
8
|
+
*
|
|
9
|
+
* URL is used instead of Actor ID becase one Actor may expose multiple servers - legacy SSE / streamable HTTP.
|
|
10
|
+
*
|
|
11
|
+
* @param url The URL to generate the server ID from.
|
|
12
|
+
* @returns A unique server ID.
|
|
13
|
+
*/
|
|
14
|
+
export function getMCPServerID(url) {
|
|
15
|
+
const serverHashDigest = createHash('sha256').update(url).digest('hex');
|
|
16
|
+
return serverHashDigest.slice(0, SERVER_ID_LENGTH);
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Generates a unique tool name based on the provided URL and tool name.
|
|
20
|
+
* @param url The URL to generate the tool name from.
|
|
21
|
+
* @param toolName The tool name to generate the tool name from.
|
|
22
|
+
* @returns A unique tool name.
|
|
23
|
+
*/
|
|
24
|
+
export function getProxyMCPServerToolName(url, toolName) {
|
|
25
|
+
const prefix = getMCPServerID(url);
|
|
26
|
+
const fullName = `${prefix}-${toolName}`;
|
|
27
|
+
return fullName.slice(0, MAX_TOOL_NAME_LENGTH);
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Process input parameters and get tools
|
|
31
|
+
* If URL contains query parameter `actors`, return tools from Actors otherwise return null.
|
|
32
|
+
* @param url
|
|
33
|
+
*/
|
|
34
|
+
export async function processParamsGetTools(url, apifyToken) {
|
|
35
|
+
const input = parseInputParamsFromUrl(url);
|
|
36
|
+
let tools = [];
|
|
37
|
+
if (input.actors) {
|
|
38
|
+
const actors = input.actors;
|
|
39
|
+
// Normal Actors as a tool
|
|
40
|
+
tools = await getActorsAsTools(actors, apifyToken);
|
|
41
|
+
}
|
|
42
|
+
if (input.enableActorAutoLoading) {
|
|
43
|
+
tools.push(addTool, removeTool);
|
|
44
|
+
}
|
|
45
|
+
return tools;
|
|
46
|
+
}
|
|
47
|
+
export function parseInputParamsFromUrl(url) {
|
|
48
|
+
const query = url.split('?')[1] || '';
|
|
49
|
+
const params = parse(query);
|
|
50
|
+
return processInput(params);
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/mcp/utils.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAEjE,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAG3C,OAAO,EAAE,OAAO,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAG1E;;;;;;;GAOG;AACH,MAAM,UAAU,cAAc,CAAC,GAAW;IACtC,MAAM,gBAAgB,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAExE,OAAO,gBAAgB,CAAC,KAAK,CAAC,CAAC,EAAE,gBAAgB,CAAC,CAAC;AACvD,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,yBAAyB,CAAC,GAAW,EAAE,QAAgB;IACnE,MAAM,MAAM,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC;IAEnC,MAAM,QAAQ,GAAG,GAAG,MAAM,IAAI,QAAQ,EAAE,CAAC;IACzC,OAAO,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,oBAAoB,CAAC,CAAC;AACnD,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAAC,GAAW,EAAE,UAAkB;IACvE,MAAM,KAAK,GAAG,uBAAuB,CAAC,GAAG,CAAC,CAAC;IAC3C,IAAI,KAAK,GAAe,EAAE,CAAC;IAC3B,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;QACf,MAAM,MAAM,GAAG,KAAK,CAAC,MAAkB,CAAC;QACxC,0BAA0B;QAC1B,KAAK,GAAG,MAAM,gBAAgB,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IACvD,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,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"}
|