@@ -49,6 +49,43 @@ if (useOAuth) {
4949 ) ;
5050}
5151
52+ // Parse repeated CLI headers: --header "Key: Value" (also supports -H)
53+ function parseHeadersFromArgv ( argv : string [ ] ) : Record < string , string > {
54+ const headers : Record < string , string > = { } ;
55+ for ( let i = 0 ; i < argv . length ; i ++ ) {
56+ const arg = argv [ i ] ;
57+ if ( arg === '--header' || arg === '-H' ) {
58+ const raw = argv [ i + 1 ] ;
59+ if ( raw ) {
60+ const idx = raw . indexOf ( ':' ) ;
61+ if ( idx !== - 1 ) {
62+ const name = raw . slice ( 0 , idx ) . trim ( ) ;
63+ const value = raw . slice ( idx + 1 ) . trim ( ) ;
64+ if ( name ) headers [ name ] = value ;
65+ }
66+ i ++ ;
67+ }
68+ }
69+ }
70+ return headers ;
71+ }
72+
73+ const cliHeaders : Record < string , string > = parseHeadersFromArgv ( process . argv ) ;
74+
75+ // Parse CLI url: --url value or --url=value
76+ function parseUrlFromArgv ( argv : string [ ] ) : string | undefined {
77+ for ( let i = 0 ; i < argv . length ; i ++ ) {
78+ const arg = argv [ i ] ;
79+ if ( arg === '--url' ) {
80+ const value = argv [ i + 1 ] ;
81+ if ( value ) return value ;
82+ } else if ( arg . startsWith ( '--url=' ) ) {
83+ return arg . slice ( '--url=' . length ) ;
84+ }
85+ }
86+ return undefined ;
87+ }
88+
5289// Create readline interface for user input
5390const readline = createInterface ( {
5491 input : process . stdin ,
@@ -79,6 +116,12 @@ async function main(): Promise<void> {
79116 console . log ( 'MCP Interactive Client' ) ;
80117 console . log ( '=====================' ) ;
81118
119+ // Override server URL from CLI if provided
120+ const cliUrl = parseUrlFromArgv ( process . argv ) ;
121+ if ( cliUrl ) {
122+ serverUrl = cliUrl ;
123+ }
124+
82125 // Connect to server immediately with default settings
83126 await connect ( ) ;
84127
@@ -700,7 +743,14 @@ async function connect(url?: string): Promise<void> {
700743 new URL ( serverUrl ) ,
701744 {
702745 sessionId : sessionId ,
703- authProvider : oauthProvider
746+ authProvider : oauthProvider ,
747+ requestInit : {
748+ headers : {
749+ 'Content-Type' : 'application/json' ,
750+ 'Accept' : 'application/json, text/event-stream' ,
751+ ...cliHeaders ,
752+ }
753+ }
704754 }
705755 ) ;
706756 }
@@ -727,7 +777,14 @@ async function connect(url?: string): Promise<void> {
727777 new URL ( serverUrl ) ,
728778 {
729779 sessionId : sessionId ,
730- authProvider : oauthProvider
780+ authProvider : oauthProvider ,
781+ requestInit : {
782+ headers : {
783+ 'Content-Type' : 'application/json' ,
784+ 'Accept' : 'application/json, text/event-stream' ,
785+ ...cliHeaders ,
786+ }
787+ }
731788 }
732789 ) ;
733790 await client . connect ( transport ) ;
@@ -920,7 +977,7 @@ async function cleanup(): Promise<void> {
920977
921978async function callPaymentConfirmTool ( ) : Promise < void > {
922979 console . log ( 'Calling payment-confirm tool...' ) ;
923- await callTool ( 'payment-confirm' , { cartId : "cart_123" } ) ;
980+ await callTool ( 'payment-confirm' , { cartId : "cart_123" } ) ;
924981}
925982
926983async function callThirdPartyAuthTool ( ) : Promise < void > {
0 commit comments