Mesh
БесплатноНе проверенDecentralized peer-to-peer federation for MCP servers, enabling a single client to bridge and communicate with multiple servers through a mesh network.
Описание
Decentralized peer-to-peer federation for MCP servers, enabling a single client to bridge and communicate with multiple servers through a mesh network.
README
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
Installation
npm install mcp-mesh
Or run directly:
npx mcp-mesh --help
Quick 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 edge
The 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/mcp
Claude 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 peer
API 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 |
|---|---|
mesh_list_peers |
List all peer connections |
mesh_add_peer |
Connect to a peer |
mesh_remove_peer |
Disconnect from a peer |
mesh_call_peer |
Call a tool on a peer |
mesh_list_peer_tools |
List tools on a peer |
Bridge Mode
| Tool | Description |
|---|---|
mesh_list_bridged_tools |
List tools from bridge peers |
mesh_call_bridged |
Call a bridged tool |
Directory
| Tool | Description |
|---|---|
mesh_directory_list |
List all nodes in directory |
mesh_directory_lookup |
Look up a node |
mesh_node_info |
Get this node's info |
Hub Mode (when --hub)
| Tool | Description |
|---|---|
mesh_hub_register |
Register a node with hub |
mesh_hub_heartbeat |
Send heartbeat |
mesh_hub_list_nodes |
List registered nodes |
mesh_hub_stats |
Get hub statistics |
mesh_hub_connect_node |
Connect to a registered node |
Configuration
Environment Variables
| Variable | Description | Default |
|---|---|---|
MCP_MESH_DATA_DIR |
Data directory | ~/.config/mcp-mesh |
MCP_MESH_PEERS |
Peers file path | ~/.config/mcp-mesh/peers |
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 edge
Architecture
See ARCHITECTURE.md for detailed design documentation.
Topology Options
P2P (Decentralized)
A ←──→ B
↑ ↑
│ │
↓ ↓
C ←──→ D
- No single point of failure
- Works offline/air-gapped
- Each node manages its own connections
Hub (Centralized)
Hub
/ | \
A B C
- Central registry and coordination
- Easier network management
- Better for enterprise/audit requirements
Hybrid
Hub
/ | \
Site Site Site
/\ | /\
A B C D E
- Hub for cross-site coordination
- P2P within sites
License
MIT
Установка Mesh
У этого сервера нет опубликованного пакета — он собирается из исходников. Открой репозиторий и следуй инструкции в README.
▸ github.com/Symbia-Labs/mcp-meshFAQ
Mesh MCP бесплатный?
Да, Mesh MCP бесплатный — установка в пару кликов через Unyly без оплаты.
Нужен ли API-ключ для Mesh?
Нет, Mesh работает без API-ключей и переменных окружения.
Mesh — hosted или self-hosted?
Self-hosted: сервер запускается локально на твоей машине командой из раздела установки.
Как установить Mesh в Claude Desktop, Claude Code или Cursor?
Открой Mesh на unyly.org, выбери вкладку своего клиента (Claude Desktop, Claude Code, Cursor) и нажми Install — конфиг сгенерируется автоматически, без правки JSON.
Похожие MCP
GitHub
PRs, issues, code search, CI status
автор: GitHubFilesystem
Secure file operations with configurable access controls.
Memory
Knowledge graph-based persistent memory system.
Template MCP Server
A CLI tool to create a new Model Context Protocol server project with TypeScript support, dual transport options, and an extensible structure
автор: mcpdotdirectCompare Mesh with
Не уверен что выбрать?
Найди свой стек за 60 секунд
Автор?
Embed-бейдж для README
Похожее
Все в категории development
