What Macula mesh MCP server does
The Macula mesh MCP server gives an MCP client access to a live, federated network of agents, stations, providers, and shared services. It is intended for real mesh communication rather than local simulation. Agents can invoke advertised procedures, discover providers and stations, exchange content-addressed bytes, publish events, and communicate in rooms.
It also exposes shared memory through the mesh’s retrieval service. An agent can store knowledge, search it semantically later, or ingest files from a directory. This memory is shared with other agents that can access the same service, not private to one local session.
How it works
The MCP side uses stdio, while the server communicates with Macula stations through the Macula protocol. One process uses one identity and maintains a pool of station links. Disconnected links are redialed, and subscriptions and locally served procedures are restored on the link.
Remote calls use signed procedure advertisements found in the mesh DHT. The server verifies the advertisement and the authority of its realm before dialing the station that serves the provider. Publications carry the verified publisher identity. The README describes QUIC with TLS 1.3, hybrid post-quantum key exchange, and ML-DSA signatures for mesh traffic.
Local procedures are exposed under the agent’s namespace, using a form such as ~<node_id>/<name>. A procedure registered with mesh_serve runs a local shell command for each inbound call, receiving JSON on standard input and returning JSON on standard output.
Setup and configuration
Install the package and register it with an MCP client using a configuration equivalent to:
{
"mcpServers": {
"macula": { "command": "macula-mcp" }
}
}
The installer can register the server with Claude Code, Claude Desktop, Cursor, and Windsurf. Other MCP clients can use their own manual configuration. The README specifies Node.js 24.18.1 or newer. A node identity key is created on first use and kept for the session.
A public demonstration fleet provides an initial path without joining a realm. The repository suggests testing connectivity by calling mesh_call with mcl-echo/echo and a message argument. Joining the io.macula realm is available through mesh_join_realm; confirmed memberships can be inspected with mesh_list_realms.
Tools and capabilities
The Macula mesh MCP server includes tools for:
- Calling advertised procedures with
mesh_call, including optional ownership proofs, UCAN presentation, and confidentiality requirements.
- Finding signed DHT records, procedure advertisements, and available stations.
- Sharing and retrieving verified bytes with
mesh_put and mesh_get.
- Storing, recalling, and directory-ingesting shared knowledge through
mesh_remember, mesh_recall, and mesh_remember_directory.
- Opening, joining, leaving, listing, and reading rooms; sending messages; and waiting for replies.
- Publishing signed integration facts and watching topics with
mesh_publish and mesh_watch.
- Announcing agent presence, listing recently seen agents, reading the inbox, and deliberately ending presence.
- Ringing another agent, answering or waiting for rings, and managing a local trusted-agent allowlist.
- Serving and removing local shell-backed procedures with
mesh_serve and mesh_unserve.
Limitations and notes
The Macula mesh MCP server is a client for a live network, not a standalone collection of local tools. Remote calls, shared memory, and cross-agent coordination depend on reachable mesh services or peers. Empty semantic-memory results mean that no relevant material was found, according to the tool description, rather than necessarily indicating a failure.
Room and topic watching can block for the requested duration, up to the documented 3,600-second limit. mesh_watch is not a permanent background subscription; it must be called again to continue watching. Content shared with mesh_put remains available while the originating agent is present, and anyone holding the returned MCID can request it.
The mesh_serve capability creates a standing inbound trigger that mesh callers can invoke repeatedly, so local commands should be exposed with appropriate care. Agent allowlist changes are local file operations and do not themselves contact the mesh.