list-blocks
Discover all available Shadcn UI blocks in the MCP server. Use this tool to view and manage components through natural language interactions in compatible AI platforms.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Implementation Reference
- src/handlers.ts:77-85 (handler)The main handler function for the 'list-blocks' tool. It fetches the list of blocks using fetchAndCacheBlocks and returns their names as JSON.export const listBlocks = async () => { try { const blocks = await fetchAndCacheBlocks(); const blockNames = blocks.map(block => block.name); return createResponse(JSON.stringify(blockNames, null, 2)); } catch (error) { return handleError(error, "Error fetching blocks"); } }
- src/index.ts:76-82 (registration)The loop that registers all tools, including 'list-blocks', by calling server.tool with name, schema, and handler.for (const [name, definition] of Object.entries(toolDefinitions)) { server.tool( name, definition.toolSchema, definition.handler ); }
- src/index.ts:38-42 (registration)The tool definition object for 'list-blocks' within toolDefinitions, including description, parameters, schema, and handler reference."list-blocks": { description: "Get the list of available shadcn/ui blocks", parameters: {}, toolSchema: {}, handler: listBlocks
- src/index.ts:40-41 (schema)Empty input parameters and toolSchema for 'list-blocks' tool.parameters: {}, toolSchema: {},
- src/helpers.ts:220-243 (helper)Core helper function that fetches block data from shadcn/ui block pages, parses them, transforms to ComponentDocResource, and caches them.export async function fetchAndCacheBlocks(): Promise<ComponentDocResource[]> { const transformBlocks = (blockPages: Block[][]): ComponentDocResource[] => { const allBlocks = blockPages.flat(); return allBlocks.map((block: Block) => ({ name: block.name, description: block.description, doc: block.doc, commands: [{ npm: block.command, pnpm: getCliCommand(block.command, 'pnpm'), yarn: getCliCommand(block.command, 'yarn'), bun: getCliCommand(block.command, 'bun') }], isBlock: true })); }; return fetchAndCache( 'blocks', async () => Promise.all(BLOCK_PAGES.map(parseBlocksFromPage)), transformBlocks ); }