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

Remote Exec MCP

MCP Server

remote-exec-mcp是一个面向多机器的远程命令执行MCP服务器,支持在Linux和Windows系统上运行Codex风格的本地系统工具。

工具数

7

提示词数

0

GitHub Stars

0

资源数

0
Rust命令执行云端部署

安装说明

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

作者 / 组织

chitao1234

提供方

chitao1234

最后核验

2026/5/17 20:19

快速接入

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

详细介绍

远程执行mcp

remote-exec-mcp 是用于运行Codex风格本地的远程第一MCP服务器 多台Linux和Windows机器上的系统工具。代理连接到一个 代理,选择一个明确的目标,并使用熟悉的工具进行命令 执行、stdin、修补、图像读取、文件传输和TCP/UDP转发。

工具界面和行为受到以下因素的影响 法典,但此存储库是单独的 代理加上每台机器的守护进程实现。

一切都在 docs/ 是历史实施细节和规划 上下文,而不是现场行为契约。目前的真相来源:

  • README.md
  • AGENTS.md
  • configs/*.example.toml
  • skills/using-remote-exec-mcp/SKILL.md
  • 公共模式 crates/remote-exec-proto/src/

状态

已实施的公共MCP工具:

  • list_targets
  • exec_command
  • write_stdin
  • apply_patch
  • view_image
  • transfer_files
  • forward_ports

已实施的传输和运行时间:

  • 通过stdio或流式HTTP代理MCP
  • 默认情况下,Rust守护进程通过双向TLS,或显式纯HTTP
  • 经纪人主机 local 嵌入式本地exec/patch/image工作流的目标
  • 经纪人主机 local 用于传输的文件系统端点
  • 经纪人主机 local 用于端口转发的网络侧
  • remote-exec 用于代理配置或流式HTTP使用的CLI客户端
  • POSIX和Windows XP兼容主机的独立C++11守护进程

实时执行会话和实时端口转发处于内存运行时状态。经纪人 restart公开 session_idforward_id 映射。守护进程重新启动 删除守护进程本地命令会话和转发套接字。

组件

  • remote-exec-broker:公共MCP服务器。它验证目标名称、路由

调用守护进程或代理主机本地运行时,拥有公共 session_idforward_id 命名空间,并且可以通过stdio或流式HTTP为MCP提供服务。

  • remote-exec:从代理机箱构建的CLI客户端。它可以加载代理

进程内配置和调用处理程序,或连接到正在运行的流式HTTP 经纪人。

  • remote-exec-daemon:每台机器的Rust守护进程。它执行命令,管理

会话、应用补丁、读取图像、导入/导出传输档案, 检查静态路径沙盒规则,并为v4端口前向升级隧道提供服务。

  • remote-exec-host:共享Rust主机运行时,由Rust守护进程和

经纪人主机 local 目标。

  • remote-exec-daemon-cpp:具有本机的独立纯HTTP C++11守护进程

POSIX、MinGW Windows XP兼容、主机原生MSVC和MSVC v141xP兼容的构建路径。

  • remote-exec-proto:公共MCP模式、代理守护进程RPC模式、路径和

沙盒助手和端口转发协议类型。

  • remote-exec-admin:用于证书/引导工作流的管理CLI。
  • remote-exec-pki:可重用的PKI生成和清单帮助程序。

建筑

代理人只与经纪人交谈。每个配置的目标指向一个守护进程,以及 代理执行目标验证、身份检查、路由、结果 包括数据存储、格式化和运行时ID映射。

重要不变量:

  • list_targets 是代理本地缓存库存。它不会在以下位置探测守护进程

阅读时间。

  • 仍然可以配置暂时无法访问的目标。经纪人可以开始

成功并在第一次转发呼叫之前验证该目标。

  • 公共 session_id 值是代理拥有的不透明令牌,而不是守护进程

ID或守护进程本地会话ID。

  • 公共 forward_id 值是代理拥有的不透明令牌,而不是守护进程本地令牌

隧道ID。

  • 目标选择是安全边界的一部分。会话或转发已打开

因为一个目标对另一个目标无效。

  • 代理守护进程RPC使用HTTP/1.1 JSON。端口转发使用守护进程专用

HTTP/1.1升级隧道。

  • forward_ports v4使用 X-Remote-Exec-Port-Tunnel-Version: 4头球

匹配不区分大小写;协议版本为 4.

  • v4帧编号20和21被保留为 ForwardRecovering

ForwardRecovered。公共恢复状态目前通过以下方式报告 经纪人拥有 forward_ports list 领域。

配置

从以下内容开始:

  • configs/broker.example.toml
  • configs/daemon.example.toml
  • crates/remote-exec-daemon-cpp/config/daemon-cpp.example.ini

Broker配置包括:

  • MCP传输:默认情况下为stdio,或可流式传输HTTP listenpath
  • [targets.] 每个守护进程目标条目
  • 守护程序基本URL和预期的守护程序目标名称
  • 双向TLS客户端证书/密钥和CA路径 https:// 目标
  • 明确的 allow_insecure_http = true 对于纯HTTP目标
  • 代理到守护进程请求的可选承载身份验证
  • 可选的证书固定和主机名验证覆盖
  • 每个目标连接/读取/请求/启动探测超时
  • 可选代理主机 [local] 目标
  • 可选代理主机文件系统沙箱
  • 可选的结构化内容切换
  • 可选传输和端口转发限制

Daemon配置包括:

  • 守护进程 target 名称与 listen 地址
  • 默认工作目录
  • 默认或显式TLS传输 transport = "http"
  • TLS服务器证书/密钥和CA路径
  • 可选的代理客户端证书pin
  • 可选承载身份验证
  • 登录shell、PTY、默认shell和Windows POSIX根策略
  • 可选静态路径沙盒
  • 可选传输、屈服时间和端口转发限制

default_workdir 当经纪人存在时,必须已经存在 [local] 目标或守护进程 开始。

TLS和Bootstrap

Rust代理和Rust守护进程目标默认使用双向TLS:

  • 经纪人功能 broker-tls 默认启用
  • 守护进程特性 tls 默认启用
  • 守护进程提供由配置的CA签名的服务器证书
  • 代理提供由配置的CA签名的客户端证书
  • 双方都信任在其配置中配置的CA

如果代理构建时没有 broker-tls,它拒绝 https:// 守护进程 目标和 https:// 代理URL。如果Rust守护进程是在没有 tls, 它只支持 transport = "http".C++守护进程的目标是纯HTTP和 必须在代理中配置 allow_insecure_http = true.

首选开发引导:

cargo run -p remote-exec-admin -- certs dev-init \
  --out-dir ./remote-exec-certs \
  --target builder-a \
  --target builder-b

重用现有CA:

cargo run -p remote-exec-admin -- certs dev-init \
  --out-dir ./remote-exec-certs-next \
  --target builder-c \
  --reuse-ca-from-dir ./remote-exec-certs

当代理通过DNS名称或非本地主机IP连接时,添加守护进程SAN:

cargo run -p remote-exec-admin -- certs dev-init \
  --out-dir ./remote-exec-certs \
  --target builder-a \
  --san builder-a=dns:builder-a.example.com \
  --san builder-a=ip:10.0.0.12

该命令写道:

  • ca.pemca.key
  • broker.pembroker.key
  • daemons/.pemdaemons/.key
  • certs-manifest.json

低级命令也可用:

cargo run -p remote-exec-admin -- certs init-ca --out-dir ./remote-exec-ca

cargo run -p remote-exec-admin -- certs issue-broker \
  --ca-cert-pem ./remote-exec-ca/ca.pem \
  --ca-key-pem ./remote-exec-ca/ca.key \
  --out-dir ./remote-exec-broker-cert

cargo run -p remote-exec-admin -- certs issue-daemon \
  --ca-cert-pem ./remote-exec-ca/ca.pem \
  --ca-key-pem ./remote-exec-ca/ca.key \
  --out-dir ./remote-exec-daemon-cert \
  --target builder-a \
  --san dns:builder-a.example.com \
  --san ip:10.0.0.12

笔记:

  • 如果没有提供SAN,则生成的守护进程证书默认为 DNS:localhost

IP:127.0.0.1.

  • 生成的私钥是使用受限权限编写的:Unix 0600;

适用于当前用户、本地管理员和本地系统的Windows DACL。

  • expected_daemon_name 应与守护进程的配置相匹配 target.
  • skip_server_name_verification = true 仍然验证CA、密钥使用情况,以及

过期,但跳过URL主机到证书SAN匹配。

  • pinned_server_cert_pemtls.pinned_client_cert_pem 添加精确的叶子

证书引脚位于正常CA验证之上。

  • 承载身份验证对请求进行身份验证,但不增加机密性或

纯HTTP上的完整性。

跑步

启动Rust守护进程:

cargo run -p remote-exec-daemon -- configs/daemon.example.toml

启动代理:

cargo run -p remote-exec-broker -- configs/broker.example.toml

通过流式HTTP公开代理:

[mcp]
transport = "streamable_http"
listen = "127.0.0.1:8787"
path = "/mcp"

运行C++守护进程:

make -C crates/remote-exec-daemon-cpp
crates/remote-exec-daemon-cpp/build/remote-exec-daemon-cpp \
  crates/remote-exec-daemon-cpp/config/daemon-cpp.example.ini

CLI客户端

remote-exec CLI调用相同的公共代理工具。

在进程中使用代理配置:

cargo run -p remote-exec-broker --bin remote-exec -- \
  --broker-config configs/broker.example.toml \
  list-targets

使用正在运行的流式HTTP代理:

cargo run -p remote-exec-broker --bin remote-exec -- \
  --broker-url http://127.0.0.1:8787/mcp \
  list-targets

常见示例:

cargo run -p remote-exec-broker --bin remote-exec -- \
  --broker-config configs/broker.example.toml \
  exec --target builder-a --workdir /srv/project 'cargo test'

cargo run -p remote-exec-broker --bin remote-exec -- \
  --broker-config configs/broker.example.toml \
  transfer-files \
  --source local:/tmp/source.txt \
  --destination builder-a:/tmp/dest.txt \
  --overwrite replace \
  --create-parent

cargo run -p remote-exec-broker --bin remote-exec -- \
  --broker-url http://127.0.0.1:8787/mcp \
  forward-ports open \
  --listen-side local \
  --connect-side builder-a \
  --forward tcp:127.0.0.1:15432=127.0.0.1:5432

使用 --json 用于标准化JSON输出。使用 apply-patch --input-file -write-stdin --chars-file - 从stdin读取有效载荷。

CLI退出代码为 0 为了成功, 2 对于使用/输入错误, 3 对于经纪人 配置加载/构建错误, 4 用于流式HTTP连接或传输 错误,以及 5 对于代理返回的MCP工具错误。

--broker-config mode为一次CLI调用构建代理状态。持久 端口转发需要一个长时间运行的代理,因此更喜欢 --broker-url 为了 forward-ports open/list/close 工作流程。

工具说明

exec_command:

  • 在一个目标上运行一个命令
  • 回报 session_id 当仍在运行时
  • 将stdout/stderr顺序合并为一个公共命令 output 非TTY exec字段
  • 应用守护进程或代理本地 yield_time_ms 政策
  • 按大致的令牌预算截断输出,其中一个令牌大约为四个

UTF-8字节

  • 以文本形式报告警告,并在启用时报告结构化内容

write_stdin:

  • 写入或轮询经纪人拥有的实时会话
  • 可以通过以下路线 session_id 独自
  • 拒绝不匹配 target 如果提供
  • 接受 pty_size 在写入或轮询之前调整实时TTY大小
  • 将丢失的守护进程会话标准化为通常的未知进程错误

apply_patch:

  • 在一个目标上应用Codex样式的补丁
  • 保留现有 LFCRLF 更新文件的样式
  • 支持文档 *** End of File 标记
  • 有意在多个文件操作之间实现非事务性
  • 仅返回文本输出
  • 在配置中启用时,可以使用实验目标编码自动检测

view_image:

  • 从一个目标读取图像
  • 支持 detail = "original" 用于高保真读取
  • Rust守护进程可以根据正常的图像处理调整大小/默认值
  • C++守护进程仅支持直通PNG、JPEG和WebP

transfer_files:

  • 支持 local -> remote, remote -> local, remote -> remote,以及

local -> local

  • 接受其中之一 source 或一个 sources 数组
  • 需要端点本机绝对路径
  • 默认为 overwrite = "merge", destination_mode = "auto",以及

symlink_mode = "preserve"

  • 支持 destination_mode = "exact""into_directory"
  • 支持 symlink_mode = "preserve", "follow",以及 "skip"
  • 支持 exclude 相对于每个源根的glob模式
  • 跳过目录树中不受支持的特殊文件并显示警告
  • 不公开公共压缩选项;压缩是代理内部的

forward_ports:

  • 支持 action = "open" | "list" | "close"
  • 支持 tcpudp
  • 打开侦听器 listen_side 以及上的出站连接/数据报

connect_side

  • 允许任何一方成为配置目标或 "local"
  • 处理裸端点 "8080" 作为 "127.0.0.1:8080"
  • 允许非环回侦听绑定,例如 "0.0.0.0:8080"
  • 允许 listen_endpoint 港口 0;读取实际绑定端口的结果
  • 要求非零 connect_endpoint 端口
  • 报告 phase、侧面健康、生成、重新连接计数器、掉线计数器,

有效限制

  • 款待 phase = "ready" 作为准备;遗产 status = "open" 可以共存

随着 phase = "reconnecting"

  • 在代理守护进程传输丢失后,可以恢复未来的监听端流量

守护进程保持活动状态,但每个对等连接器的TCP流和UDP处于活动状态 迷失

局部语义

名字 local 指代理主机。

  • [local] 在代理配置中启用 target: "local" 为了 exec_command,

write_stdin, apply_patch,以及 view_image.

  • transfer_files 可以使用 target: "local" 用于代理主机文件系统访问

即便当 [local] 省略。

  • forward_ports 可以使用侧面 "local" 甚至用于代理主机网络访问

[local] 省略。

  • 经纪人 host_sandbox 管理代理主机文件系统访问。它没有

限制 forward_ports 网络接入。

配置的远程目标可能无法命名 local.

信任模型

选择目标相当于在该机器上进行广泛访问,除非是静态访问 沙盒配置限制了相关的基于路径的操作。

没有每次呼叫的批准流程,也没有沙盒选择流程。沙盒规则 是静态允许/拒绝列表:

  • 缺失 allowallow = [] 意味着允许所有
  • deny 条目细化了允许的集合
  • exec_command 仅检查已解决的启动问题 cwd
  • 不检查命令文本是否有任意路径引用
  • view_image 检查已解析的映像路径是否具有读取权限
  • apply_patch 检查已解决的写入目标
  • transfer_files 检查源读取权限和目标写入权限

它们各自的端点

  • forward_ports 可以绑定非环回地址并连接到任意

可从每一侧访问的端点,受配置的转发限制的约束

安全性基于显式的目标选择和代理到守护进程的双向TLS 对于正常的Rust目标。纯HTTP需要明确的选择加入。

可靠性注意事项

  • Broker启动探测同时运行,并受以下限制

timeouts.startup_probe_ms.

  • 代理守护进程调用受每个目标连接/读取/请求超时的限制。
  • Rust守护进程实时执行会话的上限为 max_open_sessions 修剪

压力较大的课程,更喜欢已完成的课程。经纪人主机 本地运行时使用相同的默认上限。

  • forward_ports 对于单个工具调用,open是全有或全无:失败

初始化将关闭在该调用期间创建的侦听器。

  • 明确的 forward_ports 如果守护进程端清理无法完成,close会报告错误

确认后,列出的状态可供重试或检查。

  • 如果代理消失而没有关闭转发,则守护进程端会分离

侦听器和UDP套接字在重新连接宽限期窗口后被回收。

  • Rust守护进程关闭取消挂起的隧道工作并关闭实时转发

退出前使用插座。

  • C++守护进程转发边界工作器计数、隧道I/O、排队字节数、UDP

绑定、活动TCP流、保留会话/侦听器和TCP连接时间。

C++守护程序

C++守护进程有意支持比Rust守护进程更小的表面:

  • 纯HTTP
  • 无传输压缩
  • 当主机可以分配PTY时,支持POSIX PTY
  • Windows XP兼容版本被拒绝 tty = true
  • PNG、JPEG和WebP透传 view_image
  • 文件、目录和代理构建的多源传输
  • POSIX符号链接保留/跟随/跳过模式
  • 不可用时跳过与Windows XP兼容的符号链接保留
  • v4 forward_ports 隧道支护
  • exec cwd的静态路径沙盒、传输读/写路径、补丁写入

目标和图像读取

在每个支持的构建路径上,C++守护进程的标准级别都是C++11。在此 存储库,“Windows XP兼容”意味着使用可以针对XP的工具链 在将守护进程编译为C++11时,例如MinGW-XP交叉构建或 元信令虚通道 v141_xp 设置。

Rust和C++守护进程共享 max_open_sessions 默认值为64。C++也是 具有守护进程本地安全旋钮,用于手写HTTP解析器和阻止 转发工作者模型: max_request_header_bytes, max_request_body_bytes, port_forward_max_worker_threads,以及 port_forward_tunnel_io_timeout_ms. 这些是专门针对C++的,而不是隐藏的Rust等价物。

构建路径:

make -C crates/remote-exec-daemon-cpp check-posix
make -C crates/remote-exec-daemon-cpp check-windows-xp
bmake -C crates/remote-exec-daemon-cpp check-posix

check-windows-xp 运行支持Windows的C++运行时套件 WINDOWS_XP_TEST_RUNNER 当该变量被设置时,直接当它被设置时 空的。GNU默认设置为 wine 在非Windows主机上为空 窗户。

在x86 Visual Studio开发人员提示符下:

nmake /f crates\remote-exec-daemon-cpp\NMakefile check-msvc-native

在x86 Visual Studio开发人员提示符下,使用 v141_xp-功能强大的C++11 工具集:

nmake /f crates\remote-exec-daemon-cpp\NMakefile check-msvc-xp

更多C++守护进程详细信息请访问 crates/remote-exec-daemon-cpp/README.md.

可观测性

运行时组件日志 stderr.

  • 经纪人保持 stdout 为MCP stdio保留。
  • 代理工具错误包括 request_id, tool,以及 target 当已知时;

使用该请求ID将代理日志与守护进程相关联 x-request-id 原木。

  • 锈蚀部件读取 REMOTE_EXEC_LOG 首先,然后 RUST_LOG.
  • C++守护进程读取 REMOTE_EXEC_LOG 首先,然后 RUST_LOG.
  • C++守护进程接受裸级别,例如 debug,以及共享过滤器,例如

remote_exec_daemon_cpp=debug.

  • 古老的 remote_exec_daemon_xp= 过滤器仍被接受为别名。

示例:

REMOTE_EXEC_LOG=debug cargo run -p remote-exec-daemon -- configs/daemon.example.toml
REMOTE_EXEC_LOG=debug cargo run -p remote-exec-broker -- configs/broker.example.toml

REMOTE_EXEC_LOG='warn,remote_exec_broker=debug,remote_exec_daemon=debug,remote_exec_daemon_cpp=debug'

发展

Rust MSRV是 1.85.0,第一个支持Rust 2024版本的稳定版本。

全质量门:

cargo test --workspace
cargo fmt --all --check
cargo clippy --workspace --all-targets --all-features -- -D warnings
make -C crates/remote-exec-daemon-cpp check-posix
make -C crates/remote-exec-daemon-cpp check-windows-xp
# From an x86 Visual Studio developer prompt:
nmake /f crates\remote-exec-daemon-cpp\NMakefile check-msvc-native
# From an x86 Visual Studio developer prompt with a v141_xp-capable C++11 toolset:
nmake /f crates\remote-exec-daemon-cpp\NMakefile check-msvc-xp

重点命令:

cargo test -p remote-exec-broker --test multi_target -- --nocapture
cargo test -p remote-exec-broker --test mcp_cli
cargo test -p remote-exec-broker --test mcp_transfer -- --nocapture
cargo test -p remote-exec-broker --test mcp_forward_ports -- --nocapture
cargo test -p remote-exec-daemon --test transfer_rpc -- --nocapture
cargo test -p remote-exec-daemon --test port_forward_rpc -- --nocapture
make -C crates/remote-exec-daemon-cpp test-host-transfer
make -C crates/remote-exec-daemon-cpp test-host-server-runtime
make -C crates/remote-exec-daemon-cpp test-host-server-streaming
make -C crates/remote-exec-daemon-cpp test-windows-xp-server-runtime
make -C crates/remote-exec-daemon-cpp test-windows-xp-server-routes-common

无默认功能检查:

cargo test -p remote-exec-broker --no-default-features --tests
cargo test -p remote-exec-daemon --no-default-features --tests
cargo test -p remote-exec-host --no-default-features --tests
cargo clippy -p remote-exec-broker --no-default-features --all-targets -- -D warnings
cargo clippy -p remote-exec-daemon --no-default-features --all-targets -- -D warnings
cargo clippy -p remote-exec-host --no-default-features --all-targets -- -D warnings

CI还练习代理、守护进程和主机 --no-default-features 测试和 Ubuntu上的clippy作业 tls-disabled 和主机特征门控代码路径 故意覆盖。

CI在Linux和Windows上执行Rust代理和Rust守护进程。铁锈 代理集成测试在以下情况下使用预构建的C++守护进程二进制文件 当C++守护进程不存在时,跳过它;他们不建造 C++守护进程本身。CI在显式步骤中构建该C++守护进程二进制文件 在Rust测试作业之前。独立的C++守护进程也有自己的Linux和 Windows CI作业:在Linux上运行POSIX运行时测试,与Windows XP兼容的测试 二进制文件在Linux上的Wine下运行(如果可用),以及32位主机本机MSVC NMAKE路径运行在 windows-latest.

一个单独的定期/手动GitHub Actions工作流在内部练习BSD覆盖 GitHub托管了FreeBSD、OpenBSD、NetBSD和DragonFly BSD的BSD虚拟机。每个BSD 条目运行支持的BSD make路径 bmake -C crates/remote-exec-daemon-cpp BUILD_DIR=build/ci-bsd check-posix, 然后重用结果 remote-exec-daemon-cpp 二进制直通 REMOTE_EXEC_CPP_DAEMON 跑步时 cargo test --workspace --all-features. FreeBSD和NetBSD引导Rust rustup;OpenBSD和DragonFly BSD的使用 他们打包的Rust工具链。BSD工作流程是有意周期性的 可手动运行,而不是所需推/拉请求门的一部分。

Windows GNU仅从Linux进行编译检查:

cargo check --workspace --all-targets --all-features --target x86_64-pc-windows-gnu
cargo clippy --workspace --all-targets --all-features --target x86_64-pc-windows-gnu -- -D warnings
cargo build --workspace --all-targets --all-features --target x86_64-pc-windows-gnu

参考文献

  • AGENTS.md:编码代理实施指南
  • skills/using-remote-exec-mcp/SKILL.md:代理工具和CLI使用指南
  • configs/broker.example.toml:代理配置形状
  • configs/daemon.example.toml:Rust守护进程配置形状
  • crates/remote-exec-daemon-cpp/README.md:C++守护进程构建/运行时指南
  • crates/remote-exec-proto/src/public.rs:公共MCP工具架构

目录标签

目录标签

Rust命令执行云端部署远程执行本地部署多机器管理文件传输端口转发

接入字段

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

未说明

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

none

工具数量(toolCount,工具数)

7

资源数量(resourceCount,资源数)

0

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

0

权限和风险

未说明none部署方式未说明

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

安装前确认

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

仍需确认:installCommand

来源信息

继续浏览同类 MCP