Search 12,000+ shadcn/ui blocks from 130+ registries, free and paid, with install commands.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Get one block's details by its id from search_blocks: what it is, its install command, the npm packages and registry items it depends on, the files it adds, and its registry's notes on using it. Set include_source to also get its source code, for when the user wants to read or adapt the code rather than install it.
The block's id from search_blocks, as registry/name, such as efferd/hero-1. Its page's address works too.
Also give the source of its files. It can be long, and installing the block adds the files anyway.
Get one block's details by its id from search_blocks: what it is, its install command, the npm packages and registry items it depends on, the files it adds, and its registry's notes on using it. Set include_source to also get its source code, for when the user wants to read or adapt the code rather than install it.
| Argument | Type | Description |
|---|---|---|
| id* | string | The block's id from search_blocks, as registry/name, such as efferd/hero-1. Its page's address works too. |
| include_source | boolean | Also give the source of its files. It can be long, and installing the block adds the files anyway. |
{
"type": "object",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"maxLength": 300,
"minLength": 3,
"description": "The block's id from search_blocks, as registry/name, such as efferd/hero-1. Its page's address works too."
},
"include_source": {
"type": "boolean",
"default": false,
"description": "Also give the source of its files. It can be long, and installing the block adds the files anyway."
}
}
}List the kinds of section the blocks are sorted into, such as hero, pricing, login, dashboard and footer, with how many blocks each has. Pass one to search_blocks as its category.
No arguments.
{
"type": "object",
"properties": {}
}List the public shadcn/ui registries whose blocks shadcn.exchange lists, the most blocks first, with how many of each are free and paid, what each one is, and its page. Pass a registry's id to search_blocks to search only its blocks.
| Argument | Type | Description |
|---|---|---|
| query | string | Only registries with this in their id, name or description, such as dashboard or animated. |
{
"type": "object",
"properties": {
"query": {
"type": "string",
"maxLength": 80,
"description": "Only registries with this in their id, name or description, such as dashboard or animated."
}
}
}Search the shadcn/ui blocks listed on shadcn.exchange: ready-made sections of a page, such as heroes, pricing tables, login forms, dashboards, footers and FAQs, from every public shadcn registry, free and paid. Use it when the user is building a page or a screen with shadcn/ui and wants a section to start from, or asks what blocks exist for something. Results come best first. Each has its id (for get_block), its description, its install command if it is free or where to buy it if it is paid, and its page with a live preview. Every word of the query has to be in a block's name, title, description or registry, so use one or two words, and the category for the kind of section.
| Argument | Type | Description |
|---|---|---|
| limit | integer | How many results to return, up to 50. |
| price | string | free: blocks that install now with one command. paid: blocks their registries sell. any: both. |
| query | string | One or two words to find, such as "pricing", "sign in", "testimonials" or "bento". Leave it out to list a category or a registry. |
| offset | integer | How many results to skip, for the next page. |
| category | string | The kind of section, from list_categories, such as hero, pricing, login, dashboard or footer. |
| registry | string | Only this registry's blocks: its id from list_registries, such as efferd or shadcnblocks. |
{
"type": "object",
"properties": {
"limit": {
"type": "integer",
"default": 10,
"maximum": 50,
"minimum": 1,
"description": "How many results to return, up to 50."
},
"price": {
"enum": [
"any",
"free",
"paid"
],
"type": "string",
"default": "any",
"description": "free: blocks that install now with one command. paid: blocks their registries sell. any: both."
},
"query": {
"type": "string",
"maxLength": 80,
"description": "One or two words to find, such as \"pricing\", \"sign in\", \"testimonials\" or \"bento\". Leave it out to list a category or a registry."
},
"offset": {
"type": "integer",
"default": 0,
"maximum": 10000,
"minimum": 0,
"description": "How many results to skip, for the next page."
},
"category": {
"enum": [
"hero",
"pricing",
"dashboard",
"login",
"navbar",
"sidebar",
"features",
"footer",
"cta",
"testimonials",
"faq",
"charts",
"tables",
"contact",
"blog",
"stats",
"team",
"logo-cloud",
"gallery",
"bento",
"ecommerce",
"chat",
"file-upload",
"404-page",
"onboarding",
"settings",
"newsletter",
"about",
"careers",
"changelog",
"integrations",
"banner",
"timeline",
"empty-state",
"cookie-consent",
"kanban",
"portfolio",
"coming-soon"
],
"type": "string",
"description": "The kind of section, from list_categories, such as hero, pricing, login, dashboard or footer."
},
"registry": {
"type": "string",
"maxLength": 64,
"description": "Only this registry's blocks: its id from list_registries, such as efferd or shadcnblocks."
}
}
}