diff --git a/src/client/index.ts b/src/client/index.ts index bcad952c..feaf8918 100644 --- a/src/client/index.ts +++ b/src/client/index.ts @@ -407,9 +407,10 @@ export class Client< | typeof CallToolResultSchema | typeof CompatibilityCallToolResultSchema = CallToolResultSchema, options?: RequestOptions, + headers?: Record ) { return this.request( - { method: "tools/call", params }, + { method: "tools/call", params, headers }, resultSchema, options, ); diff --git a/src/server/mcp.ts b/src/server/mcp.ts index 8f4a909c..1e85e6e0 100644 --- a/src/server/mcp.ts +++ b/src/server/mcp.ts @@ -143,7 +143,7 @@ export class McpServer { const args = parseResult.data; const cb = tool.callback as ToolCallback; try { - return await Promise.resolve(cb(args, extra)); + return await Promise.resolve(cb(args, extra, request.headers)); } catch (error) { return { content: [ @@ -158,7 +158,7 @@ export class McpServer { } else { const cb = tool.callback as ToolCallback; try { - return await Promise.resolve(cb(extra)); + return await Promise.resolve(cb(extra, request.headers)); } catch (error) { return { content: [ @@ -695,8 +695,9 @@ export type ToolCallback = ? ( args: z.objectOutputType, extra: RequestHandlerExtra, + headers: Record | undefined ) => CallToolResult | Promise - : (extra: RequestHandlerExtra) => CallToolResult | Promise; + : (extra: RequestHandlerExtra, headers: Record | undefined) => CallToolResult | Promise; type RegisteredTool = { description?: string; diff --git a/src/types.ts b/src/types.ts index d051d8f7..06efb234 100644 --- a/src/types.ts +++ b/src/types.ts @@ -36,6 +36,7 @@ const BaseRequestParamsSchema = z export const RequestSchema = z.object({ method: z.string(), + headers: z.optional(z.record(z.union([z.string(), z.number(), z.boolean()]))), params: z.optional(BaseRequestParamsSchema), });