Added general meta data section to add pairs for all requests

This commit is contained in:
lorenzo.neumann 2025-10-02 11:23:29 +02:00
commit 842aa3c8ca

View file

@ -79,6 +79,7 @@ interface UseConnectionOptions {
// eslint-disable-next-line @typescript-eslint/no-explicit-any
getRoots?: () => any[];
defaultLoggingLevel?: LoggingLevel;
metaData?: Record<string, string>;
}
export function useConnection({
@ -97,6 +98,7 @@ export function useConnection({
onElicitationRequest,
getRoots,
defaultLoggingLevel,
metaData = {},
}: UseConnectionOptions) {
const [connectionStatus, setConnectionStatus] =
useState<ConnectionStatus>("disconnected");
@ -153,6 +155,20 @@ export function useConnection({
try {
const abortController = new AbortController();
// Add metadata to the request if available, but skip for tool calls
// as they handle metadata merging separately
const shouldAddGeneralMeta =
request.method !== "tools/call" && Object.keys(metaData).length > 0;
const requestWithMeta = shouldAddGeneralMeta
? {
...request,
params: {
...request.params,
_meta: metaData,
},
}
: request;
// prepare MCP Client request options
const mcpRequestOptions: RequestOptions = {
signal: options?.signal ?? abortController.signal,
@ -181,13 +197,17 @@ export function useConnection({
let response;
try {
response = await mcpClient.request(request, schema, mcpRequestOptions);
response = await mcpClient.request(
requestWithMeta,
schema,
mcpRequestOptions,
);
pushHistory(request, response);
pushHistory(requestWithMeta, response);
} catch (error) {
const errorMessage =
error instanceof Error ? error.message : String(error);
pushHistory(request, { error: errorMessage });
pushHistory(requestWithMeta, { error: errorMessage });
throw error;
}