bash-command-mcp について
bash-command-mcpは、シェルコマンドを構造化して実行したいエージェントやクライアント向けのMCPサーバーです。フォアグラウンド実行に加え、ログ付きのバックグラウンドジョブ管理とOpenTelemetry計測に対応し、コマンドはサーバーの稼働マシン上で実行されます。
主な機能
- 01フォアグラウンドでのシェルコマンド実行
- 02バックグラウンドジョブの開始と制御
- 03プロセス一覧とログ末尾の表示
- 04作業ディレクトリと環境変数の指定
- 05OpenTelemetryのトレースとメトリクス
活用シーン
- 01MCPクライアントからシェルコマンドを実行
- 02長時間動作するバックグラウンドプロセスを監視
- 03コマンド出力と終了ステータスを確認
- 04コマンド実行のテレメトリーを収集
MCP 対応
シェル実行とバックグラウンドプロセス管理のツールをMCPクライアントに提供します。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 サーバーです。
重要なセキュリティ警告
このサーバーは、実行されているマシン上でシェルコマンドを実行します。
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
このサーバーを選ぶ理由
- 明確な終了コードのセマンティクスを備えた、高精度なシェル実行機能。
- 高度なバックグラウンドプロセスのライフサイクル制御(
run_background、wait_background、kill_background)。 - プロセスごとの stdout/stderr ログファイルによる、組み込みの可観測性。
- 本番環境での可視性を高める OpenTelemetry のトレースとメトリクス。
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のツール呼び出しスパン。- バックグラウンドのライフサイクルスパン/カウンター(
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
例(localhost 上の OTLP Collector):
OTEL_ENABLED=true \
OTEL_EXPORTER_OTLP_ENDPOINT=http://localhost:4318 \
OTEL_SERVICE_NAME=bash-command-mcp \
npx -y bash-command-mcp
トランスポート
このサーバーは、次の 2 種類のトランスポートをサポートしています。
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
イメージをビルドします。
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 サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。