MCP Mesh
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@MCP Meshbridge to factory gateway and list its tools"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
MCP Mesh
DEPRECATED: This package has been absorbed into mcp-iot-gateway. The federation functionality is now built-in to the gateway as the
@mcp-iot-gateway/corefederation module. This repository is archived for reference only.
Peer-to-peer federation for MCP servers.
MCP Mesh enables decentralized, peer-to-peer communication between MCP servers. It solves the fundamental limitation of MCP's client-server model: a single client can only connect to one server at a time.
┌─────────────┐
│ Claude │
└──────┬──────┘
│
┌──────▼──────┐
│ mcp-mesh │ ← One connection
└──────┬──────┘
│ bridges to many
┌────────────┴────────────┐
│ │
┌──────▼──────┐ ┌──────▼──────┐
│ factory │◀────────▶│ edge │
│ gateway │ peers │ gateway │
└─────────────┘ └─────────────┘Features
Bridge Mode - Re-export remote tools locally with prefixes (
factory_iot_discover)P2P Connections - Direct node-to-node communication
Hub Mode - Optional central coordinator for network management
meshctl CLI - Hamachi-style network management
Pure MCP - No protocol extensions, works with any MCP client
Related MCP server: mcp-agent-proxy
Installation
npm install mcp-meshOr run directly:
npx mcp-mesh --helpQuick Start
P2P Mode (Direct Connections)
Start a mesh node that bridges to other gateways:
# Start mesh node bridging to factory and edge gateways
mcp-mesh --port 45679 --name "my-mesh" --bridge factory --bridge edgeThe bridged tools become available with prefixes:
factory_iot_discover→ callsiot_discoveron factoryedge_gateway_status→ callsgateway_statuson edge
Hub Mode (Centralized Network)
Start a hub for network coordination:
# Start hub
mcp-mesh --hub --port 45679 --name "central" --network "mycompany"
# Join from other nodes
mcp-mesh --port 45680 --name "factory-gw" --join http://hub:45679/mcpClaude Desktop Integration
Add to ~/Library/Application Support/Claude/claude_desktop_config.json:
{
"mcpServers": {
"mcp-mesh": {
"command": "npx",
"args": [
"mcp-mesh",
"--stdio",
"--name", "claude-desktop",
"--bridge", "factory",
"--bridge", "edge"
]
}
}
}CLI Reference
mcp-mesh
mcp-mesh [options]
Options:
--stdio Use stdio transport (for MCP clients)
--port <port> HTTP server port (default: 45679)
--name <name> Human-readable name for this node
--bridge <spec> Bridge to a peer (UUID, name, or URL). Repeatable.
--peer <key=url> Connect to a peer without bridging. Repeatable.
--hub Run as hub (central coordinator)
--join <url> Join a hub network by URL
--network <id> Network ID (for hub mode)meshctl
Network management CLI (Hamachi-style):
meshctl status Show local node status
meshctl list List all nodes in directory
meshctl networks List available hubs
meshctl network <hub-url> Show network details
meshctl join <hub-url> Join a network
meshctl connect <peer> Connect to peer
meshctl disconnect <peer> Disconnect from peerAPI Usage
Basic Node
import { MeshNode, registerMeshTools } from "mcp-mesh";
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
// Create mesh node
const node = new MeshNode({
name: "my-server",
url: "http://localhost:45678/mcp",
});
// Add mesh tools to your MCP server
const server = new McpServer({ name: "my-server", version: "1.0" });
registerMeshTools(server, node);
// Connect to peers
await node.bridge("factory"); // Bridge with prefix
await node.connectPeer({ key: "edge", url: "http://edge:45678/mcp" });Hub Mode
const hub = new MeshNode({
name: "central-hub",
hub: true,
networkId: "mycompany",
});
// Nodes register automatically via mesh_hub_register tool
// Or programmatically:
hub.hubRegister({
id: "node-uuid",
name: "factory",
url: "http://factory:45678/mcp",
});
// Get network status
const stats = hub.hubStats();
const nodes = hub.hubListNodes({ onlineOnly: true });Directory Lookup
import { MeshDirectory } from "mcp-mesh";
const directory = new MeshDirectory();
// List all known nodes
const nodes = directory.list();
// Look up by name or UUID
const factory = directory.lookup("factory");
console.log(factory?.url); // http://127.0.0.1:45678/mcp
// Resolve any specifier (URL, UUID, or name)
const entry = directory.resolve("factory");MCP Tools
When registerMeshTools() is called, these tools are added:
Peer Management
Tool | Description |
| List all peer connections |
| Connect to a peer |
| Disconnect from a peer |
| Call a tool on a peer |
| List tools on a peer |
Bridge Mode
Tool | Description |
| List tools from bridge peers |
| Call a bridged tool |
Directory
Tool | Description |
| List all nodes in directory |
| Look up a node |
| Get this node's info |
Hub Mode (when --hub)
Tool | Description |
| Register a node with hub |
| Send heartbeat |
| List registered nodes |
| Get hub statistics |
| Connect to a registered node |
Configuration
Environment Variables
Variable | Description | Default |
| Data directory |
|
| Peers file path |
|
Peers File
The directory file at ~/.config/mcp-mesh/peers uses a hosts-style format:
# MCP Mesh Peers
# Format: UUID URL [NAME]
#
a7196323-dcc1-4109-abf5-b47c2f99f920 http://127.0.0.1:45678/mcp factory
9f157a51-7aaa-4f2c-bc38-3c791b604892 http://127.0.0.1:45679/mcp edgeArchitecture
See ARCHITECTURE.md for detailed design documentation.
Topology Options
P2P (Decentralized)
A ←──→ B
↑ ↑
│ │
↓ ↓
C ←──→ DNo single point of failure
Works offline/air-gapped
Each node manages its own connections
Hub (Centralized)
Hub
/ | \
A B CCentral registry and coordination
Easier network management
Better for enterprise/audit requirements
Hybrid
Hub
/ | \
Site Site Site
/\ | /\
A B C D EHub for cross-site coordination
P2P within sites
License
MIT
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/Symbia-Labs/mcp-mesh'
If you have feedback or need assistance with the MCP directory API, please join our Discord server