mcpField
K
Kilntainers

Kilntainers

本地服务
github.com/Kiln-AI开发工具5134 周前更新

关于 Kilntainers

Kilntainers 是一个 MCP 服务,为 LLM Agent 提供隔离的 Linux 沙箱,用于执行 shell 命令。每个连接拥有独立沙箱,会话结束后自动清理。支持 Docker、Podman、Modal、E2B 和 WASM 等多种后端。

主要功能

  1. 01每个 Agent 独立的隔离沙箱
  2. 02会话结束后自动销毁沙箱
  3. 03支持 Docker、Podman 等多种后端
  4. 04通过 sandbox_exec 工具执行任意 Linux 命令
  5. 05Agent 与沙箱通过 MCP 通信,不在沙箱内运行

适用场景

  1. 01让 Agent 在隔离环境中使用 grep、jq、awk 等工具处理数据
  2. 02在云端为大量并行 Agent 分别提供沙箱
  3. 03在不向宿主系统开放权限的前提下运行 Agent 生成的命令

MCP 相关

Kilntainers 是 MCP 服务端,向 MCP 客户端暴露单一工具 sandbox_exec,客户端通过它在沙箱中执行命令并获取标准输出、标准错误和退出码。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

暂未收录安装方式

我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。

代码仓库

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

Kilntainers by Kiln AI Logo

通过 MCP 为每个 Agent 提供临时 Linux 沙箱

构建和测试 测试数量徽章 PyPi Discord Newsletter

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         │
└─────────────┘         └──────────────┘      └─────────────────────────┘
  1. MCP 客户端连接到 Kilntainers
  2. 首次调用 sandbox_exec 时,Kilntainers 会创建一个隔离沙箱。每个连接都有自己的独立沙箱。
  3. 命令在沙箱内运行;系统会返回 stdout、stderr 和退出代码
  4. 会话结束时,沙箱会被销毁,资源也会得到清理。

安全性: 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)

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。