MCPcopy Create free account
hub / github.com/simstudioai/sim / useMcpTools

Function useMcpTools

apps/sim/hooks/mcp/use-mcp-tools.ts:39–84  ·  view source on GitHub ↗
(workspaceId: string)

Source from the content-addressed store, hash-verified

37}
38
39export function useMcpTools(workspaceId: string): UseMcpToolsResult {
40 const queryClient = useQueryClient()
41
42 const { data: mcpToolsData, isLoading, error: queryError } = useMcpToolsQuery(workspaceId)
43
44 const mcpTools = useMemo<McpToolForUI[]>(() => {
45 return mcpToolsData.map((tool) => ({
46 id: createMcpToolId(tool.serverId, tool.name),
47 name: tool.name,
48 description: tool.description,
49 serverId: tool.serverId,
50 serverName: tool.serverName,
51 type: 'mcp' as const,
52 inputSchema: tool.inputSchema,
53 bgColor: '#6366F1',
54 icon: McpIcon,
55 }))
56 }, [mcpToolsData])
57
58 // Soft refresh — invalidate per-server entries. For cache-bypass, use `useForceRefreshMcpTools`.
59 const refreshTools = useCallback(async () => {
60 if (!workspaceId) {
61 logger.warn('Cannot refresh tools: no workspaceId provided')
62 return
63 }
64
65 await queryClient.invalidateQueries({
66 queryKey: mcpKeys.serverToolsWorkspace(workspaceId),
67 })
68 }, [workspaceId, queryClient])
69
70 const getToolsByServer = useCallback(
71 (serverId: string): McpToolForUI[] => {
72 return mcpTools.filter((tool) => tool.serverId === serverId)
73 },
74 [mcpTools]
75 )
76
77 return {
78 mcpTools,
79 isLoading,
80 error: queryError instanceof Error ? queryError.message : null,
81 refreshTools,
82 getToolsByServer,
83 }
84}

Callers 3

McpDynamicArgsFunction · 0.90
tool-input.tsxFile · 0.90
McpToolSelectorFunction · 0.90

Calls 3

useMcpToolsQueryFunction · 0.90
createMcpToolIdFunction · 0.90
warnMethod · 0.65

Tested by

no test coverage detected