okedeji/mcpvessel
GitHub: okedeji/mcpvessel
mcpvessel 将不受信任的 MCP 服务器隔离在独立容器中运行,支持安全组合、编排和通过 OCI registry 分发 MCP agent。
Stars: 1 | Forks: 0
# mcpvessel
**将不受信任的 MCP 服务器隔离起来,继续使用它们,将其组合成 agent,并进行分享。**
[](https://github.com/okedeji/mcpvessel/actions/workflows/ci.yml)
[](https://github.com/okedeji/mcpvessel/releases)
[](LICENSE)
MCP 服务器作为子进程运行,拥有您的完整用户权限。该协议并未对其进行沙箱处理,因此已安装的服务器可以:
- 读取您的 SSH 密钥、云凭据和 `.env` 文件
- 在您的机器上运行任意命令
- 将上述任何内容发送到任何地方
这并非理论上的威胁。[CVE-2025-6514](https://nvd.nist.gov/vuln/detail/CVE-2025-6514)(评级为严重)就是由于连接到不受信任的服务器而导致的宿主机远程代码执行,而且审计不断发现数以千计存在漏洞的公共服务器。今天安全并不意味着下一次更新后依然安全。
mcpvessel 将每个 MCP 服务器运行在一个独立的容器中:
- 无法访问您的宿主机或文件
- 除非您允许,否则没有出站网络
- 沙箱内没有任何提供商密钥
它自带运行时,因此无需安装 Docker 或容器引擎。它还可以将多个被隔离的服务器组合成一个单一的 LLM agent,并通过 OCI registry 进行分发,这两点将在下文介绍。

/tools/` 直接调用。
## 发布它
被隔离的服务器或 agent 是一个内容寻址的 bundle。将其推送到您已登录的任何 OCI registry(`mcpvessel login`):
```
mcpvessel push @me/oncall:0.1
```
队友可以通过相同的引用拉取并运行它,并以相同的方式进行沙箱化,而无需自己导入或构建:
```
mcpvessel run @me/oncall:0.1 "what is causing our top Sentry error?"
```
它在推送时签名,在拉取时验证,因此他们运行的正是您构建的内容,并以相同的方式被隔离。发布者密钥指纹以及如何验证拉取的内容在 [SECURITY.md](SECURITY.md#signing-and-trust) 中。
## 简述工作原理
每次运行都是一组位于私有、仅限内部访问的网络上的小型容器。您隔离的服务器独自位于其专有的网络上,没有向外路由的路径。唯一的出口是 mcpvessel 为您运行的小型代理容器:一个根据您设置的允许列表过滤每个出站网络请求,一个代理服务器之间的调用,当服务器结合 LLM 进行推理时,还有一个容器负责持有您的模型密钥,确保 agent 永远看不到它。在 macOS 上,所有这些都运行在 mcpvessel 首次运行时设置的轻量级 Linux VM 内,因此没有任何东西会直接触及您的宿主机。在 Linux 上,它使用宿主机自带的容器运行时。
## 安装说明
**Homebrew(推荐)。** 安装已签名的 cask 并配置 shell 自动补全:
```
brew install --cask okedeji/tap/mcpvessel
```
**直接下载。** 从[发布页面](https://github.com/okedeji/mcpvessel/releases)获取适用于您的操作系统和架构的压缩包,根据 `checksums.txt` 进行校验,然后将二进制文件放到您的 `PATH` 路径下。这是在 Windows 上的正确操作方式(在 WSL2 内运行)。
**从源码构建。** 适用于贡献者和任何想要自行构建的人:
```
git clone https://github.com/okedeji/mcpvessel
cd mcpvessel
make build
```
注意:在 macOS 上,发布的压缩包捆绑了运行时所需的 Linux VM 镜像,因此优先选择 Homebrew 或直接下载,而不是 `go install`。
## 环境要求
- macOS(Apple Silicon 或 Intel)或 Linux。在 Windows 上,它在 WSL2 内运行。
- 使用上面的推荐安装方式需要 Homebrew。
- 在首次运行时,`mcpvessel init` 会设置运行时。在 macOS 上,这是一次性步骤:它会下载一个小型 Linux VM 镜像并启动一个无根(rootless)的容器守护进程,根据您的网络连接情况,这大概需要两到五分钟。之后每次运行只需几秒钟。在 Linux 上,这是一个空操作,直接使用宿主机的容器运行时。
## 卸载说明
停止运行时,移除二进制文件,然后删除状态目录(这将删除 macOS VM、缓存的镜像、您的签名密钥和配置):
```
mcpvessel daemon stop
brew uninstall --cask mcpvessel # or delete the binary you installed
rm -rf ~/.mcpvessel
```
## 命令
`mcpvessel --help` 会列出所有命令,而 `mcpvessel --help` 会详细介绍其中任何一个命令,包括其标志和示例。您只需要 `import` 和 `serve` 即可入门;其余的命令会随着您的深入使用而派上用场。
每个命令的深度指南位于 [docs](docs/) 目录中。
## 贡献与支持
- Bug 和功能请求:[提交 issue](https://github.com/okedeji/mcpvessel/issues)。
- 贡献代码:请参阅 [CONTRIBUTING.md](CONTRIBUTING.md)。
- 发现安全问题?请私下报告。请参阅 [SECURITY.md](SECURITY.md)。
## 许可证
Apache 2.0。请参阅 [LICENSE](LICENSE)。
让 Claude 保存一条普通笔记。被隔离的服务器悄悄地尝试将您的 STRIPE_SECRET_KEY 发送到 exfil.attacker.net,而 mcpvessel 拦截了它。Claude 看到的是一个刚刚运行成功的工具;而您看到的是它试图掩盖的窃取行为在审计日志中被拒绝。
标签:AI代理, EVTX分析, MCP协议, NIDS, StruQ, 子域名枚举, 容器化, 日志审计, 沙箱隔离, 系统安全, 运维工具