Przejdź do głównej zawartości

Serwer MCP shadcn/ui

Serwer MCP shadcn to serwer stdio wbudowany w CLI shadcn (npx shadcn@latest mcp). Daje Claude Code, Codeksowi i Cursorowi siedem narzędzi do wyszukiwania i podglądu komponentów oraz generowania poleceń instalacji z rejestru shadcn i z każdego prywatnego rejestru wpisanego w components.json. Serwer tylko czyta; pliki nadal zapisuje polecenie shadcn add.

Prosisz agenta o okno potwierdzenia usunięcia. Dostajesz 80 linii ręcznie pisanego modala z własną pułapką fokusu, choć components/ui/alert-dialog.tsx jest o jedno shadcn add stąd albo już leży w repozytorium. Z dostępem do rejestru agent sprawdza, co istnieje, instaluje prawdziwy komponent i go składa, więc UI zostaje przy jednym design systemie.

Ta strona jest dla programistów, którzy budują interfejsy React z shadcn/ui i agentem, oraz dla tech leadów, którzy odpowiadają za components.json i firmowy rejestr.

  • Serwer zainstalowany w Claude Code, Codeksie i Cursorze przez shadcn mcp init oraz ręczny wpis dla Codeksa, którego CLI za ciebie nie zapisze.
  • Decyzję: serwer MCP, skill shadcn czy oba.
  • Trzy prompty do skopiowania: znajdź i zainstaluj komponenty, zbuduj z nich funkcję, pobierz je z prywatnego rejestru.
  • Bramkę weryfikacji (dry run, sprawdzenie typów, linter, testy i zrzut ekranu), która dowodzi poprawności bez czytania wygenerowanych komponentów.
  • Pułapki powtarzane przez starsze poradniki i pamięć modeli, sprawdzone na shadcn 4.21.0.

shadcn udostępnia dwie integracje dla agentów i pokrywają się one bardziej, niż sugerują nazwy. Skill shadcn (z repozytorium shadcn-ui/ui) uczy agenta obsługi samego CLI: zaczyna od npx shadcn@latest info --json, czyta dokumentację komponentów przez npx shadcn@latest docs <component> i sprawdza istniejące komponenty, zanim napisze własne UI. Serwer MCP wystawia rejestr jako ustrukturyzowane narzędzia, które agent wywołuje bezpośrednio.

PotrzebaWybierzDlaczego
Dodawanie, poprawianie i stylowanie komponentów w jednym projekcieskillDo momentu uruchomienia kosztuje około 100 tokenów opisu i najpierw czyta konfigurację projektu
Wyszukiwanie w kilku rejestrach z przestrzeniami nazw (@shadcn, @acme)serwer MCPWyszukiwanie rozmyte i podgląd elementów we wszystkich rejestrach z components.json
Wdrożenie zespołowe, w którym każdy klient ma działać tak samoobaSkill daje metodę pracy, serwer daje wyszukiwanie w rejestrze
Migracja projektu z Radix UI na Base UIskill migrate-radix-to-baseJest w tym samym repozytorium i migruje pojedynczy komponent albo cały projekt

Skill zainstalujesz przez CLI skills (lista sprawdzona we wrześniu 2026 na skills 1.7.0; repozytorium zawiera shadcn i migrate-radix-to-base):

Okno terminala
# Terminal, katalog główny projektu. --skill ogranicza instalację do jednego skilla.
npx skills add shadcn/ui --skill shadcn

Skill shadcn/improve to coś innego o podobnej nazwie: przepływ audytu i planowania zmian w kodzie, opisany na osobnej stronie. O instalowaniu, aktualizowaniu i zakresach skilli ogólnie przeczytasz w przewodniku Instalowanie i zarządzanie skillami.

Zainstaluj serwer MCP shadcn w Claude Code, Codeksie i Cursorze

Dział zatytułowany „Zainstaluj serwer MCP shadcn w Claude Code, Codeksie i Cursorze”

