@@ -231,17 +231,7 @@ class McpHTTPHandle extends Disposable {
231
231
if ( sessionId ) {
232
232
headers [ 'Mcp-Session-Id' ] = sessionId ;
233
233
}
234
-
235
- if ( this . _authMetadata ) {
236
- try {
237
- const token = await this . _proxy . $getTokenFromServerMetadata ( this . _id , this . _authMetadata ) ;
238
- if ( token ) {
239
- headers [ 'Authorization' ] = `Bearer ${ token } ` ;
240
- }
241
- } catch ( e ) {
242
- this . _log ( LogLevel . Warning , `Error getting token from server metadata: ${ String ( e ) } ` ) ;
243
- }
244
- }
234
+ await this . _addAuthHeader ( headers ) ;
245
235
246
236
const doFetch = ( ) => fetch (
247
237
this . _launch . uri . toString ( true ) ,
@@ -257,14 +247,9 @@ class McpHTTPHandle extends Disposable {
257
247
if ( res . status === 401 ) {
258
248
if ( ! this . _authMetadata ) {
259
249
await this . _populateAuthMetadata ( res ) ;
260
- if ( this . _authMetadata ) {
261
- try {
262
- const token = await this . _proxy . $getTokenFromServerMetadata ( this . _id , this . _authMetadata ) ;
263
- headers [ 'Authorization' ] = `Bearer ${ token } ` ;
264
- res = await doFetch ( ) ;
265
- } catch ( e ) {
266
- this . _log ( LogLevel . Warning , `Error getting token from server metadata: ${ String ( e ) } ` ) ;
267
- }
250
+ await this . _addAuthHeader ( headers ) ;
251
+ if ( headers [ 'Authorization' ] ) {
252
+ res = await doFetch ( ) ;
268
253
}
269
254
}
270
255
}
@@ -493,6 +478,7 @@ class McpHTTPHandle extends Disposable {
493
478
...Object . fromEntries ( this . _launch . headers ) ,
494
479
'Accept' : 'text/event-stream' ,
495
480
} ;
481
+ await this . _addAuthHeader ( headers ) ;
496
482
497
483
if ( this . _mode . value === HttpMode . Http && this . _mode . sessionId !== undefined ) {
498
484
headers [ 'Mcp-Session-Id' ] = this . _mode . sessionId ;
@@ -545,16 +531,7 @@ class McpHTTPHandle extends Disposable {
545
531
...Object . fromEntries ( this . _launch . headers ) ,
546
532
'Accept' : 'text/event-stream' ,
547
533
} ;
548
- if ( this . _authMetadata ) {
549
- try {
550
- const token = await this . _proxy . $getTokenFromServerMetadata ( this . _id , this . _authMetadata ) ;
551
- if ( token ) {
552
- headers [ 'Authorization' ] = `Bearer ${ token } ` ;
553
- }
554
- } catch ( e ) {
555
- this . _log ( LogLevel . Warning , `Error getting token from server metadata: ${ String ( e ) } ` ) ;
556
- }
557
- }
534
+ await this . _addAuthHeader ( headers ) ;
558
535
559
536
let res : Response ;
560
537
try {
@@ -599,16 +576,7 @@ class McpHTTPHandle extends Disposable {
599
576
'Content-Type' : 'application/json' ,
600
577
'Content-Length' : String ( asBytes . length ) ,
601
578
} ;
602
- if ( this . _authMetadata ) {
603
- try {
604
- const token = await this . _proxy . $getTokenFromServerMetadata ( this . _id , this . _authMetadata ) ;
605
- if ( token ) {
606
- headers [ 'Authorization' ] = `Bearer ${ token } ` ;
607
- }
608
- } catch ( e ) {
609
- this . _log ( LogLevel . Warning , `Error getting token from server metadata: ${ String ( e ) } ` ) ;
610
- }
611
- }
579
+ await this . _addAuthHeader ( headers ) ;
612
580
const res = await fetch ( url , {
613
581
method : 'POST' ,
614
582
signal : this . _abortCtrl . signal ,
@@ -647,6 +615,20 @@ class McpHTTPHandle extends Disposable {
647
615
} while ( ! chunk . done ) ;
648
616
}
649
617
618
+ private async _addAuthHeader ( headers : Record < string , string > ) {
619
+ if ( this . _authMetadata ) {
620
+ try {
621
+ const token = await this . _proxy . $getTokenFromServerMetadata ( this . _id , this . _authMetadata ) ;
622
+ if ( token ) {
623
+ headers [ 'Authorization' ] = `Bearer ${ token } ` ;
624
+ }
625
+ } catch ( e ) {
626
+ this . _log ( LogLevel . Warning , `Error getting token from server metadata: ${ String ( e ) } ` ) ;
627
+ }
628
+ }
629
+ return headers ;
630
+ }
631
+
650
632
private _log ( level : LogLevel , message : string ) {
651
633
if ( ! this . _store . isDisposed ) {
652
634
this . _proxy . $onDidPublishLog ( this . _id , level , message ) ;
0 commit comments