使用说明
只需抨击mcp
一个MCP(模型上下文协议)服务器,为AI代理提供沙盒bash环境。
在具有内存中虚拟文件系统的安全、隔离的环境中执行bash命令。
建在上面 just-bash v3.1.0版本。
v3.1.0的新增功能
- 与上游同步
just-bashv3.1.0 -最新版本的完整上游命令、API、类型导出和命令修复 - 沙盒功能转发 -
bash_sandbox_*荣誉Python、JavaScript和命令允许列表配置通过新的上游SandboxOptions - 上游外壳修复 -包括更正的重定向路由、多行引号空格、严格模式
set -euo pipefail、heredoc替换和混合字节/文本输出 - 扩展命令兼容性 -包括
jq -R,嵌套jq插值,curl@file数据,GNU tar选项包,字节干净head/tail,以及管道式stdinrg - 字节安全stdin处理 -跟踪上游v3 TypeScript强制的stdin字节/UTF-8模型
- 执行器集成管道 -包括上游支持
js-exec工具调用钩子和执行器包集成 - ESM运行时修复 -包含上游v3.0.1动态
require("tty")/file命令崩溃修复 - MCP上的完整上游执行选项 -
cwd,env,replaceEnv,stdin,stdinKind,args,rawScript,信号支持中断timeoutMs,加上MCP友好stdinBase64 - AST转换工具 -
bash_transform暴露上游BashTransformPipeline,CommandCollectorPlugin,以及TeePlugin - 持久沙盒工具 -
bash_sandbox_*工具仍然可用于更高级别的隔离工作流 - 字节安全文件IO -持久文件工具支持二进制内容的base64读/写
- 纵深防御模式 -上游默认猴子修补危险的JS全局变量(set
JUST_BASH_DEFENSE_IN_DEPTH=false禁用) - Python支持 -Python3通过上游emscripten-CPython运行时(
JUST_BASH_ENABLE_PYTHON=true) - 可挂载FS+读写FS -带有覆盖/读写选项的真实目录挂载
- 可配置的执行限制 -对循环、字符串、数组、heredocs和替换进行细粒度控制
特性
- 沙盒执行:命令在隔离的虚拟文件系统中运行
- 无状态和有状态模式:在隔离执行或持久文件系统之间进行选择
- 网络访问控制:带URL允许列表的可选网络访问
- 执行限制:防止无限循环和深度递归
- 覆盖FS支持:以只读方式挂载实际目录,并在写入时进行复制
- 可安装FS支架:在不同路径上装载多个文件系统
- ReadWriteFS支持:对真实目录的直接读写访问
同步上游功能
当前包装器的发布轨迹 just-bash v3.1.0,包括:
- 用于Python、JavaScript、命令过滤器、自定义命令和自定义获取实现的沙盒转发
- 为链式stdout/stderr重定向纠正最终目标路由
- UTF-8修复了混合文本和字节生成语句的脚本
- 多行引号字符串空格保留
- 普通变量赋值的深度防御修复
- Heredoc感知命令替换解析
set -euo pipefail短选项集群支持jq -R插值中的原始输入模式和嵌套引号字符串curl @file数据选项的处理- GNU旧式tar选项包,如
tar czf - 字节清理
head/tail,管道标准输入rg,并更正了JavaScript缓冲区编码 - 默认UTC
date明确的行为TZ支持 - 破解v3 stdin字节/UTF-8处理自定义命令更新
- 执行人和
js-exec集成管道 - ESM节点捆绑包动态需要修复加载的命令
tty传递地 jqJSON字符串中的控制字符处理- 更快
grep通过匹配器重用和文字预过滤进行模式匹配 - AWK lexer修复了POSIX多行语句继续
- 跨网络、sqlite3、xan、rg、终端渲染和CI的错误修复
- 工作区/变更集迁移,公共导入路径和bin条目不变
- 跨运行时和文件系统层的深度防御强化
- 上游默认启用纵深防御,加上额外的硬化通道
- 用于覆盖、外部文件系统、符号链接和损坏符号链接处理的文件系统强化
- 虚拟PID和shell安全不变性改进
- 已更新
Sandbox.runCommand()签名兼容性 - Python运行时从Pyodide迁移到emscripten-CPython
- 跟进Python运行时强化和清理
- UTF-8处理和写入路径修复
- 上游CommonJS兼容性改进
ls -F/--classify支持- 额外的清理和内部硬化工作通过运输
v3.1.0
GitHub主审计
已检查 vercel-labs/just-bash main 在承诺时 6130334f0ed013771bbe39f32a249bdaf762c488.这是一个未发布的命令,只能在其之前提交 v3.1.0,添加GNU cat 显示标志(-A, -b, -e, -E, -s, -t, -T,以及 -v).上游舱单仍然存在 3.1.0;此包装器有意跟踪可复制的npm发布,而不是未版本化的Git提交。
安装
来自npm(推荐)
需要Node.js 22或更高版本。
npm install -g just-bash-mcp
# Or with bun
bun add -g just-bash-mcp
来源
git clone https://github.com/dalist1/just-bash-mcp.git
cd just-bash-mcp
bun install
bun run check
用法
运行服务器
just-bash-mcp
# Or from source
bun run dev
MCP客户端配置
使用npx(无需安装)
{
"mcpServers": {
"just-bash": {
"command": "npx",
"args": ["-y", "just-bash-mcp"]
}
}
}
克劳德桌面版
增添 ~/Library/Application Support/Claude/claude_desktop_config.json (macOS)或 %APPDATA%\Claude\claude_desktop_config.json (Windows):
{
"mcpServers": {
"just-bash": {
"command": "npx",
"args": ["-y", "just-bash-mcp"]
}
}
}
光标/VS代码(房间代码/Cline)/风帆
添加到MCP设置中:
{
"mcpServers": {
"just-bash": {
"command": "npx",
"args": ["-y", "just-bash-mcp"]
}
}
}
环境变量
| 变量 | 描述 | 默认值 |
|---|---|---|
JUST_BASH_CWD |
初始工作目录 | /home/user |
JUST_BASH_INITIAL_ENV |
初始环境变量的JSON对象,例如。 {"TZ":"UTC"} |
- |
JUST_BASH_OVERLAY_ROOT |
作为写时复制覆盖层挂载的真实目录 | - |
JUST_BASH_OVERLAY_READ_ONLY |
OverlayFS只读模式 | false |
JUST_BASH_READ_WRITE_ROOT |
具有读写访问权限的真实目录 | - |
JUST_BASH_MOUNTS |
装载配置的JSON数组 | - |
JUST_BASH_ALLOW_NETWORK |
启用网络访问(true/false) |
false |
JUST_BASH_ALLOWED_URLS |
逗号分隔的URL前缀允许 | - |
JUST_BASH_ALLOWED_URLS_JSON |
URL字符串的JSON数组或 {url, transform:[{headers}]} 条目 |
- |
JUST_BASH_ALLOWED_METHODS |
逗号分隔的HTTP方法允许 | GET,HEAD |
JUST_BASH_DENY_PRIVATE_RANGES |
拒绝专用/环回网络范围 | 上游默认值(true 生产中,否则 false) |
JUST_BASH_MAX_REDIRECTS |
最大HTTP重定向数 | 20 |
JUST_BASH_NETWORK_TIMEOUT_MS |
网络超时(毫秒) | 30000 |
JUST_BASH_MAX_RESPONSE_SIZE |
最大网络响应体大小(字节) | 10485760 |
JUST_BASH_MAX_OUTPUT_LENGTH |
最大输出长度 | 30000 |
JUST_BASH_MAX_CALL_DEPTH |
最大函数递归深度 | 100 |
JUST_BASH_MAX_COMMAND_COUNT |
每次执行的最大命令总数 | 10000 |
JUST_BASH_MAX_LOOP_ITERATIONS |
每个循环的最大迭代次数 | 10000 |
JUST_BASH_MAX_AWK_ITERATIONS |
最大AWK循环迭代次数 | 10000 |
JUST_BASH_MAX_SED_ITERATIONS |
最大sed分支迭代次数 | 10000 |
JUST_BASH_MAX_JQ_ITERATIONS |
最大jq循环迭代次数 | 10000 |
JUST_BASH_MAX_JS_TIMEOUT_MS |
最大JavaScript/js执行超时 | 10000 |
JUST_BASH_MAX_GLOB_OPERATIONS |
最大glob文件系统操作数 | 100000 |
JUST_BASH_MAX_STRING_LENGTH |
最大字符串长度(字节) | 10485760 |
JUST_BASH_MAX_ARRAY_ELEMENTS |
最大数组元素数 | 100000 |
JUST_BASH_MAX_HEREDOC_SIZE |
最大heredoc大小(字节) | 10485760 |
JUST_BASH_MAX_SUBSTITUTION_DEPTH |
最大命令替换深度 | 50 |
JUST_BASH_MAX_BRACE_EXPANSION_RESULTS |
最大支撑扩展结果 | 10000 |
JUST_BASH_MAX_EXEC_OUTPUT_SIZE |
最大上游stdout+stderr大小(字节) | 10485760 |
JUST_BASH_MAX_FILE_DESCRIPTORS |
最大打开文件描述符数 | 1024 |
JUST_BASH_MAX_SOURCE_DEPTH |
最大值 source/. 嵌套深度 |
100 |
JUST_BASH_MAX_SQLITE_TIMEOUT_MS |
SQLite超时 | 5000 |
JUST_BASH_MAX_PYTHON_TIMEOUT_MS |
Python超时 | 10000 |
JUST_BASH_ENABLE_PYTHON |
通过emscripten CPython启用Python3(true/false) |
false |
JUST_BASH_ENABLE_JAVASCRIPT |
启用上游 js-exec 通过QuickJS(true/false) |
false |
JUST_BASH_JAVASCRIPT_BOOTSTRAP |
每个之前的Bootstrap JavaScript代码 js-exec 调用 |
- |
JUST_BASH_DEFENSE_IN_DEPTH |
启用深度防御模式(true/false) |
true |
JUST_BASH_DEFENSE_IN_DEPTH_AUDIT |
审核模式:记录违规行为,但不阻止 | false |
JUST_BASH_DEFENSE_IN_DEPTH_LOG |
将违规记录到控制台 | false |
JUST_BASH_MAX_FILE_READ_SIZE |
覆盖/读写的最大文件读取大小 | 10485760 |
JUST_BASH_PROCESS_INFO |
JSON对象覆盖虚拟 {pid,ppid,uid,gid} |
- |
JUST_BASH_PID / JUST_BASH_PPID / JUST_BASH_UID / JUST_BASH_GID |
单个虚拟进程信息覆盖 | - |
JUST_BASH_SANDBOX_TIMEOUT_MS |
默认超时时间 bash_sandbox_* 命令 |
- |
JUST_BASH_ALLOWED_COMMANDS |
逗号分隔的命令允许列表 | all |
JUST_BASH_ENABLE_LOGGING |
启用执行日志记录 | false |
JUST_BASH_ENABLE_TRACING |
启用性能跟踪 | false |
工具
bash
在沙盒环境中执行bash命令。这是上游兼容的MCP暴露 just-bash/bash-tool 执行接口并接受相同的单个 command 争论。
{
"name": "bash",
"arguments": {
"command": "ls -la && cat package.json | head -5"
}
}
bash_exec
在新的沙盒环境中执行bash命令。支持上游 exec() 选项: cwd, env, replaceEnv, stdin, stdinKind, args, rawScript,以及 timeoutMs (加上MCP友好 stdinBase64 对于字节stdin);初始文件可以是字符串或 {content, encoding, mode, mtime} 物体。
{
"name": "bash_exec",
"arguments": {
"command": "echo 'Hello World' && ls -la",
"files": { "/tmp/data.json": "{\"key\": \"value\"}" }
}
}
bash_exec_persistent
在持久沙盒环境中执行bash命令。文件系统跨调用持久化,并支持相同的上游 exec() 选项如 bash_exec.
bash_reset
重置持久bash环境,清除所有文件和状态。
bash_write_file / bash_read_file / bash_list_files
持久环境中的文件操作。读/写支持 encoding: "utf-8" | "base64" 用于字节安全内容。
bash_direct_read / bash_direct_write
直接文件系统读/写操作(绕过shell执行)。
bash_info
获取有关bash环境配置的信息,包括深度防御违规统计数据。
bash_get_cwd / bash_get_env
获取当前工作目录或环境变量。
bash_sandbox_*
持久隔离环境帮助程序:
bash_sandbox_run-运行带有可选结构化输出/日志的命令bash_sandbox_domain-获取当前沙盒域/标识符bash_sandbox_write_files-一次写入多个文件bash_sandbox_read_file-读取文件(支持base64编码)bash_sandbox_mkdir-创建目录bash_sandbox_extend_timeout-延长沙盒超时预算bash_sandbox_stop-停止并清理沙盒状态bash_sandbox_reset-重置沙盒状态
bash_transform
使用上游AST转换管道转换bash脚本,而无需执行它。支持 CommandCollectorPlugin 和 TeePlugin 通过 collectCommands 和 teeOutputDir.
支持的命令
文件操作
cat, cp, file, ln, ls, mkdir, mv, readlink, rm, split, stat, touch, tree
文本处理
awk, base64, column, comm, cut, diff, expand, fold, grep (+ egrep, fgrep), head, join, md5sum, nl, od, paste, printf, rev, rg (ripgrep), sed, sha1sum, sha256sum, sort, strings, tac, tail, tr, unexpand, uniq, wc, xargs
数据处理
jq (JSON), js-exec (启用时通过QuickJS使用JavaScript/TypeScript; node 是兼容性通知), python3/python (当启用时), sqlite3 (SQLite), xan (CSV), yq (YAML/XML/TOML/CSV)
压缩和存档
gzip (+ gunzip, zcat), tar
导航与环境
basename, cd, dirname, du, echo, env, export, find, hostname, printenv, pwd, tee, whoami
壳牌公用事业公司
alias, bash, chmod, clear, date, expr, false, help, history, seq, sh, sleep, time, timeout, true, unalias, which
网络命令(启用时)
curl, html-to-markdown
抽壳特征
- 管:
cmd1 | cmd2 - 重定向:
>,>>,2>,2>&1,< - 命令链:
&&,||,; - 变量:
$VAR,${VAR},${VAR:-default} - 球状图案:
*,?,[...],**/*.ts - If/else、函数、循环(
for,while,until) - 象征性和硬链接
文件系统示例
OverlayFS(从磁盘读取,写入内存)
{
"env": {
"JUST_BASH_OVERLAY_ROOT": "/path/to/your/project"
}
}
ReadWriteFS(直接磁盘访问)
{
"env": {
"JUST_BASH_READ_WRITE_ROOT": "/path/to/sandbox"
}
}
MountableFS(多个支架)
{
"env": {
"JUST_BASH_MOUNTS": "[{\"mountPoint\":\"/data\",\"root\":\"/shared/data\",\"type\":\"overlay\"},{\"mountPoint\":\"/workspace\",\"root\":\"/tmp/work\",\"type\":\"readwrite\"}]"
}
}
网络访问示例
{
"env": {
"JUST_BASH_ALLOW_NETWORK": "true",
"JUST_BASH_ALLOWED_URLS": "https://api.github.com,https://api.example.com"
}
}
凭证从上游转换 allowedUrlPrefixes 可通过以下方式获得 JUST_BASH_ALLOWED_URLS_JSON:
{
"env": {
"JUST_BASH_ALLOW_NETWORK": "true",
"JUST_BASH_ALLOWED_URLS_JSON": "[{\"url\":\"https://api.example.com\",\"transform\":[{\"headers\":{\"Authorization\":\"Bearer token\"}}]}]"
}
}
设置 JUST_BASH_ALLOW_NETWORK=true 如果没有URL允许列表,则启用上游明确危险的全互联网模式。更喜欢允许列表。私有/环回阻止遵循上游的生产默认设置,除非 JUST_BASH_DENY_PRIVATE_RANGES 已明确设置。
安全模型
- 虚拟文件系统隔离(默认情况下没有真正的文件系统访问)
- 执行限制可防止无限循环和递归
- 无主机二进制执行;可选的WASM运行时(Python、JS、SQLite)由功能标志控制
- 默认情况下禁用网络;配置后,将强制执行URL和方法允许列表
- 纵深防御模式 (默认启用,匹配上游):Monkey修补危险的JS全局变量(
Function,eval,setTimeout,process等)以阻止转义向量 - 安全违规记录器:跟踪所有深度防御违规行为,并通过以下方式访问完整统计数据
bash_info - 丰富的网络错误分类:
NetworkAccessDeniedError,TooManyRedirectsError,RedirectNotAllowedError用于精确的错误消息
上游API覆盖范围
此包装器集成了的完整公共API表面 just-bash v3.1.0版本:
| 类别 | 已使用的导出 |
|---|---|
| 核心 | Bash, BashOptions, ExecOptions, BashExecResult |
| 命令 | CommandName, AllCommandName, getCommandNames, getNetworkCommandNames, getPythonCommandNames, getJavaScriptCommandNames |
| 自定义命令 | defineCommand, CustomCommand, LazyCommand |
| 编码 | ByteString, decodeBytesToUtf8, encodeUtf8ToBytes, bytesOutput, textOutput, stdoutAsBytes, stdoutKind |
| 文件系统 | InMemoryFs, OverlayFs, ReadWriteFs, MountableFs, IFileSystem |
| 网络 | NetworkConfig, AllowedUrlEntry, RequestTransform, SecureFetch, NetworkAccessDeniedError, TooManyRedirectsError, RedirectNotAllowedError |
| 沙箱 | Sandbox, SandboxCommand, SandboxOptions, OutputMessage |
| 安全 | DefenseInDepthBox, SecurityViolationLogger, SecurityViolationError, createConsoleViolationCallback |
| 转换 | BashTransformPipeline, CommandCollectorPlugin, TeePlugin, serialize,转换结果/类型 |
| 追踪 | TraceCallback, TraceEvent |
包根重新导出已安装的上游 just-bash 面向下游消费者的公共API,以及 src/types.ts 仍然是直接通配符传递。
许可证
阿帕奇-2.0