Token导航 LogoToken导航TokenDH.com
rmcp mux logo
运维云端未说明官方级别未说明来源级核验

rmcp mux

MCP Server

一个Rust守护进程,用于从单个进程管理所有MCP服务器,提供Unix套接字、ID重写、初始化缓存、自动重启和交互式TUI仪表板功能。

工具数

0

提示词数

0

GitHub Stars

1

资源数

0
Rust云端部署Docker

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

vetcoders

提供方

vetcoders

最后核验

2026/5/17 20:19

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

详细介绍

rmcp多路复用器–MCP服务器多路复用器

![CI](https://github.com/Loctree/rmcp-mux/actions/workflows/ci.yml) ![Crates.io](https://crates.io/crates/rmcp-mux) ](Cargo.toml) ![License: MIT](LICENSE)

管理的Rust守护进程 从单个进程访问所有MCP服务器。在中定义服务器 mux.toml,运行一个 rmcp-mux 命令,并为每个服务获取Unix套接字。功能包括ID重写、初始化缓存、自动重启和交互式TUI仪表板。

0.3.x版本新增:具有守护进程状态套接字的统一进程模型!一 rmcp-mux 进程从配置文件管理所有服务器。用于监控和控制的交互式TUI仪表板。通过查询实时状态 rmcp-mux daemon-status.

目录

特性

核心

  • 单进程、多服务器 -一个 rmcp-mux 管理配置中定义的所有MCP服务器
  • 每个服务的Unix套接字 –每台服务器都有自己的套接字用于客户端连接
  • ID重写 –所有服务的响应都与正确的客户端相匹配
  • 初始化缓存 –每台服务器执行一次;缓存响应服务于后续客户端
  • 自动重启 –服务器在出现故障时以指数级回退重新启动
  • 平滑关闭 –Ctrl+C停止所有服务器,删除套接字

监控与控制

  • 交互式TUI (--tui)–具有服务器状态、重启控制的实时仪表板
  • 状态命令 (--show-status)–所有服务器状态的JSON快照
  • 每台服务器控制 –在运行时重新启动、停止、启动各个服务器
  • 选择性启动--only--except 部分发射标志

配置

  • TOML配置 –简单易读的服务器定义
  • 环境变量 –每台服务器的环境变量注入
  • 灵活的参数 –超时、客户端限制、重启策略

快速开始

# 1. Create config file
cat > mux.toml Unix套接字,允许标准MCP主机与rmcp-mux管理的服务器通信。

## CLI 参考

### 主命令

rmcp-mux --config mux.toml [OPTIONS]


**必修的:**

- `--config 
` –配置文件路径(TOML)

**服务器选择:**

- `--only ` –仅启动指定的服务器(逗号分隔)
- `--except ` –启动除指定以外的所有服务器(逗号分隔)

**运行时控制:**

- `--show-status` –显示所有服务器的状态并退出
- `--restart-service ` –重新启动特定服务器
- `--tui` –启动交互式TUI仪表板

**示例:**

Start all servers from config

rmcp-mux --config mux.toml

Start only memory and filesystem servers

rmcp-mux --config mux.toml --only memory,filesystem

Start all except brave-search

rmcp-mux --config mux.toml --except brave-search

Check status of running servers

rmcp-mux --config mux.toml --status

Restart a specific server

rmcp-mux --config mux.toml --restart-service memory

Interactive dashboard

rmcp-mux --config mux.toml --tui


### 子指令

#### `daemon-status` –查询正在运行的守护进程

Get status of running daemon (requires daemon to be running)

rmcp-mux daemon-status

Output as JSON

rmcp-mux daemon-status --json

Use custom status socket

rmcp-mux daemon-status --socket /custom/path.sock


返回:版本、正常运行时间、服务器计数、每台服务器状态(活动客户端、挂起请求、重启、心跳延迟)。

#### `health` –验证连接

Check specific socket

rmcp-mux health --socket /tmp/mcp-memory.sock

Check service from config

rmcp-mux health --config mux.toml --service memory


#### `proxy` –STDIO代理

rmcp-mux proxy --socket /tmp/mcp-memory.sock


#### `scan` –发现并生成配置

rmcp-mux scan \ --manifest ~/.codex/mcp-mux.toml \ --snippet ~/.codex/mcp-mux \ --socket-dir ~/.rmcp-servers/rmcp-mux/sockets


#### `rewire` –更新主机配置

Rewire a host config to use rmcp-mux proxy (creates .bak backup)

rmcp-mux rewire --host codex --socket-dir ~/.rmcp-servers/rmcp-mux/sockets

Preview changes without writing

rmcp-mux rewire --host codex --dry-run


#### `wizard` –交互式配置

rmcp-mux wizard --config ~/.codex/mcp-mux.toml


## 交互式TUI仪表板

启动时 `--tui` 对于实时仪表板:

rmcp-mux --config mux.toml --tui


### 显示

- 带有状态指示器(运行/停止/错误)的服务器列表
- 每台服务器连接的客户端数
- 待定申请
- 重启计数和上次重启原因
- 实时更新

### 键盘控制

|关键|行动|
|-----|--------|
| `j` / `Down` |向下移动选择|
| `k` / `Up` |向上移动选择|
| `r` |重新启动所选服务器|
| `s` |停止所选服务器|
| `S` |启动所选服务器|
| `q` / `Esc` |退出|

## 图书馆使用情况

添加到您的 `Cargo.toml`:

[dependencies] rmcp-mux = { version = "0.3", default-features = false }


### 基本示例-单多路复用服务器

use rmcp_mux::{MuxConfig, run_mux_server};

#[tokio::main] async fn main() -> anyhow::Result { let config = MuxConfig::new("/tmp/my-mcp.sock", "npx") .with_args(vec!["-y".into(), "@anthropic/mcp-server".into()]) .with_max_clients(10) .with_service_name("my-mcp-server");

run_mux_server(config).await }


