1. Get a license key
With an active Pro subscription, open Account > MCP server. Create a key named after the machine ("Work laptop", "CI") or paste one you already use with the CLI. The page fills every snippet below with it. Keys are shown once; revoke and recreate them under License keys if lost.
Keys stop working the moment your subscription ends or you leave a team workspace. On Agency and Enterprise plans every member creates their own key from their own account; nobody shares one.
2. Add the server to your client
The endpoint is the same everywhere:
https://pro.shadcn.co/api/mcp
The key goes in an Authorization: Bearer <key> header. Clients that cannot set headers (ChatGPT, Claude Desktop connectors, Warp) take it in the URL instead: https://pro.shadcn.co/api/mcp?token=<key>. Prefer the header wherever possible; a URL can end up in logs.
Cursor
~/.cursor/mcp.json (all projects) or .cursor/mcp.json (one project):
{
"mcpServers": {
"shadcnpro": {
"url": "https://pro.shadcn.co/api/mcp",
"headers": { "Authorization": "Bearer YOUR_LICENSE_KEY" }
}
}
}
Claude Code
claude mcp add --transport http --scope user shadcnpro https://pro.shadcn.co/api/mcp \
--header "Authorization: Bearer YOUR_LICENSE_KEY"
VS Code
.vscode/mcp.json:
{
"servers": {
"shadcnpro": {
"type": "http",
"url": "https://pro.shadcn.co/api/mcp",
"headers": { "Authorization": "Bearer YOUR_LICENSE_KEY" }
}
}
}
Everything else
Codex, Windsurf, ChatGPT, Claude Desktop, Gemini CLI, Zed, JetBrains, Cline, Roo Code, Continue, OpenCode, Amp, Warp, Trae, Kiro, Copilot CLI and Antigravity each have a page with the exact config: all clients.
Clients that only run local (stdio) servers can bridge to the remote server with mcp-remote:
{
"mcpServers": {
"shadcnpro": {
"command": "npx",
"args": ["-y", "mcp-remote", "https://pro.shadcn.co/api/mcp", "--header", "Authorization:${AUTH_HEADER}"],
"env": { "AUTH_HEADER": "Bearer YOUR_LICENSE_KEY" }
}
}
}
3. Committing a config for a team
Never commit a key. Commit the variant of the config that reads it from an environment variable and let each developer set SHADCNPRO_LICENSE_KEY locally:
- Cursor:
"Authorization": "Bearer ${env:SHADCNPRO_LICENSE_KEY}" - Claude Code (
.mcp.json):"Authorization": "Bearer ${SHADCNPRO_LICENSE_KEY}" - VS Code: an
inputsentry of typepromptStringwithpassword: true - Codex (
config.toml):bearer_token_env_var = "SHADCNPRO_LICENSE_KEY" - OpenCode:
"Authorization": "Bearer {env:SHADCNPRO_LICENSE_KEY}"
Each client page shows its team variant.
4. Check the connection
Ask the agent: "Use shadcnpro to call whoami." The answer contains your email, plan and the requests left this minute. From a terminal:
curl -s https://pro.shadcn.co/api/mcp \
-H "Authorization: Bearer YOUR_LICENSE_KEY" \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"whoami","arguments":{}}}'
5. Set the project up for Pro blocks
Installing a Pro block still goes through the shadcn CLI, which needs the @shadcnpro registry and your key in the project. Ask the agent to run the setup-project prompt (or "use shadcnpro to set this project up"); it calls get_project_setup and applies the .env.local line and the components.json entry. The key is the same one the MCP server uses.
Prompting tips
- Name the server the first time: "use shadcnpro to ...". After that the agent picks the tools on its own.
- Describe what the section should do rather than guessing a block id: "a pricing table with a yearly toggle and a highlighted plan".
- For a whole page, say what it is for; the agent uses
plan_pageand shows you the stack before installing. - Some clients cap the number of tools loaded across servers. Turn off servers you are not using in that project.