使用说明
bash命令mcp
一个高度复杂的Bash MCP服务器,用于安全、结构化的命令执行,并具有一流的后台作业编排。
重要安全警告
此服务器在运行它的计算机上执行shell命令。
如果你跑 bun run index.ts 命令直接在您的主机上运行,并具有您的用户权限。
除非您完全信任MCP客户端和提示,否则请使用Docker隔离执行。
要安装依赖项,请执行以下操作:
bun install
要运行stdio,请执行以下操作:
bun run index.ts
要在Streamable HTTP上运行:
BASH_COMMAND_MCP_TRANSPORT=http \
BASH_COMMAND_MCP_HOST=127.0.0.1 \
BASH_COMMAND_MCP_PORT=3000 \
bun run index.ts
要通过npm/npx(已发布的包)运行:
npx -y bash-command-mcp
为什么选择此服务器
- 高保真shell执行,具有清晰的退出代码语义。
- 高级后台流程生命周期控制(
run_background,wait_background,kill_background). - 通过每个进程的stdout/stderr日志文件内置可观察性。
- OpenTetry跟踪和生产可见性指标。
- 易于代理的人体工程学
cwd和env用于精确执行上下文的重写。
工具行为
工具:
run:在前台运行命令。 Args:command或cmd,timeoutSeconds(默认值60,min1;以上值86400带有提示),可选cwd,可选env.run_background:在后台启动命令,并将stdout/stderr写入日志文件。 Args:command或cmd,可选cwd,可选env.list_background:列出跟踪的后台进程,包括日志文件路径。kill_background:通过以下方式停止跟踪后台进程pid.tail_background:显示后台进程日志的最后N行。 Args:pid,可选lines(默认值200,最大值5000).wait_background:等待后台进程完成并返回最终状态/输出。 Args:pid,可选timeoutSeconds(默认值60,min1;以上值86400以提示结尾)。
开放遥测
此服务器包括用于跟踪和度量的内置OpenTetry仪器。
- OpenTetry软件包与服务器软件包一起安装。
- 遥测初始化,除非
OTEL_ENABLED=false. - 如果
OTEL_EXPORTER_OTLP_ENDPOINT设置后,跟踪/指标通过OTLP HTTP导出。 - 如果没有配置OTLP端点,则使用控制台导出器。
仪表化操作:
- 工具调用跨度
run,run_background,list_background,tail_background,wait_background,以及kill_background. - 后台生命周期跨度/计数器(
started,ended). - 工具调用、故障、超时和持续时间直方图的指标。
常见环境变量:
OTEL_ENABLED=true|falseOTEL_SERVICE_NAME=bash-command-mcpOTEL_SERVICE_VERSION=1.0.0OTEL_EXPORTER_OTLP_ENDPOINT=http://localhost:4318OTEL_METRIC_EXPORT_INTERVAL_MS=10000BASH_COMMAND_MCP_LOG_DIR=/path/to/log-dir
示例(本地主机上的OTLP收集器):
OTEL_ENABLED=true \
OTEL_EXPORTER_OTLP_ENDPOINT=http://localhost:4318 \
OTEL_SERVICE_NAME=bash-command-mcp \
npx -y bash-command-mcp
运输
此服务器支持两种传输方式:
stdio对于本地、流程衍生的集成。http用于使用Streamable HTTP的远程或网络可访问的MCP客户端。
默认行为保持不变 stdio 因此现有的桌面和CLI设置可以继续工作。
HTTP模式的环境变量:
BASH_COMMAND_MCP_TRANSPORT=http|stdioBASH_COMMAND_MCP_HOST=127.0.0.1BASH_COMMAND_MCP_PORT=3000BASH_COMMAND_MCP_ALLOWED_HOSTS=localhost,127.0.0.1,[::1]
HTTP模式在绑定到环回地址时默认使用主机标头验证。如果你绑定到 0.0.0.0 或 ::,在中提供明确的允许列表 BASH_COMMAND_MCP_ALLOWED_HOSTS.
码头工人
塑造形象:
docker build -t bash-command-mcp .
在装载了本地文件夹的情况下运行 /workspace:
docker run --rm -i -v "$(pwd):/workspace" bash-command-mcp
通过流式HTTP运行:
docker run --rm -p 3000:3000 \
-e BASH_COMMAND_MCP_TRANSPORT=http \
-e BASH_COMMAND_MCP_HOST=0.0.0.0 \
-e BASH_COMMAND_MCP_PORT=3000 \
bash-command-mcp
/workspace 地图解释:
- 左侧(
$(pwd))是主机上的一个文件夹。 - 右侧(
/workspace)是容器内的路径。 - 此MCP服务器运行的命令应针对以下文件
/workspace;这些更改将写回映射的主机文件夹。
对于Docker中的HTTP模式,绑定到 0.0.0.0 并发布端口 -p。如果将容器暴露在localhost之外,请设置 BASH_COMMAND_MCP_ALLOWED_HOSTS 您要允许的主机名。
例子:
- 如果你的主人有
./project/file.txt然后从以下位置运行容器./project,容器中也有相同的文件/workspace/file.txt.
