关于 Kilntainers
Kilntainers 是一个 MCP 服务,为 LLM Agent 提供隔离的 Linux 沙箱,用于执行 shell 命令。每个连接拥有独立沙箱,会话结束后自动清理。支持 Docker、Podman、Modal、E2B 和 WASM 等多种后端。
主要功能
- 01每个 Agent 独立的隔离沙箱
- 02会话结束后自动销毁沙箱
- 03支持 Docker、Podman 等多种后端
- 04通过 sandbox_exec 工具执行任意 Linux 命令
- 05Agent 与沙箱通过 MCP 通信,不在沙箱内运行
适用场景
- 01让 Agent 在隔离环境中使用 grep、jq、awk 等工具处理数据
- 02在云端为大量并行 Agent 分别提供沙箱
- 03在不向宿主系统开放权限的前提下运行 Agent 生成的命令
MCP 相关
Kilntainers 是 MCP 服务端,向 MCP 客户端暴露单一工具 sandbox_exec,客户端通过它在沙箱中执行命令并获取标准输出、标准错误和退出码。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
通过 MCP 为每个 Agent 提供临时 Linux 沙箱
Kilntainers 是一个 MCP 服务,为大模型 Agent 提供隔离的 Linux 沙箱,用于执行 shell 命令。
- 🧰 多种后端: 容器(Docker、Podman)、云托管微型虚拟机(Modal、E2B)以及 WebAssembly 沙箱(WASM BusyBox,或任何 WASM 模块)。
- 🏝️ 每个 Agent 独立隔离: 每个 Agent 都有自己的专用沙箱,不共享状态,也不会相互污染。
- 🧹 临时性: 沙箱在 MCP 会话期间运行,会话结束后自动关闭并清理。
- 🔒 安全设计: Agent 通过 MCP 与沙箱通信,而不是在沙箱内运行。沙箱无法访问 Agent 的 API 密钥、代码或提示词。
- 🔌 简洁的 MCP 接口: 一个 MCP 工具
sandbox_exec,即可让 Agent 运行任意 Linux 命令。 - 📈 可扩展: 可从笔记本电脑上运行几个 Agent,扩展到在云端并行运行数千个 Agent。
为什么选择 Kilntainers?
Agent 已经很擅长使用终端,还能借助 grep、find、jq、awk 等常见 Linux 工具节省数千个 token。不过,让 Agent 访问主机操作系统会带来严重的安全风险,而在服务上并行运行数千个 Agent 也很棘手。Kilntainers 为每个 Agent 提供自己的隔离临时沙箱。
快速开始
通过 CLI 安装并运行:
# install
uv tool install kilntainers
# starts with defaults: stdio MCP server, Docker, and Debian-slim (see options below)
kilntainers
添加到 MCP 客户端(Claude、Cursor 等):
{
"mcpServers": {
"kilntainers": {
"command": "kilntainers"
}
}
}
工作原理
┌─────────────┐ MCP ┌──────────────┐ ┌─────────────────────────┐
│ LLM Agent │◄───────►│ Kilntainers │◄────►│ Sandboxes │
│ (client) │ │ MCP Server │ │ - Docker/Podman │
│ │ │ │ │ - Cloud VM (Modal,E2B) │
│ │ │ │ │ - WASM Sandbox │
└─────────────┘ └──────────────┘ └─────────────────────────┘
- MCP 客户端连接到 Kilntainers
- 首次调用
sandbox_exec时,Kilntainers 会创建一个隔离沙箱。每个连接都有自己的独立沙箱。 - 命令在沙箱内运行;系统会返回 stdout、stderr 和退出代码
- 会话结束时,沙箱会被销毁,资源也会得到清理。
安全性: Agent 通过 MCP 与沙箱通信,而不是在沙箱内运行。这是有意为之:Agent 通常需要使用密钥(API 密钥、系统提示词、代码),而这些内容绝不应暴露在沙箱中,以免提示词注入攻击将其泄露。
Agent 隔离与沙箱生命周期: 每个 MCP 连接都会启动自己的隔离沙箱。在流式 HTTP 模式下,单个 MCP 服务可以并行托管多个沙箱,exec 调用会路由到与该连接关联的沙箱。在 stdio 模式下,每个进程中的服务只运行一个沙箱。连接关闭时,其沙箱会被关闭并删除。
后端示例
所有参数请参阅 CLI 参考。
Docker 和 Podman(默认)
通过 Docker 或 Podman 运行本地容器。支持任何 OCI 镜像。
kilntainers # Docker + debian-slim (defaults)
kilntainers --image alpine --engine podman # Podman + Alpine
kilntainers --image node:22 --network # Node.js with networking
云容器和虚拟机
Modal.com
通过 Modal.com 提供托管容器,启动时间不到 1 秒。可扩展至数千个并行沙箱。支持 GPU。
kilntainers --backend modal
kilntainers --backend modal --gpu A10G --region us-east # GPU-accelerated
通过 modal setup CLI 进行身份验证,或使用 --modal-token-id / --modal-token-secret 标志。
E2B
来自 E2B 的云托管微型虚拟机沙箱。
kilntainers --backend e2b # Default Debian image
kilntainers --backend e2b --e2b-api-key ABCD --e2b-template my-custom-alpine # Custom image
使用 --e2b-api-key CLI 参数或 E2B_API_KEY 环境变量进行身份验证。
WASM Go BusyBox(实验性)
在 WebAssembly 沙箱中运行 go-busybox。这不是完整的 Linux 环境,但在非常轻量且安全的沙箱中提供常见工具(grep、awk、sed、ls、wc、sort 等)。
uv tool install kilntainers[wasm] # WASM support is an optional dependency (+15MB)
kilntainers --backend go_busybox
WASM Runner
使用自定义 WASM 模块作为沙箱后端。为 Agent 提供一组编译为 WebAssembly 的工具,以及隔离的文件系统。
uv tool install kilntainers[wasm] # WASM support is an optional dependency (+15MB)
kilntainers --backend wasm --wasm-path ./my_tool.wasm
安装
uv tool install kilntainers # recommended
uv tool install kilntainers[wasm] # optional, include WASM backends (+15MB)
pip install kilntainers # also works with pip
需要 Python 3.13+。Docker 后端需要 Docker 或 Podman。Modal 和 E2B 后端需要相应服务的账户。
CLI 参考
usage: kilntainers [-h] [--backend {docker,go_busybox,modal,wasm}] [--transport {stdio,http}] [...]
MCP server providing isolated Linux sandboxes for LLM agent shell execution.
options:
-h, --help show this help message and exit
core options:
--backend {docker,e2b,go_busybox,modal,wasm}
Backend to use (default: docker). Available: docker, e2b, go_busybox, modal, wasm
--transport {stdio,http}
MCP transport (default: stdio)
--host HOST HTTP bind address (default: 127.0.0.1, HTTP mode only)
--port PORT HTTP listen port (default: 8435, HTTP mode only)
--timeout TIMEOUT Default exec timeout in seconds (default: 120)
--output-limit OUTPUT_LIMIT
Max combined stdout+stderr bytes per exec (default: 2097152 = 2 MiB)
--session-timeout SESSION_TIMEOUT
Idle session timeout in seconds (default: 300, HTTP mode only)
--shell SHELL Shell binary for command mode (e.g., /bin/bash, ash). Default: /bin/bash.
--network Enable network access in sandboxes (default: disabled)
tool description:
--tool-instruction-override TOOL_INSTRUCTION_OVERRIDE
Replace the entire sandbox_exec tool description
--extended-tool-instruction EXTENDED_TOOL_INSTRUCTION
Append to the backend's default tool description
docker backend options:
--engine ENGINE Container CLI binary (default: docker). Supports podman.
--docker-host DOCKER_HOST
Docker daemon socket/address, passed as -H to the Docker CLI (e.g., "ssh://user@remote-host", "tcp://host:2375")
--image IMAGE Docker image (default: debian:bookworm-slim)
--cpu CPU Docker CPU limit (e.g., "1.5")
--memory MEMORY Docker memory limit (e.g., "512m")
--docker-run-flag DOCKER_RUN_FLAGS
Additional flag passed to docker run. Repeatable. (e.g., --docker-run-flag "--pids-limit=256")
e2b backend options:
--e2b-api-key E2B_API_KEY
E2B API key (overrides E2B_API_KEY environment variable)
--e2b-template E2B_TEMPLATE
E2B template name or ID (default: base)
--e2b-sandbox-timeout E2B_SANDBOX_TIMEOUT
Sandbox lifetime timeout in seconds (default: 3600)
--e2b-metadata E2B_METADATA
Metadata key=value pairs (can be used multiple times)
--e2b-env E2B_ENV Environment variable key=value pairs (can be used multiple times)
modal backend options:
--modal-token-id MODAL_TOKEN_ID
Modal token ID (overrides environment/default auth)
--modal-token-secret MODAL_TOKEN_SECRET
Modal token secret (overrides environment/default auth)
--modal-app-name MODAL_APP_NAME
Modal app name (default: kilntainers)
--modal-cpu MODAL_CPU
CPU cores (fractional, default: 1.0)
--modal-memory MODAL_MEMORY
Memory in MiB (default: 512)
--gpu GPU GPU type (e.g., "A10G", "H100")
--region REGION Geographic region (e.g., "us-east")
--sandbox-timeout SANDBOX_TIMEOUT
Sandbox lifetime timeout in seconds (default: 3600, max 86400)
wasm backend options:
--wasm-path WASM_PATH
Path to the .wasm file to execute (required for wasm backend)
--wasm-max-memory WASM_MAX_MEMORY
Max WASM memory in MiB (default: 256)
--wasm-fuel WASM_FUEL
WASM instruction fuel limit (default: unlimited)
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。