We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/get-convex/convex-backend'
If you have feedback or need assistance with the MCP directory API, please join our Discord server
import { type ClassValue, clsx } from "clsx";
import { ForwardRefRenderFunction, PropsWithoutRef, forwardRef } from "react";
import { twMerge } from "tailwind-merge";
export function cn(...inputs: ClassValue[]) {
return twMerge(clsx(inputs));
}
// forward refs
export function fr<T = HTMLElement, P = React.HTMLAttributes<T>>(
component: ForwardRefRenderFunction<T, PropsWithoutRef<P>>,
) {
const wrapped = forwardRef(component);
wrapped.displayName = component.name;
return wrapped;
}
// styled element
export function se<
T = HTMLElement,
P extends React.HTMLAttributes<T> = React.HTMLAttributes<T>,
>(Tag: keyof React.ReactHTML, ...classNames: ClassValue[]) {
const component = fr<T, P>(({ className, ...props }, ref) => (
// @ts-expect-error Too complicated for TypeScript
<Tag ref={ref} className={cn(...classNames, className)} {...props} />
));
component.displayName = Tag[0].toUpperCase() + Tag.slice(1);
return component;
}