### 多个Mux实例(单个进程)

use rmcp_mux::{MuxConfig, spawn_mux_server, MuxHandle}; use std::time::Duration;

#[tokio::main] async fn main() -> anyhow::Result { let services = vec![ ("memory", "/tmp/mcp-memory.sock", "npx", vec!["@mcp/server-memory"]), ("filesystem", "/tmp/mcp-fs.sock", "npx", vec!["@mcp/server-filesystem"]), ];

let mut handles: Vec = Vec::new(); for (name, socket, cmd, args) in services { let config = MuxConfig::new(socket, cmd) .with_args(args.into_iter().map(String::from).collect()) .with_service_name(name) .with_request_timeout(Duration::from_secs(60));

handles.push(spawn_mux_server(config).await?); }

for handle in handles { handle.wait().await?; } Ok(()) }


### 健康检查

use rmcp_mux::check_health;

async fn verify_service() -> bool { check_health("/tmp/mcp-memory.sock").await.is_ok() }


### 功能标志

|特性|默认值|描述|
|---------|---------|-------------|
| `cli` |yes | CLI二进制、向导、扫描命令|
| `tray` |是|系统托盘图标支持|

仅用于库(最小依赖性):

[dependencies] rmcp-mux = { version = "0.3", default-features = false }


## 运行时行为

### 客户处理

1. 新客户端连接到服务器的套接字->分配 `client_id`
1. 消息获取 `global_id = c:`
1. 使用本地ID将响应解复用回原始客户端
1. 第一 `initialize` 点击服务器;响应已缓存
1. 稍后 `initialize` 从缓存应答的呼叫

### 安全防护装置

- **最大请求大小** –默认1 MiB
- **请求超时** –默认30秒,用于清理挂起的呼叫
- **指数级重启回退** –1秒->30秒,可配置限制
- **缓慢启动** –将孩子的出生推迟到第一个请求

### 错误处理

- 子系统退出或I/O失败->重新启动子系统,清除缓存/挂起,向受影响的客户端发送错误
- 优雅关机(Ctrl+C)->停止所有子进程,删除所有套接字

## 项目结构

rmcp-mux/ ├── src/ │ ├── lib.rs # Library entry point, MuxConfig, public API │ ├── config.rs # Config types, loading, validation │ ├── state.rs # MuxState, StatusSnapshot, helpers │ ├── scan.rs # Host discovery and rewiring (cli feature) │ ├── tray.rs # Tray icon (tray feature) │ ├── bin/ │ │ ├── rmcp_mux.rs # CLI binary (cli feature) │ │ └── rmcp_mux_proxy.rs # STDIO proxy (cli feature) │ ├── runtime/ # Core mux daemon │ │ ├── mod.rs # run_mux, health_check │ │ ├── types.rs # ServerEvent, constants │ │ ├── client.rs # Client connection handling │ │ ├── server.rs # Child process management │ │ ├── proxy.rs # STDIO proxy logic │ │ ├── status.rs # Status file writing & daemon status socket │ │ └── heartbeat.rs # Backend health monitoring │ └── wizard/ # Interactive TUI wizard (cli feature) ├── tools/ │ ├── install.sh # One-liner installer │ └── launchd/ # macOS launchd templates └── public/ └── rmcp_mux_icon.png # Tray icon


## 测试

Run all tests

cargo test

Run tests without tray feature (for CI/headless)

cargo test --no-default-features

Linting

cargo clippy --all-targets --all-features


## launchd(macOS)

模板位于 `tools/launchd/rmcp-mux.sample.plist`:

cp tools/launchd/rmcp-mux.sample.plist ~/Library/LaunchAgents/rmcp-mux.plist

Edit paths: set --config to your mux.toml

launchctl load -w ~/Library/LaunchAgents/rmcp-mux.plist


## 贡献

看 [.ai代理商/ai_GUIDELINES.md](.ai-agents/AI_GUIDELINES.md) 发展指南。

## 许可证

麻省理工学院

目录标签

目录标签

Rust云端部署Docker服务器管理本地部署多路复用进程控制Unix套接字TUI仪表板

接入字段

传输方式(transport,传输协议)

未说明

鉴权方式(authType,认证方式)

none

工具数量(toolCount,工具数)

0

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

未说明none部署方式未说明

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

仍需确认:installCommand

来源信息

继续浏览同类 MCP