@@ -15,14 +15,19 @@ export class MCPToolkit extends BaseToolkit {
1515 client : Client | null = null
1616 serverParams : StdioServerParameters | any
1717 transportType : 'stdio' | 'sse'
18+ /** Per-invocation HTTP headers injected at tools/call time; overrides static toolkit headers for the same names. */
19+ getToolCallHeaders ?: ( ) => Promise < Record < string , string > >
1820 constructor ( serverParams : StdioServerParameters | any , transportType : 'stdio' | 'sse' ) {
1921 super ( )
2022 this . serverParams = serverParams
2123 this . transportType = transportType
2224 }
2325
24- // Method to create a new client with transport
25- async createClient ( ) : Promise < Client > {
26+ /**
27+ * Creates a new MCP client and connects it via the configured transport.
28+ * @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.
29+ */
30+ async createClient ( injectHeaders : Record < string , string > = { } ) : Promise < Client > {
2631 const client = new Client (
2732 {
2833 name : 'flowise-client' ,
@@ -54,28 +59,30 @@ export class MCPToolkit extends BaseToolkit {
5459
5560 const baseUrl = new URL ( this . serverParams . url )
5661 await checkDenyList ( this . serverParams . url )
62+ const mergedHeaders = { ...this . serverParams ?. headers , ...injectHeaders }
63+ const headers = Object . keys ( mergedHeaders ) . length > 0 ? mergedHeaders : undefined
5764 try {
58- if ( this . serverParams . headers ) {
65+ if ( headers ) {
5966 transport = new StreamableHTTPClientTransport ( baseUrl , {
6067 requestInit : {
61- headers : this . serverParams . headers
68+ headers
6269 }
6370 } )
6471 } else {
6572 transport = new StreamableHTTPClientTransport ( baseUrl )
6673 }
6774 await client . connect ( transport )
6875 } catch ( error ) {
69- if ( this . serverParams . headers ) {
76+ if ( headers ) {
7077 transport = new SSEClientTransport ( baseUrl , {
7178 requestInit : {
72- headers : this . serverParams . headers
79+ headers
7380 } ,
7481 eventSourceInit : {
7582 fetch : async ( url , init ) => {
7683 return secureFetch ( url . toString ( ) , {
7784 ...( init as any ) ,
78- headers : this . serverParams . headers
85+ headers
7986 } ) as any
8087 }
8188 }
@@ -148,7 +155,8 @@ export async function MCPTool({
148155 return tool (
149156 async ( input ) : Promise < string > => {
150157 // Create a new client for this request
151- const client = await toolkit . createClient ( )
158+ const toolCallHeaders = await toolkit . getToolCallHeaders ?.( )
159+ const client = await toolkit . createClient ( toolCallHeaders )
152160
153161 try {
154162 const req : CallToolRequest = { method : 'tools/call' , params : { name : name , arguments : input as any } }
0 commit comments