Skip to main content
Glama

Karakeep MCP server

by karakeep-app
action-button.tsx1.68 kB
import React from "react"; import { useClientConfig } from "@/lib/clientConfig"; import type { ButtonProps } from "./button"; import { Button } from "./button"; import LoadingSpinner from "./spinner"; import { Tooltip, TooltipContent, TooltipPortal, TooltipTrigger, } from "./tooltip"; interface ActionButtonProps extends ButtonProps { loading: boolean; spinner?: React.ReactNode; ignoreDemoMode?: boolean; } const ActionButton = React.forwardRef<HTMLButtonElement, ActionButtonProps>( ( { children, loading, spinner, disabled, ignoreDemoMode = false, ...props }, ref, ) => { const clientConfig = useClientConfig(); spinner ||= <LoadingSpinner />; if (!ignoreDemoMode && clientConfig.demoMode) { disabled = true; } else if (disabled !== undefined) { disabled ||= loading; } else if (loading) { disabled = true; } return ( <Button ref={ref} {...props} disabled={disabled}> {loading ? spinner : children} </Button> ); }, ); ActionButton.displayName = "ActionButton"; const ActionButtonWithTooltip = React.forwardRef< HTMLButtonElement, ActionButtonProps & { tooltip: string; delayDuration?: number } >(({ tooltip, delayDuration, ...props }, ref) => { return ( <Tooltip delayDuration={delayDuration}> <TooltipTrigger asChild> <ActionButton ref={ref} {...props} /> </TooltipTrigger> <TooltipPortal> <TooltipContent>{tooltip}</TooltipContent> </TooltipPortal> </Tooltip> ); }); ActionButtonWithTooltip.displayName = "ActionButtonWithTooltip"; export { ActionButton, ActionButtonWithTooltip }; export type { ActionButtonProps };

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/karakeep-app/karakeep'

If you have feedback or need assistance with the MCP directory API, please join our Discord server