UNPKG

@apify/actors-mcp-server

Version:

Model Context Protocol Server for Apify

41 lines 1.69 kB
/** * Shared logic for loading tools based on Input type. * This eliminates duplication between stdio.ts and processParamsGetTools. */ import { defaults } from '../const.js'; import { addRemoveTools, getActorsAsTools, toolCategories } from '../tools/index.js'; /** * Load tools based on the provided Input object. * This function is used by both the stdio.ts and the processParamsGetTools function. * * @param input The processed Input object * @param apifyToken The Apify API token * @param useDefaultActors Whether to use default actors if no actors are specified * @returns An array of tool entries */ export async function loadToolsFromInput(input, apifyToken, useDefaultActors = false) { let tools = []; // Load actors as tools if (input.actors && (Array.isArray(input.actors) ? input.actors.length > 0 : input.actors)) { const actors = Array.isArray(input.actors) ? input.actors : [input.actors]; tools = await getActorsAsTools(actors, apifyToken); } else if (useDefaultActors) { // Use default actors if no actors are specified and useDefaultActors is true tools = await getActorsAsTools(defaults.actors, apifyToken); } // Add tools for adding/removing actors if enabled if (input.enableAddingActors) { tools.push(...addRemoveTools); } // Add tools from enabled categories if (input.tools) { const toolKeys = Array.isArray(input.tools) ? input.tools : [input.tools]; for (const toolKey of toolKeys) { const keyTools = toolCategories[toolKey] || []; tools.push(...keyTools); } } return tools; } //# sourceMappingURL=tools-loader.js.map