Wpis serwera jest w każdym kliencie taki sam: npx shadcn@latest mcp. Różni się tylko to, kto zapisuje plik konfiguracji. Polecenie mcp init --client przyjmuje claude, cursor, vscode, codex i opencode (sprawdzone w shadcn mcp init --help, 4.21.0).

  1. Zainicjuj shadcn/ui w projekcie, jeśli nie ma jeszcze components.json. Narzędzia rejestru czytają z tego pliku listę rejestrów.

    Okno terminala
    npx shadcn@latest init
  2. Zarejestruj serwer w swoim kliencie.

    Okno terminala
    # Zapisuje wpis "shadcn" w .mcp.json w katalogu głównym projektu
    npx shadcn@latest mcp init --client claude

    Albo zarejestruj go własnym poleceniem Claude Code, współdzielonym z zespołem przez .mcp.json:

    Okno terminala
    claude mcp add --scope project shadcn -- npx shadcn@latest mcp

    Uruchom /mcp w sesji, żeby potwierdzić połączenie, i zatwierdź serwer projektu, gdy Claude Code o to zapyta.

  3. Sprawdź efekt uboczny. W teście z września 2026 na shadcn 4.21.0 mcp init dodał też shadcn do devDependencies i utworzył plik blokady zależności, gdy go nie było. Zacommituj tę zmianę świadomie albo ją cofnij.

Przy każdym starcie serwera npx pobiera wersję wskazaną przez tag @latest. Żeby cały zespół pracował na jednej wersji, przypnij ją w argumentach ("shadcn@4.21.0") i podbijaj w zwykłym pull requeście.

Listę narzędzi odczytano z odpowiedzi tools/list serwera (shadcn 4.21.0, wrzesień 2026). Starsze poradniki wymieniają sześć i pomijają get_project_registries.

NarzędzieCo zwraca
get_project_registriesNazwy rejestrów skonfigurowanych w components.json; gdy pliku brak, pusta lista (bez błędu), wbrew opisowi narzędzia
list_items_in_registriesElementy z jednego lub kilku rejestrów, z filtrem po typie
search_items_in_registriesWyszukiwanie rozmyte po nazwach i opisach elementów
view_items_in_registriesNazwę, opis, typ i zawartość plików elementu
get_item_examples_from_registriesKod przykładów, np. accordion-demo, z zależnościami
get_add_command_for_itemsDokładne polecenie shadcn add dla wybranych elementów
get_audit_checklistStałą, sześciopunktową listę: importy, remotePatterns dla next/image, zależności, linter, TypeScript i „użyj Playwright MCP, jeśli jest dostępny”

Lista audytowa to statyczny tekst, a nie skaner. Przypomina agentowi, co sprawdzić; nie zagląda do twoich plików.

W praktyce sprawdza się kolejność: wyszukaj, obejrzyj przykłady, zrób podgląd instalacji, zainstaluj, a potem złóż i zweryfikuj. Poniższe prompty kodują tę kolejność, żeby agent nie pominął podglądu.

Agent powinien wywołać search_items_in_registries, potem get_item_examples_from_registries i get_add_command_for_items, a na koniec wypisać listę plików z --dry-run i się zatrzymać. Jeśli pisze komponent bez tych wywołań, zignorował serwer.

Ostatnia linia ma znaczenie: dzięki niej lista audytowa staje się poleceniami z kodami wyjścia, a nie listą odhaczaną przez agenta z pamięci.

Tech lead może opublikować wewnętrzne komponenty jako rejestr z przestrzenią nazw i podpiąć go do każdego projektu. Dodaj go przez CLI albo bezpośrednio w components.json:

Okno terminala
npx shadcn@latest registry add @acme=https://registry.acme.dev/r/{name}.json
{
"registries": {
"@acme": {
"url": "https://registry.acme.dev/r/{name}.json",
"headers": { "Authorization": "Bearer ${ACME_REGISTRY_TOKEN}" }
}
}
}

URL musi zawierać symbol zastępczy {name}, a CLI odczytuje ${ACME_REGISTRY_TOKEN} ze zmiennych środowiskowych, więc token nigdy nie trafia do pliku. Zamień @acme i adres na swój rejestr.

Jak udowodnić, że komponenty działają, bez czytania każdej linii

Dział zatytułowany „Jak udowodnić, że komponenty działają, bez czytania każdej linii”

