MCPcopy
hub / github.com/FlowiseAI/Flowise / createClient

Method createClient

packages/components/nodes/tools/MCP/core.ts:29–104  ·  view source on GitHub ↗

* Creates a new MCP client and connects it via the configured transport. * @param injectHeaders - Additional HTTP headers merged over static `serverParams.headers` for this connection. Used to pass per-invocation headers (e.g. from getToolCallHeaders) into SSE/HTTP transports.

(injectHeaders: Record<string, string> = {})

Source from the content-addressed store, hash-verified

27 * @param injectHeaders - Additional HTTP headers merged over static `serverParams.headers` for this connection. Used to pass per-invocation headers (e.g. from {@link getToolCallHeaders}) into SSE/HTTP transports.
28 */
29 async createClient(injectHeaders: Record<string, string> = {}): Promise<Client> {
30 const client = new Client(
31 {
32 name: 'flowise-client',
33 version: '1.0.0'
34 },
35 {
36 capabilities: {}
37 }
38 )
39
40 let transport: StdioClientTransport | SSEClientTransport | StreamableHTTPClientTransport
41
42 if (this.transportType === 'stdio') {
43 // Compatible with overridden PATH configuration
44 const params = {
45 ...this.serverParams,
46 env: {
47 ...(this.serverParams.env || {}),
48 PATH: process.env.PATH
49 }
50 }
51
52 transport = new StdioClientTransport(params as StdioServerParameters)
53 await client.connect(transport)
54 } else {
55 if (this.serverParams.url === undefined) {
56 throw new Error('URL is required for SSE transport')
57 }
58
59 const baseUrl = new URL(this.serverParams.url)
60 await checkDenyList(this.serverParams.url)
61 const mergedHeaders = { ...this.serverParams?.headers, ...injectHeaders }
62 const headers = Object.keys(mergedHeaders).length > 0 ? mergedHeaders : undefined
63 try {
64 if (headers) {
65 transport = new StreamableHTTPClientTransport(baseUrl, {
66 requestInit: {
67 headers
68 }
69 })
70 } else {
71 transport = new StreamableHTTPClientTransport(baseUrl)
72 }
73 await client.connect(transport)
74 } catch (error) {
75 console.error('Error connecting to MCP server', error)
76 if (headers) {
77 transport = new SSEClientTransport(baseUrl, {
78 requestInit: {
79 headers
80 },
81 eventSourceInit: {
82 fetch: async (url, init) => {
83 return secureFetch(url.toString(), {
84 ...(init as any),
85 headers
86 }) as any

Callers 3

initializeMethod · 0.95
MCPToolFunction · 0.80
createPipedreamToolFunction · 0.80

Calls 3

checkDenyListFunction · 0.90
secureFetchFunction · 0.90
connectMethod · 0.45

Tested by

no test coverage detected