mirror of
https://github.com/Abdulazizzn/n8n-enterprise-unlocked.git
synced 2025-12-20 19:32:15 +00:00
feat(MCP Client Tool Node): Add support for HTTP Streamable Transport (#15454)
This commit is contained in:
@@ -11,7 +11,7 @@ import { logWrapper } from '@utils/logWrapper';
|
||||
import { getConnectionHintNoticeField } from '@utils/sharedFields';
|
||||
|
||||
import { getTools } from './loadOptions';
|
||||
import type { McpAuthenticationOption, McpToolIncludeMode } from './types';
|
||||
import type { McpServerTransport, McpAuthenticationOption, McpToolIncludeMode } from './types';
|
||||
import {
|
||||
connectMcpClient,
|
||||
createCallTool,
|
||||
@@ -31,7 +31,7 @@ export class McpClientTool implements INodeType {
|
||||
dark: 'file:../mcp.dark.svg',
|
||||
},
|
||||
group: ['output'],
|
||||
version: 1,
|
||||
version: [1, 1.1],
|
||||
description: 'Connect tools from an MCP Server',
|
||||
defaults: {
|
||||
name: 'MCP Client',
|
||||
@@ -83,6 +83,47 @@ export class McpClientTool implements INodeType {
|
||||
placeholder: 'e.g. https://my-mcp-server.ai/sse',
|
||||
default: '',
|
||||
required: true,
|
||||
displayOptions: {
|
||||
show: {
|
||||
'@version': [1],
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
displayName: 'Endpoint',
|
||||
name: 'endpointUrl',
|
||||
type: 'string',
|
||||
description: 'Endpoint of your MCP server',
|
||||
placeholder: 'e.g. https://my-mcp-server.ai/mcp',
|
||||
default: '',
|
||||
required: true,
|
||||
displayOptions: {
|
||||
show: {
|
||||
'@version': [{ _cnd: { gte: 1.1 } }],
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
displayName: 'Server Transport',
|
||||
name: 'serverTransport',
|
||||
type: 'options',
|
||||
options: [
|
||||
{
|
||||
name: 'Server Sent Events (Deprecated)',
|
||||
value: 'sse',
|
||||
},
|
||||
{
|
||||
name: 'HTTP Streamable',
|
||||
value: 'httpStreamable',
|
||||
},
|
||||
],
|
||||
default: 'sse',
|
||||
description: 'The transport used by your endpoint',
|
||||
displayOptions: {
|
||||
show: {
|
||||
'@version': [{ _cnd: { gte: 1.1 } }],
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
displayName: 'Authentication',
|
||||
@@ -103,7 +144,7 @@ export class McpClientTool implements INodeType {
|
||||
},
|
||||
],
|
||||
default: 'none',
|
||||
description: 'The way to authenticate with your SSE endpoint',
|
||||
description: 'The way to authenticate with your endpoint',
|
||||
},
|
||||
{
|
||||
displayName: 'Credentials',
|
||||
@@ -187,11 +228,22 @@ export class McpClientTool implements INodeType {
|
||||
'authentication',
|
||||
itemIndex,
|
||||
) as McpAuthenticationOption;
|
||||
const sseEndpoint = this.getNodeParameter('sseEndpoint', itemIndex) as string;
|
||||
const node = this.getNode();
|
||||
|
||||
let serverTransport: McpServerTransport;
|
||||
let endpointUrl: string;
|
||||
if (node.typeVersion === 1) {
|
||||
serverTransport = 'sse';
|
||||
endpointUrl = this.getNodeParameter('sseEndpoint', itemIndex) as string;
|
||||
} else {
|
||||
serverTransport = this.getNodeParameter('serverTransport', itemIndex) as McpServerTransport;
|
||||
endpointUrl = this.getNodeParameter('endpointUrl', itemIndex) as string;
|
||||
}
|
||||
|
||||
const { headers } = await getAuthHeaders(this, authentication);
|
||||
const client = await connectMcpClient({
|
||||
sseEndpoint,
|
||||
serverTransport,
|
||||
endpointUrl,
|
||||
headers,
|
||||
name: node.type,
|
||||
version: node.typeVersion,
|
||||
|
||||
Reference in New Issue
Block a user