关于 bash-command-mcp
bash-command-mcp 为需要结构化执行 Shell 命令的 Agent 和客户端提供 MCP 服务。除前台运行外,还可管理带日志的后台任务并提供 OpenTelemetry 监测;命令在服务所在机器上执行。
主要功能
- 01前台执行 Shell 命令
- 02启动和控制后台任务
- 03列出进程并查看日志末尾
- 04覆盖工作目录和环境变量
- 05提供 OpenTelemetry 跟踪与指标
适用场景
- 01通过 MCP 客户端运行 Shell 命令
- 02监控长时间运行的后台进程
- 03检查命令输出和退出状态
- 04收集命令执行的遥测数据
MCP 相关
向 MCP 客户端提供 Shell 执行和后台进程管理工具。支持 stdio 和 Streamable HTTP 传输。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
npx -y bash-command-mcpOTEL_ENABLEDEnable or disable OpenTelemetry instrumentation (`true` or `false`).OTEL_SERVICE_NAMEOpenTelemetry service name override.OTEL_SERVICE_VERSIONOpenTelemetry service version override.OTEL_EXPORTER_OTLP_ENDPOINTOTLP HTTP endpoint for exporting OpenTelemetry traces and metrics (for example `http://localhost:4318`).OTEL_METRIC_EXPORT_INTERVAL_MSOpenTelemetry metrics export interval in milliseconds.BASH_COMMAND_MCP_LOG_DIRDirectory used to store background process stdout/stderr log files.本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。
工具
6收录的工具列表 · 更新于 3 周前
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| cmd | any | 否 | 以字符串或字符串数组形式提供的命令。 |
| cwd | string | 否 | 工作目录覆盖值。 |
| env | object | 否 | 命令的环境变量覆盖值。 |
| command | any | 否 | 以字符串或字符串数组形式提供的命令。 |
| timeoutSeconds | integer | 否 | 执行超时时间(秒)。默认值为 60。 |
详细介绍
bash-command-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 日志文件。
- 提供 OpenTelemetry 跟踪和指标,支持生产环境可视化。
- 符合 Agent 使用习惯,可通过
cwd和env覆盖项精确指定执行上下文。
工具行为
工具:
run:在前台运行命令。 参数:command或cmd、timeoutSeconds(默认值为60,最小值为1;超过86400的值会被限制,并给出提示),可选的cwd、可选的env。run_background:在后台启动命令,并将 stdout/stderr 写入日志文件。 参数:command或cmd、可选的cwd、可选的env。list_background:列出已跟踪的后台进程,包括日志文件路径。kill_background:根据pid停止已跟踪的后台进程。tail_background:显示后台进程日志的最后 N 行。 参数:pid、可选的lines(默认值为200,最大值为5000)。wait_background:等待后台进程完成,并返回最终状态和输出。 参数:pid、可选的timeoutSeconds(默认值为60,最小值为1;超过86400的值会被限制,并给出提示)。
OpenTelemetry
此服务内置了用于跟踪和指标的 OpenTelemetry 插桩。
- OpenTelemetry 软件包会随服务软件包一同安装。
- 除非设置了
OTEL_ENABLED=false,否则会初始化遥测功能。 - 如果设置了
OTEL_EXPORTER_OTLP_ENDPOINT,跟踪数据和指标会通过 OTLP HTTP 导出。 - 如果未配置 OTLP 端点,则使用控制台导出器。
插桩操作:
run、run_background、list_background、tail_background、wait_background和kill_background的工具调用 span。- 后台生命周期 span/计数器(
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 Collector):
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,因此现有的桌面和命令行配置可以继续正常工作。
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 模式默认使用 Host 标头验证。如果绑定到 0.0.0.0 或 ::,请在 BASH_COMMAND_MCP_ALLOWED_HOSTS 中提供明确的允许列表。
Docker
构建镜像:
docker build -t bash-command-mcp .
将本地文件夹挂载到 /workspace 后运行:
docker run --rm -i -v "$(pwd):/workspace" bash-command-mcp
通过 Streamable 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访问同一文件。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。