import { type ILoadOptionsFunctions, type INodePropertyOptions, NodeOperationError, } from 'n8n-workflow'; import type { McpAuthenticationOption } from './types'; import { connectMcpClient, getAllTools, getAuthHeaders } from './utils'; export async function getTools(this: ILoadOptionsFunctions): Promise { const authentication = this.getNodeParameter('authentication') as McpAuthenticationOption; const sseEndpoint = this.getNodeParameter('sseEndpoint') as string; const node = this.getNode(); const { headers } = await getAuthHeaders(this, authentication); const client = await connectMcpClient({ sseEndpoint, headers, name: node.type, version: node.typeVersion, }); if (!client.ok) { throw new NodeOperationError(this.getNode(), 'Could not connect to your MCP server'); } const tools = await getAllTools(client.result); return tools.map((tool) => ({ name: tool.name, value: tool.name, description: tool.description, inputSchema: tool.inputSchema, })); }