MCP Bash について
MCP Bash は、Claude Desktop などの MCP 対応クライアントからローカルマシンで Bash コマンドを実行できるようにするシンプルな MCP サーバーです。stdout と stderr を返し、コマンド間で作業ディレクトリを保持します。README では、このサーバーに重大なセキュリティリスクがあることが明記されています。
主な機能
- 01任意の Bash コマンドの実行
- 02stdout と stderr の返却
- 03set_cwd による作業ディレクトリの保持
- 04簡単なデプロイと拡張
活用シーン
- 01Claude によるテストの実行と検出された問題の修正
- 02クライアントから起動するコマンドラインでのコマンド実行
MCP 対応
このプロジェクトは MCP サーバーであり、set_cwd と execute_bash の関数を MCP クライアントに提供します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
MCP Bash
bash コマンドを実行するためのシンプルな Model-Context-Protocol(MCP)サーバーです。このプロジェクトでは、MCP サーバーインターフェースを介して bash コマンドを実行できますが、それに伴う潜在的なセキュリティリスクには十分注意してください。執筆時点では、公開されている同様のものが見つからなかったため、自分で作成しました。Claude Desktop にコードを書いてもらう際に便利です(テストを実行し、結果を評価して、見つかった問題を一度で修正できます)。
説明
MCP Bash は、クライアントアプリケーションから bash コマンドを実行するシンプルな方法を提供します。コマンドの実行を管理された環境で行い、実行したコマンドの stdout と stderr を返します。
主な機能:
- 任意の bash コマンドを実行
- コマンド実行間で作業ディレクトリを設定し、維持
- Model-Context-Protocol(MCP)を介したシンプルなインターフェース
- 簡単にデプロイおよび拡張可能
インストール
前提条件
- Python 3.10 以降
- pip またはその他のパッケージマネージャー
セットアップ
-
リポジトリをクローンします
git clone https://github.com/yourusername/mcp-bash.git cd mcp-bash -
仮想環境を作成して有効化します
python -m venv .venv source .venv/bin/activate # On Windows: .venv\Scripts\activate -
依存関係をインストールします
pip install -e .
使用方法
サーバーの起動
python -m mcp.cli.server --module server
Claude Desktop の設定
Claude Desktop で使用するには、次の内容を設定に追加します(通常は /Users//Library/Application Support/Claude/claude_desktop_config.json にあります。または、Claude Desktop の UI で「Settings -> Developer」を参照してください)。
{
"mcpServers": {
"Bash": {
"command": "/Users/<username>/.local/bin/uv",
"args": [
"run",
"--with",
"mcp[cli]",
"mcp",
"run",
"/path/to/server.py"
]
}
}
}
次に、Claude に「Bash MCP ツールを使って、現在のディレクトリにあるファイルを一覧表示して」と依頼します。
API の使用方法
サーバーは主に 2 つの関数を公開します。
set_cwd(path):bash コマンドの作業ディレクトリを設定しますexecute_bash(cmd):bash コマンドを実行し、stdout/stderr を返します
クライアントコードの例
from mcp.client import MCPClient
async def main():
# Connect to the MCP server
client = MCPClient("http://localhost:8000")
# Set working directory
await client.set_cwd("/path/to/your/directory")
# Execute a command
stdout, stderr = await client.execute_bash("ls -la")
print(f"Command output: {stdout}")
if stderr:
print(f"Error output: {stderr}")
if __name__ == "__main__":
import asyncio
asyncio.run(main())
セキュリティに関する考慮事項
このサーバーは bash コマンドを直接実行するため、適切に制限しないと致命的なセキュリティリスクになり得ます。LLM が rm -rf / のような危険なコマンドを実行するのを防ぐものはありません。個人で使用する場合は、リスクを上回る有用性があるかもしれませんが、デプロイする際は注意してください。
以下を検討してください:
- コンテナまたは制限された環境で実行する
- コマンドの検証や許可リストを追加する
- 適切なユーザー権限を設定して、ファイルシステムへのアクセスを制限する
ライセンス
このプロジェクトは MIT License のもとでライセンスされています。詳細は LICENSE ファイルを参照してください。
貢献
貢献を歓迎します。お気軽に Pull Request を送信してください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。