UNPKG

n8n

Version:

n8n Workflow Automation Tool

64 lines 2.43 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.searchMcpRegistryServers = searchMcpRegistryServers; const change_case_1 = require("change-case"); const node_description_transform_1 = require("../node-description-transform"); function pickPreferredRemote(server) { const streamable = server.remotes.find((remote) => remote.type === 'streamable-http'); if (streamable) return { type: 'streamableHttp', url: streamable.url }; const sse = server.remotes.find((remote) => remote.type === 'sse'); if (sse) return { type: 'sse', url: sse.url }; return null; } function credentialTypeName(server) { return `${(0, change_case_1.camelCase)(server.slug)}McpOAuth2Api`; } function toSearchResult(server) { const remote = pickPreferredRemote(server); if (!remote) return null; const credentialType = credentialTypeName(server); return { name: (0, change_case_1.camelCase)(server.slug), title: server.title, description: server.tagline, url: remote.url, transport: remote.type, authentication: credentialType, credentialType, tools: server.tools.map((tool) => ({ name: tool.name, ...(tool.title ? { title: tool.title } : {}), })), metadata: { nodeTypeName: `${node_description_transform_1.MCP_REGISTRY_PACKAGE_NAME}.${(0, change_case_1.camelCase)(server.slug)}` }, }; } function normalizeQueries(queries) { return queries.map((query) => query.trim().toLowerCase()).filter((query) => query.length > 0); } function matchesQuery(server, normalizedQueries) { const fields = [ server.slug, (0, change_case_1.camelCase)(server.slug), server.title, server.description, server.tagline, ] .filter((field) => typeof field === 'string') .map((field) => field.toLowerCase()); return normalizedQueries.some((query) => fields.some((field) => field.includes(query))); } function searchMcpRegistryServers(servers, queries) { const normalized = normalizeQueries(queries); if (normalized.length === 0) return []; return servers.flatMap((server) => { if (!matchesQuery(server, normalized)) return []; const result = toSearchResult(server); return result ? [result] : []; }); } //# sourceMappingURL=mcp-registry-search.js.map