Skip to content

Commit 2573e74

Browse files
committed
add default tools and load tools from url MCP server methods
1 parent 90b87f8 commit 2573e74

File tree

1 file changed

+24
-2
lines changed

1 file changed

+24
-2
lines changed

src/mcp-server.ts

Lines changed: 24 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,11 @@ import {
1515
SERVER_NAME,
1616
SERVER_VERSION,
1717
} from './const.js';
18-
import { actorDefinitionTool, callActorGetDataset, searchTool } from './tools/index.js';
18+
import { actorDefinitionTool, callActorGetDataset, getActorsAsTools, searchTool } from './tools/index.js';
1919
import type { ActorTool, HelperTool, ToolWrap } from './types.js';
20+
import { defaults } from './actor/const.js';
21+
import { actorNameToToolName } from './tools/utils.js';
22+
import { processParamsGetTools } from './actor/utils.js';
2023

2124
/**
2225
* Create Apify MCP server
@@ -45,6 +48,25 @@ export class ActorsMcpServer {
4548
this.updateTools([searchTool, actorDefinitionTool]);
4649
}
4750

51+
/**
52+
* Loads missing default tools.
53+
*/
54+
public async loadDefaultTools() {
55+
const missingDefaultTools = defaults.actors.filter(name => !this.tools.has(actorNameToToolName(name)));
56+
const tools = await getActorsAsTools(missingDefaultTools);
57+
if (tools.length > 0) this.updateTools(tools);
58+
}
59+
60+
/**
61+
* Loads tools from URL params.
62+
*
63+
* Used primarily for SSE.
64+
*/
65+
public async loadToolsFromUrl(url: string) {
66+
const tools = await processParamsGetTools(url);
67+
if (tools.length > 0) this.updateTools(tools);
68+
}
69+
4870
/**
4971
* Upsert new tools.
5072
* @param tools - Array of tool wrappers.
@@ -83,7 +105,7 @@ export class ActorsMcpServer {
83105
* @returns {object} - The response object containing the tools.
84106
*/
85107
this.server.setRequestHandler(ListToolsRequestSchema, async () => {
86-
// TODO if there is actor-mcp as a tool, also list the tools from that Actor
108+
// TODO if there is actor-mcp as a tool, also list the tools from that Actor
87109
const tools = Array.from(this.tools.values()).map((tool) => (tool.tool));
88110
return { tools };
89111
});

0 commit comments

Comments
 (0)