Use it from your agent
Connect the library as an MCP server and your agent searches and builds designs without the browser.
Connecting the library as an MCP server puts it inside your agent. Instead of browsing here, copying a prompt and pasting it, you ask for a paywall screen and your agent searches the library, shows you what matched, and builds the one you pick. Same designs, same prompts, no browser.
Connect it
The endpoint is http://localhost:3000/api/mcp. It speaks Streamable HTTP, so any current MCP client can reach it directly with no local proxy to install. Searching needs nothing; pulling a design needs a key, which you create on your account page.
Claude Code
claude mcp add --transport http clevens http://localhost:3000/api/mcp \
--header "Authorization: Bearer mdc_your_key"Cursor
Add it to ~/.cursor/mcp.json for every project, or .cursor/mcp.json for one:
{
"mcpServers": {
"clevens": {
"url": "http://localhost:3000/api/mcp",
"headers": { "Authorization": "Bearer mdc_your_key" }
}
}
}VS Code
Add it to .vscode/mcp.json in the workspace:
{
"servers": {
"clevens": {
"type": "http",
"url": "http://localhost:3000/api/mcp",
"headers": { "Authorization": "Bearer mdc_your_key" }
}
}
}Anything else
A client that only speaks stdio can bridge to it with mcp-remote, which needs no install of its own:
npx -y mcp-remote http://localhost:3000/api/mcp --header "Authorization: Bearer mdc_your_key"Get a key
Create one on your account page. It is shown once, so paste it into your config straight away. Keys do not expire, five per account, and revoking one stops it working immediately. If a key leaks, revoke it and make another; there is nothing else attached to it.
What your agent gets
| Tool | What it does |
|---|---|
| search_designs | Finds designs by text, category, type or Expo Go safety. Returns metadata, not code. |
| list_categories | Every category the library covers, with how many designs are published in each. |
| get_design | Pulls one design: full source for every file, dependencies, fonts, wiring. |
| get_designs | Pulls several as one grouped prompt, so setup happens once instead of once per design. |
Ask for several at once. get_designs exists because three separate prompts make an agent scaffold the app three times and install dependencies three times, and an agent handed three similar screens starts merging them into shared components, which is the one thing these designs must never do.
What it will not do
- It will not re-theme. The handshake tells your agent, before it sees a single design, that colors, type, spacing and motion ship exactly as written. If you want a design in your palette, ask for that as a separate step once it is in and running.
- It will not invent a design. If nothing matches, the search says so rather than returning a near miss.
- It will not write to your account. Every tool is a read; the only state it touches is your copy count.
When something is wrong
| What you see | What it means |
|---|---|
| "This design needs an API key" | The server is reachable but your header is missing or wrong. Check the Authorization header in your config. |
| "Daily limit reached" | The free allowance is used up for today. Search still works; the limit resets at midnight UTC. |
| The tools never appear | The client did not finish the handshake. Restart it, and confirm the URL ends in /api/mcp. |
| A 405 on GET | Expected. The server answers on POST only and never pushes messages, which some clients probe for first. |