Komponent z rejestru to kod dołączony do repozytorium: shadcn add kopiuje go do projektu i od tej chwili to ty go testujesz. Poniższa bramka pozwala recenzentowi przyjąć zmianę na podstawie dowodów.

  1. Podgląd przed zapisem. npx shadcn@latest add alert-dialog --dry-run pokazuje, co się zmieni; --diff pokazuje, czym lokalny plik różni się od wersji z rejestru. Nieoczekiwane nadpisanie dostosowanego komponentu zatrzymasz tutaj.
  2. Kontrole maszynowe. Sprawdzenie typów, linter i testy jednostkowe muszą przejść w CI, nie tylko w podsumowaniu agenta.
  3. Kontrola zachowania. Test Playwright albo weryfikacja w przeglądarce prowadzona przez agenta otwiera stronę, wywołuje okno i robi zrzut ekranu. Lista zwracana przez serwer prosi o ten sam krok.
  4. Kontrola zakresu. git diff --stat powinien pokazać nowe pliki w components/ui/ i plik z nową funkcjonalnością, nic więcej. Zmiany w globals.css, tailwind.config.* lub components.json wymagają w pull requeście nazwanego powodu.

Recenzent czyta plik z nową funkcjonalnością i dowody, a nie skopiowane do repozytorium komponenty bazowe. Tech lead odpowiedzialny za components.json zatwierdza nowe rejestry i podbicia przypiętej wersji CLI.

Siedem definicji narzędzi zajęło w tools/list około 4,7 KB schematu JSON (shadcn 4.21.0, wrzesień 2026), czyli mniej więcej 1200 tokenów przy czterech znakach na token. To niewiele w porównaniu z dużymi serwerami dostawców, ale płaci się to w każdej sesji. view_items_in_registries zwraca pełną zawartość plików, więc podgląd pięciu komponentów naraz może kosztować znacznie więcej niż schemat. Proś o przykłady jednego komponentu naraz, a filtrowanie narzędzi opisuje strona Jak ograniczyć koszt tokenów MCP. W Claude Code uruchom /context przed włączeniem serwera i po nim, żeby zobaczyć koszt we własnej sesji.

Repozytorium shadcn-ui/ui, w którym są CLI, serwer MCP i skille, miało 124,6 tys. gwiazdek na GitHubie 2026-09-26 (odczyt z GitHuba w dossier ekosystemu z września 2026). Gwiazdki mierzą cały projekt, a nie użycie serwera MCP; liczby instalacji samego serwera nie udało się ustalić.

Które instrukcje dla serwera MCP shadcn są błędne lub nieaktualne?

Dział zatytułowany „Które instrukcje dla serwera MCP shadcn są błędne lub nieaktualne?”

Narzędzia kończą się błędem pobierania rejestru. Dla rejestru @shadcn serwer pobiera dane z ui.shadcn.com, a proxy lub zapora, która go blokuje, psuje każde wyszukiwanie. Sprawdź w tej samej powłoce npx shadcn@latest search @shadcn -q dialog; jeśli to też zawodzi, odblokuj host albo ustaw proxy dla klienta. Więcej w problemach z połączeniem MCP.

get_project_registries nie wymienia żadnych rejestrów. W katalogu, w którym wystartował serwer, nie ma components.json. Narzędzie kończy się sukcesem z pustą listą; wyszukiwanie w @shadcn nadal działa, ale każda inna przestrzeń nazw, np. @acme, kończy się błędem Unknown registry. Uruchom npx shadcn@latest init albo startuj klienta z katalogu głównego projektu, żeby serwer miał właściwy katalog roboczy.

„Unknown registry @acme”. Przestrzeni nazw nie ma w sekcji registries pliku components.json. Dodaj ją przez shadcn registry add i uruchom klienta ponownie, żeby serwer wczytał plik od nowa.

Prywatny rejestr zwraca 401. Zmienna z tokenem nie jest ustawiona w środowisku, które dziedziczy serwer MCP. Wyeksportuj ją przed startem klienta albo przekaż przez ustawienie env serwera MCP w kliencie; nie wklejaj tokenu do components.json.

Agent nadpisał dostosowany komponent. Uruchomił add z --overwrite albo zatwierdził pytanie. Przywróć plik z gita i zostaw linię „najpierw dry run, czekaj na moją zgodę” w promptach albo w CLAUDE.md / AGENTS.md.

Agent nadal pisze własne UI. Serwer jest podłączony, ale agent go nie wywołuje. Nazwij serwer w prompcie („use the shadcn MCP server”) albo zainstaluj skill shadcn, którego instrukcje każą agentowi szukać istniejących komponentów przed pisaniem nowych.