Skip to main content
Glama

generate_component

Create its-just-ui React components with custom props, children content, and Tailwind CSS classes for streamlined UI development.

Instructions

Generate an its-just-ui component with specified props and styling

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
childrenNoChildren content for the component
classNameNoAdditional Tailwind CSS classes
componentYesName of the its-just-ui component
propsNoProps to pass to the component

Implementation Reference

  • Core handler function that generates JSX code for the its-just-ui component using the registry, validates props, formats them, and handles children.
    export function generateComponent( componentName: string, props?: Record<string, any>, children?: string, className?: string, ): string { const component = componentRegistry.getComponent(componentName); if (!component) { throw new Error(`Component "${componentName}" not found in registry`); } const sanitizedProps = validateProps(props); const propsString = formatProps(sanitizedProps, className); const childrenContent = children || ""; if (childrenContent) { return `<${componentName}${propsString}>\n ${childrenContent}\n</${componentName}>`; } else { return `<${componentName}${propsString} />`; } }
  • Zod schema for validating input parameters to the generate_component tool: component (required), props, children, className.
    const GenerateComponentSchema = z.object({ component: z .string() .describe("Name of the its-just-ui component to generate"), props: z .record(z.any()) .optional() .describe("Props to pass to the component"), children: z .string() .optional() .describe("Children content for the component"), className: z.string().optional().describe("Additional Tailwind CSS classes"), });
  • src/index.ts:131-157 (registration)
    Tool registration in the ListTools response, defining name, description, and inputSchema for generate_component.
    { name: "generate_component", description: "Generate an its-just-ui component with specified props and styling", inputSchema: { type: "object", properties: { component: { type: "string", description: "Name of the its-just-ui component", }, props: { type: "object", description: "Props to pass to the component", }, children: { type: "string", description: "Children content for the component", }, className: { type: "string", description: "Additional Tailwind CSS classes", }, }, required: ["component"], }, },
  • MCP tool dispatch handler in CallToolRequest that parses args with schema and calls the generateComponent function.
    case "generate_component": { const { component, props, children, className } = GenerateComponentSchema.parse(args); const code = generateComponent(component, props, children, className); return { content: [ { type: "text", text: code, }, ], }; }
  • Helper function used by generateComponent to format props into JSX attribute strings, handling different value types.
    function formatProps(props?: Record<string, any>, className?: string): string { if (!props && !className) return ""; const allProps: Record<string, any> = { ...props }; if (className) { allProps.className = className; } const propsArray = Object.entries(allProps) .map(([key, value]) => { if (typeof value === "boolean") { return value ? key : ""; } else if (typeof value === "string") { return `${key}="${value}"`; } else if (typeof value === "number") { return `${key}={${value}}`; } else if (typeof value === "object") { return `${key}={${JSON.stringify(value)}}`; } else if (typeof value === "function") { return `${key}={${value.toString()}}`; } return ""; }) .filter(Boolean); return propsArray.length > 0 ? " " + propsArray.join(" ") : ""; }

Other Tools

Related Tools

Latest Blog Posts

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/its-just-ui/its-just-mcp'

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