@@ -42,8 +42,10 @@ type Args = {
4242 logLevel ?: LogLevel ;
4343 toolName ?: string ;
4444 toolArg ?: Record < string , JsonValue > ;
45+ toolMeta ? : Record < string , string > ;
4546 transport ?: "sse" | "stdio" | "http" ;
4647 headers ?: Record < string , string > ;
48+ metaData ? : Record < string , string > ;
4749} ;
4850
4951function createTransportOptions (
@@ -121,41 +123,52 @@ async function callMethod(args: Args): Promise<void> {
121123
122124 // Tools methods
123125 if ( args . method === "tools/list" ) {
124- result = await listTools ( client ) ;
126+ result = await listTools ( client , args . metaData ) ;
125127 } else if ( args . method === "tools/call" ) {
126128 if ( ! args . toolName ) {
127129 throw new Error (
128130 "Tool name is required for tools/call method. Use --tool-name to specify the tool name." ,
129131 ) ;
130132 }
131133
132- result = await callTool ( client , args . toolName , args . toolArg || { } ) ;
134+ result = await callTool (
135+ client ,
136+ args . toolName ,
137+ args . toolArg || { } ,
138+ args . metaData ,
139+ args . toolMeta ,
140+ ) ;
133141 }
134142 // Resources methods
135143 else if ( args . method === "resources/list" ) {
136- result = await listResources ( client ) ;
144+ result = await listResources ( client , args . metaData ) ;
137145 } else if ( args . method === "resources/read" ) {
138146 if ( ! args . uri ) {
139147 throw new Error (
140148 "URI is required for resources/read method. Use --uri to specify the resource URI." ,
141149 ) ;
142150 }
143151
144- result = await readResource ( client , args . uri ) ;
152+ result = await readResource ( client , args . uri , args . metaData ) ;
145153 } else if ( args . method === "resources/templates/list" ) {
146- result = await listResourceTemplates ( client ) ;
154+ result = await listResourceTemplates ( client , args . metaData ) ;
147155 }
148156 // Prompts methods
149157 else if ( args . method === "prompts/list" ) {
150- result = await listPrompts ( client ) ;
158+ result = await listPrompts ( client , args . metaData ) ;
151159 } else if ( args . method === "prompts/get" ) {
152160 if ( ! args . promptName ) {
153161 throw new Error (
154162 "Prompt name is required for prompts/get method. Use --prompt-name to specify the prompt name." ,
155163 ) ;
156164 }
157165
158- result = await getPrompt ( client , args . promptName , args . promptArgs || { } ) ;
166+ result = await getPrompt (
167+ client ,
168+ args . promptName ,
169+ args . promptArgs || { } ,
170+ args . metaData ,
171+ ) ;
159172 }
160173 // Logging methods
161174 else if ( args . method === "logging/setLevel" ) {
@@ -327,6 +340,8 @@ function parseArgs(): Args {
327340
328341 const options = program . opts ( ) as Omit < Args , "target" > & {
329342 header ?: Record < string , string > ;
343+ meta?: Record < string , JsonValue > ;
344+ toolMeta ?: Record < string , JsonValue> ;
330345 } ;
331346
332347 let remainingArgs = program . args ;
@@ -344,6 +359,22 @@ function parseArgs(): Args {
344359 target : finalArgs ,
345360 ...options ,
346361 headers : options . header , // commander.js uses 'header' field, map to 'headers'
362+ metaData : options . meta
363+ ? Object . fromEntries (
364+ Object . entries ( options . meta ) . map ( ( [ key , value ] ) => [
365+ key ,
366+ String ( value ) ,
367+ ] ) ,
368+ )
369+ : undefined ,
370+ toolMeta : options . toolMeta
371+ ? Object . fromEntries (
372+ Object . entries ( options . toolMeta ) . map ( ( [ key , value ] ) => [
373+ key ,
374+ String ( value ) ,
375+ ] ) ,
376+ )
377+ : undefined ,
347378 } ;
348379}
349380
0 commit comments