概要
Podman MCP Server (manusa/podman-mcp-server) は、Model Context Protocol (MCP) を通じてAIアシスタントがコンテナランタイムと相互作用するための標準化されたツールインターフェースを提供するサーバである。
対応するコンテナランタイムは、PodmanおよびDockerである。
Go言語で開発されており、Apache 2.0ライセンスの下で公開されている。
Claude Desktop、Claude Code、VS Code、HTTP/SSEモードなど、複数のMCPクライアント環境で動作する。
このサーバを使用することにより、AIアシスタントがコンテナやイメージの操作、ネットワーク・ボリュームの管理を自然言語による指示で自動化できるようになる。
コンテナの起動・停止・削除、イメージのビルド・プル・プッシュなど、13以上のツールを提供する。
主な特徴は以下の通りである。
- MCP標準に準拠したコンテナランタイム操作インターフェース
- PodmanおよびDocker両方のコンテナランタイムに対応
- Claude Desktop、Claude Code、VS Code等の主要なMCPクライアントをサポート
- HTTPモード (Streamable HTTP / SSE) によるリモートアクセスに対応
- Windows、MacOS、Linuxの主要なOSで動作
Podman MCP Serverの機能
Podman MCP Serverは、コンテナ操作、イメージ操作、ネットワーク・ボリューム管理の3つのカテゴリで合計13以上のツールを提供する。
コンテナ操作
コンテナのライフサイクル管理に関するツールを以下に示す。
| ツール | 説明 |
|---|---|
| container_list | 実行中のコンテナを一覧表示する |
| container_inspect | 指定されたコンテナの詳細情報を取得する |
| container_logs | コンテナのログを表示する |
| container_run | 指定されたイメージでコンテナを実行する。パラメータとして、イメージ名、ポートマッピング、環境変数などを指定できる。 |
| container_stop | 実行中のコンテナを停止する |
| container_remove | コンテナを削除する |
イメージ操作
コンテナイメージの管理に関するツールを以下に示す。
| ツール | 説明 |
|---|---|
| image_list | ローカルリポジトリのイメージを一覧表示する |
| image_build | Dockerfile / Podmanfile / Containerfileからイメージをビルドする |
| image_pull | レジストリからイメージをプルする |
| image_push | イメージをレジストリにプッシュする |
| image_remove | イメージを削除する |
その他のリソース管理
ネットワークおよびボリュームの管理に関するツールを以下に示す。
| ツール | 説明 |
|---|---|
| network_list | Podman / Dockerネットワークを一覧表示する |
| volume_list | Podman / Dockerボリュームを一覧表示する |
動作要件
共通の要件
OS問わず共通して必要な要件を以下に示す。
- Node.js環境
npxコマンドを使用してPodman MCP Serverを実行するために必要
- PodmanまたはDockerのインストール
- コンテナランタイムとして、PodmanまたはDockerのいずれかが必要
- 適切なソケットアクセス権限
- MCPサーバがコンテナランタイムのソケットにアクセスできる権限が必要
Windowsの要件
- Windows 10 / 11 (Pro、Enterprise)
- WSL 2 (Windows Subsystem for Linux v2) が有効であること
- Podman Desktop のインストールを推奨
- PodmanはWSL 2内の仮想化Linuxディストリビューション上で動作する
MacOSの要件
- MacOS 11.0 以降を推奨
- Podman Desktop のインストールを推奨
- Intel・Apple Silicon (M1 / M2 / M3) の両方に対応
- 各Podmanマシンは仮想マシンとして実装される
Linuxの要件
- Fedora、CentOS、Debian、Ubuntu、Arch、Alpine等の主要なディストリビューションに対応
- Podmanはカーネルレベルで統合されており、仮想化レイヤーは不要
- rootlessモード (非rootユーザでの実行) をサポート
Podmanのインストール
Windowsの場合
wingetを使用してPodmanをインストールする場合は、以下のコマンドを実行する。
winget install -e --id RedHat.Podman
MSIインストーラを使用する場合は、以下のURLからダウンロードする。
インストール後、以下のコマンドでPodmanのバージョンを確認し、マシンを起動する。
podman --version podman machine start
MacOSの場合
Homebrewを使用してPodmanをインストールする場合は、以下のコマンドを実行する。
brew install podman
インストーラーを使用する場合は、以下のURLからMacOS用のインストーラーをダウンロードする。
インストール後、以下のコマンドでPodmanのバージョンを確認し、マシンを起動する。
podman --version podman machine start
Linuxの場合
使用しているLinuxディストリビューションに合わせて、以下のコマンドでPodmanをインストールする。
# RHEL sudo dnf install podman # SUSE sudo zypper install podman
インストール後、以下のコマンドでPodmanのバージョンおよびコンテナの動作を確認する。
podman --version podman ps
設定
設定ファイルの場所
各MCPクライアントの設定ファイルの場所は以下の通りである。
Claude Desktopの設定ファイルを以下に示す。
- Linux
- ~/.config/Claude/claude_desktop_config.json
- MacOS
- ~/Library/Application Support/Claude/claude_desktop_config.json
- Windows
- %APPDATA%\Claude\claude_desktop_config.json
Claude Codeの設定ファイルを以下に示す。
- Linux
- ~/.config/claude/settings.json
- MacOS
- ~/Library/Application Support/claude/settings.json
- Windows
- %APPDATA%\claude\settings.json
Claude Desktopでの設定
Claude Desktopの設定ファイルに以下の内容を追記する。
{
"mcpServers": {
"podman": {
"command": "npx",
"args": ["-y", "podman-mcp-server@latest"]
}
}
}
設定ファイルを保存した後、Claude Desktopを再起動して設定を反映する。
Claude Codeでの設定
Claude Codeでは、claude mcp add コマンドを使用してMCPサーバを追加できる。
HTTPモードを使用する場合は、まずPodman MCP Serverを起動する。
npx podman-mcp-server@latest --port 8080
次に、以下のコマンドでMCPサーバをClaude Codeに登録する。
claude mcp add --transport http podman http://localhost:8080
stdioモードを使用する場合は、設定ファイルに以下の内容を記述する。
{
"mcpServers": {
"podman": {
"command": "npx",
"args": ["-y", "podman-mcp-server@latest"]
}
}
}
VS Codeでの設定
VS Codeでは、以下のコマンドを実行してPodman MCP Serverを追加できる。
code --add-mcp '{"name":"podman","command":"npx","args":["podman-mcp-server@latest"]}'
HTTPモードでの設定
HTTPモードを使用する場合は、以下のコマンドでサーバを起動する。
npx podman-mcp-server@latest --port 8080
起動後、以下のエンドポイントでアクセスできる。
- Streamable HTTP
- SSE (Server-Sent Events)
環境変数の設定
下表に、Podman MCP Serverの動作をカスタマイズするための環境変数・オプションを示す。
| オプション / 環境変数 | 説明 |
|---|---|
--podman-impl |
使用するコンテナランタイムを指定する。 指定可能な値は podman または docker
|
--output-format |
ツールの出力フォーマットを指定する。 デフォルト値は table、json も指定可能
|
DOCKER_HOST |
コンテナランタイムのソケットパスを指定する環境変数 Linuxでrootlessモードを使用する場合は unix://$XDG_RUNTIME_DIR/podman/podman.sock を指定する。
|
使用方法
Podman MCP Serverの各ツールは、AIアシスタントが自然言語の指示を受けて自動的に呼び出す。
コンテナの操作例
コンテナの実行・管理に関する操作例を以下に示す。
- nginxコンテナを起動して、ホストの8080ポートにマッピングする場合
# プロンプト例 : nginxコンテナをポート8080で起動してください。
- MySQLコンテナを環境変数付きで起動する場合
# プロンプト例 : MySQLコンテナをルートパスワード「secret123」で起動してください。
下表に、利用可能なツールと対応する操作を示す。
| ツール名 | 操作内容 | 主なパラメータ |
|---|---|---|
| container_list | 実行中のコンテナを一覧表示 | なし |
| container_run | コンテナを実行 | イメージ名、ポートマッピング、環境変数 |
| container_stop | コンテナを停止 | コンテナID |
| container_remove | コンテナを削除 | コンテナID |
| container_logs | コンテナのログを表示 | コンテナID |
| container_inspect | コンテナの詳細情報を取得 | コンテナID |
イメージの操作例
イメージのビルド・管理に関する操作例を以下に示す。
- Dockerfileからイメージをビルドする場合
# プロンプト例 : カレントディレクトリのDockerfileを使って「myapp:latest」イメージをビルドしてください。
- レジストリからイメージをプルする場合
# プロンプト例 : nginx:latestイメージをプルしてください。
下表に、利用可能なツールと対応する操作を示す。
| ツール名 | 操作内容 | 主なパラメータ |
|---|---|---|
| image_list | ローカルイメージを一覧表示 | なし |
| image_build | イメージをビルド | Containerfileパス、イメージ名 |
| image_pull | イメージをプル | イメージ名 |
| image_push | イメージをプッシュ | イメージ名 |
| image_remove | イメージを削除 | イメージ名 |
トラブルシューティング
共通の問題
OS問わず発生する可能性がある問題と対処法を以下に示す。
| 問題 | 対処法 |
|---|---|
| npxコマンドが動作しない | Node.js LTS版がインストールされているか確認する。npm cache clean --force を実行してキャッシュをクリアする。
|
| NVMを使用している場合に npxが見つからない | NVMで管理されているNode実行ファイルへの完全なパスを設定ファイルに指定する。 |
| Permission deniedエラーが発生する | 環境変数 DOCKER_HOST が正しく設定されているか確認する。Podmanソケットが有効化されているか確認する。 |
| Connection refusedエラーが発生する | Podman Machine または Podmanソケットが起動しているか確認する。 |
Windowsでの問題
Windows環境で発生する可能性がある問題と対処法を以下に示す。
| 問題 | 対処法 |
|---|---|
| WSL 2のパス問題 | Windowsパス(C:\Users\user\project)を WSLパス(/mnt/c/Users/user/project)に変換して使用する。 |
| Podman DesktopとCLIの連携が取れない | podman machine list でマシンの状態を確認する。podman machine set --default でデフォルトマシンを設定する。
|
MacOSでの問題
MacOS環境で発生する可能性がある問題と対処法を以下に示す。
| 問題 | 対処法 |
|---|---|
| Apple Silicon(M1 / M2 / M3)でのイメージ互換性の問題 | プル時に --arch arm64 オプションを使用する。例: podman pull --arch arm64 image_name
|
| SSHトンネリングの接続問題 | podman system connection list でPodman Machineへの接続状態を確認する。
|
Linuxでの問題
Linux環境で発生する可能性がある問題と対処法を以下に示す。
| 問題 | 対処法 |
|---|---|
| rootlessソケットが見つからない | 以下のコマンドでPodmanソケットを有効化する。systemctl --user enable --now podman.socket
|
| SELinuxによるアクセス拒否 | ボリュームマウント時に :z フラグを追加してSELinuxラベルを設定する。
|
| ユーザグループの権限不足 | 以下のコマンドでユーザをpodmanグループに追加する。sudo usermod -aG podman $USERグループの変更を反映するために、1度ログアウトして再ログインする。 |