A side-by-side look at the Shadcn Ui MCP Server and Macula mesh MCP servers: transport, auth, tools, quality signals, and the config to install either one in Claude, Cursor, Windsurf or VS Code.
Verdict: choose Shadcn Ui MCP Server for developer tools work as a local process; choose Macula mesh for developer tools as a local process. You can also run both side by side in one mcpServers block.
MCP_TRANSPORT_MODE, MCP_PORT, MCP_HOST, MCP_CORS_ORIGINS, GITHUB_PERSONAL_ACCESS_TOKEN, UI_LIBRARY.get_component, get_component_demo, list_components.mesh_call, mesh_put, mesh_get.Rows where the two servers differ are marked.
| Spec | M Macula mesh | |
|---|---|---|
| Category | Developer Tools | Developer Tools |
| Quality signal | 72/100 · Great | 51/100 · Good |
| Install command | Confirmed | Confirmed |
| Transport | Local subprocess (stdio) | Local subprocess (stdio) |
| Auth | API key required | Not declared |
| Pricing | Free | Free |
| Required env vars | MCP_TRANSPORT_MODEMCP_PORTMCP_HOSTMCP_CORS_ORIGINSGITHUB_PERSONAL_ACCESS_TOKENUI_LIBRARY | None listed |
| Verified owner | Community listing | Community listing |
| GitHub stars | 3,057 | 1 |
| Directory activity | 3 views 0 installs 0 upvotes | 0 views 0 installs 0 upvotes |
| Tools | 10 | 32 |
| Full listing | View Shadcn Ui MCP Server | View Macula mesh |
get_componentGet the source code for a specific shadcn/ui v4 componentget_component_demoGet demo code illustrating how a shadcn/ui v4 component should be usedlist_componentsGet all available shadcn/ui v4 componentsget_component_metadataGet metadata for a specific shadcn/ui v4 componentget_directory_structureGet the directory structure of the shadcn-ui v4 repositoryget_blockGet source code for a specific shadcn/ui v4 block (e.g., calendar-01, dashboard-01)list_blocksGet all available shadcn/ui v4 blocks with categorizationapply_themeApply a TweakCN theme preset to the projectlist_themesList available tweakcn themesget_themeGet details of a specific tweakcn thememesh_callInvoke a capability a provider advertises (build, test, search, deploy) over the mesh, by direct dial to a provider the realm's key authorizes. Returns the result + `duration_ms`; a provider's error or a station's relay error comes back with its code. `prove_ownership: 1` attaches an ownership proo…mesh_putShare bytes from this agent, served while it is present; answers their MCID. Anyone with the MCID can fetch them.mesh_getFetch an MCID from any node that shares it, every byte verified against the MCID.mesh_find_recordRead the mesh's signed DHT record store. Every record returned is verified (signature, signer, expiry) and `dropped` counts the ones that were not. `mesh_find_records_by_type` with `record_type: "procedure_advertisement"` is the discovery entry point: every capability on the mesh with its realm, pr…mesh_list_stations"Which stations can you connect to?" in one call: discovers which realm `mcl-stations/list_stations` (the mesh's canonical station directory) is advertised under, then calls it. Optional `near`/`continent`/`country`/`city` filters; human-readable fields (city, hostname, ...) decoded from the wire's…mesh_recallQuery the mesh's shared memory (`mcl-rag`) for anything relevant to `query_text`: semantic retrieval. Auto-discovers `mcl-rag`'s realm, same composition as `mesh_list_stations`. Empty results mean nothing relevant is there yet, not an error. See [Memory](#memory).mesh_rememberDeposit something worth remembering into `mcl-rag` so it's searchable via `mesh_recall` later, by any agent. One `add_knowledge` call; chunking and embedding happen on the `mcl-rag` side. Shared, not private. See [Memory](#memory).mesh_remember_directoryRecursively ingest every matching file under a local directory into `mcl-rag`, one call per file, for a real corpus rather than conversational snippets. `document_id` is derived from each file's relative path so re-running it updates instead of duplicating. See [Memory](#memory).mesh_open_roomOpen a room: an unguessable `agents.room.<32 hex>` topic, watched in the background for as long as you stay, with the `room_opened` envelope published on it. `public: 1` also announces it on central (`agents.lobby`) so anyone around can join. A direct message is a two-party room. See [Conversations…mesh_join_roomJoin a room whose topic you learned from central or out of band: starts watching it and publishes `participant_joined`. Idempotent.mesh_leave_roomPublish `participant_left` (or `room_closed` with `close: 1`) and stop watching the topic.mesh_roomsRooms you are in, with participants seen and message counts, plus public rooms announced on central you have not joined. Instant, local.Paste either block (or both) into your client config, e.g. claude_desktop_config.json or ~/.cursor/mcp.json. We only show a config when the install command is confirmed.
{
"mcpServers": {
"jpisnice-shadcn-ui-mcp-server": {
"command": "npx",
"args": [
"-y",
"@jpisnice/shadcn-ui-mcp-server"
],
"env": {
"MCP_TRANSPORT_MODE": "YOUR_MCP_TRANSPORT_MODE_HERE",
"MCP_PORT": "YOUR_MCP_PORT_HERE",
"MCP_HOST": "YOUR_MCP_HOST_HERE",
"MCP_CORS_ORIGINS": "YOUR_MCP_CORS_ORIGINS_HERE",
"GITHUB_PERSONAL_ACCESS_TOKEN": "YOUR_GITHUB_PERSONAL_ACCESS_TOKEN_HERE",
"UI_LIBRARY": "YOUR_UI_LIBRARY_HERE"
}
}
}
}
{
"mcpServers": {
"macula-mesh": {
"command": "npx",
"args": [
"-y",
"-p",
"@macula-io/mcp",
"macula-mcp"
]
}
}
}