A side-by-side look at the Macula mesh and Magic MCP MCP servers: transport, auth, tools, quality signals, and the config to install either one in Claude, Cursor, Windsurf or VS Code.
Verdict: choose Macula mesh for developer tools work as a local process; choose Magic MCP for developer tools as a local process. You can also run both side by side in one mcpServers block.
mesh_call, mesh_put, mesh_get.TWENTY_FIRST_API_KEY, API_KEY_21ST.Rows where the two servers differ are marked.
| Spec | M Macula mesh | |
|---|---|---|
| Category | Developer Tools | Developer Tools |
| Quality signal | 51/100 · Good | 53/100 · Good |
| Install command | Confirmed | Confirmed |
| Transport | Local subprocess (stdio) | Local subprocess (stdio) |
| Auth | Not declared | API key required |
| Pricing | Free | Paid service |
| Required env vars | None listed | TWENTY_FIRST_API_KEYAPI_KEY_21ST |
mesh_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).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": {
"macula-mesh": {
"command": "npx",
"args": [
"-y",
"-p",
"@macula-io/mcp",
"macula-mcp"
]
}
}
}
{
"mcpServers": {
"21st-dev-magic-mcp": {
"command": "npx",
"args": [
"-y",
"@21st-dev/cli@latest"
],
"env": {
"TWENTY_FIRST_API_KEY": "YOUR_TWENTY_FIRST_API_KEY_HERE",
"API_KEY_21ST": "YOUR_API_KEY_21ST_HERE"
}
}
}
}
| Verified owner | Community listing | Community listing |
|---|
| GitHub stars | 1 | 5,997 |
|---|
| Directory activity | 0 views 0 installs 0 upvotes | 16 views 1 installs 0 upvotes |
|---|
| Tools | 32 | Not listed |
|---|
| Full listing | View Macula mesh | View Magic MCP |
|---|
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.No tool names declared yet. Check the project README from the listing page.