LibreChat/client/src/data-provider/MCP/queries.ts

45 lines
1.4 KiB
TypeScript
Raw Normal View History

import { useQuery, UseQueryOptions, QueryObserverResult } from '@tanstack/react-query';
import { QueryKeys, dataService } from 'librechat-data-provider';
import type * as t from 'librechat-data-provider';
/**
* Hook for fetching all accessible MCP servers with permission metadata
*/
export const useMCPServersQuery = <TData = t.MCPServersListResponse>(
config?: UseQueryOptions<t.MCPServersListResponse, unknown, TData>,
): QueryObserverResult<TData> => {
return useQuery<t.MCPServersListResponse, unknown, TData>(
[QueryKeys.mcpServers],
() => dataService.getMCPServers(),
{
staleTime: 1000 * 60 * 5, // 5 minutes - data stays fresh longer
refetchOnWindowFocus: false,
refetchOnReconnect: false,
refetchOnMount: false,
retry: false,
...config,
},
);
};
/**
* Hook for fetching MCP-specific tools
* @param config - React Query configuration
* @returns MCP servers with their tools
*/
export const useMCPToolsQuery = <TData = t.MCPServersResponse>(
config?: UseQueryOptions<t.MCPServersResponse, unknown, TData>,
): QueryObserverResult<TData> => {
return useQuery<t.MCPServersResponse, unknown, TData>(
[QueryKeys.mcpTools],
() => dataService.getMCPTools(),
{
refetchOnWindowFocus: false,
refetchOnReconnect: false,
refetchOnMount: false,
staleTime: 5 * 60 * 1000, // 5 minutes
...config,
},
);
};