mirror of
https://github.com/Abdulazizzn/n8n-enterprise-unlocked.git
synced 2025-12-18 02:21:13 +00:00
feat(MCP Client Tool Node): Add MCP Client Tool Node to connect to MCP servers over SSE (#14464)
Co-authored-by: कारतोफ्फेलस्क्रिप्ट™ <aditya@netroy.in> Co-authored-by: JP van Oosten <jp@n8n.io>
This commit is contained in:
@@ -0,0 +1,32 @@
|
||||
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<INodePropertyOptions[]> {
|
||||
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,
|
||||
}));
|
||||
}
|
||||
Reference in New Issue
Block a user