install-blocks
Install Shadcn UI components and blocks directly using your preferred runtime (npm, pnpm, yarn, bun) with this tool from the Shadcn UI MCP Server.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| block | Yes | Name of the block to install | |
| runtime | No | User runtime (npm, pnpm, yarn, bun) |
Implementation Reference
- src/handlers.ts:122-144 (handler)The main execution logic for the 'install-blocks' tool: validates input, retrieves block data, selects installation command based on runtime or defaults to npm, and returns the command.export const installBlock = async ({block, runtime}: {block: string, runtime?: string}) => { try { if (runtime && !validateRuntime(runtime)) { return createResponse(`Invalid runtime: ${runtime}. Must be one of: npm, pnpm, yarn, bun`, true); } const { blockData, error } = await getBlockData(block); if (error) return createResponse(error, true); if (!blockData) return createResponse("Unexpected error: block data missing", true); if (!blockData.commands?.[0]) { return createResponse(`No installation command found for block '${block}'`, true); } const commands = blockData.commands[0]; const selectedRuntime = runtime as PackageManager | undefined; const command = selectedRuntime ? commands[selectedRuntime] : commands.npm; if (!command) { return createResponse(`No installation command found for runtime '${runtime}'`, true); } return createResponse(command); } catch (error) { return handleError(error, "Error generating installation command"); } }
- src/index.ts:60-63 (schema)Zod schema defining the input parameters for the 'install-blocks' tool: required 'block' string and optional 'runtime' string.toolSchema: { block: z.string().describe("Name of the block to install"), runtime: z.string().describe("User runtime (npm, pnpm, yarn, bun)").optional() },
- src/index.ts:54-65 (registration)Tool definition and registration entry in toolDefinitions object, used for MCP capabilities and server.tool registration. Includes description, JSON parameters schema, Zod toolSchema, and handler reference."install-blocks": { description: "Install a shadcn/ui block", parameters: { block: { type: "string", description: "Name of the block to install" }, runtime: { type: "string", description: "User runtime (npm, pnpm, yarn, bun)", optional: true } }, toolSchema: { block: z.string().describe("Name of the block to install"), runtime: z.string().describe("User runtime (npm, pnpm, yarn, bun)").optional() }, handler: installBlock },
- src/handlers.ts:87-100 (helper)Supporting helper function used by installBlock to retrieve or fetch block data from cache.async function getBlockData(block: string) { if (!block) { return { error: "Block name is required" }; } let blockData = resourceCache.get(block); if (!blockData) { await fetchAndCacheBlocks(); blockData = resourceCache.get(block); } if (!blockData) { return { error: `Block '${block}' not found. Use list-blocks to see available blocks.` }; } return { blockData }; }