MCPcopy Create free account
hub / github.com/FlowiseAI/Flowise / createClient

Method createClient

packages/components/nodes/tools/MCP/core.ts:94–169  ·  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

92 * @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.
93 */
94 async createClient(injectHeaders: Record<string, string> = {}): Promise<Client> {
95 const client = new Client(
96 {
97 name: 'flowise-client',
98 version: '1.0.0'
99 },
100 {
101 capabilities: {}
102 }
103 )
104
105 let transport: StdioClientTransport | SSEClientTransport | StreamableHTTPClientTransport
106
107 if (this.transportType === 'stdio') {
108 // Compatible with overridden PATH configuration
109 const params = {
110 ...this.serverParams,
111 env: {
112 ...(this.serverParams.env || {}),
113 PATH: process.env.PATH
114 }
115 }
116
117 transport = new StdioClientTransport(params as StdioServerParameters)
118 await client.connect(transport)
119 } else {
120 if (this.serverParams.url === undefined) {
121 throw new Error('URL is required for SSE transport')
122 }
123
124 const baseUrl = new URL(this.serverParams.url)
125 await checkDenyList(this.serverParams.url)
126 const mergedHeaders = { ...this.serverParams?.headers, ...injectHeaders }
127 const headers = Object.keys(mergedHeaders).length > 0 ? mergedHeaders : undefined
128 try {
129 if (headers) {
130 transport = new StreamableHTTPClientTransport(baseUrl, {
131 requestInit: {
132 headers
133 }
134 })
135 } else {
136 transport = new StreamableHTTPClientTransport(baseUrl)
137 }
138 await client.connect(transport)
139 } catch (error) {
140 console.error('Error connecting to MCP server', error)
141 if (headers) {
142 transport = new SSEClientTransport(baseUrl, {
143 requestInit: {
144 headers
145 },
146 eventSourceInit: {
147 fetch: async (url, init) => {
148 return secureFetch(url.toString(), {
149 ...(init as any),
150 headers
151 }) 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