Podman MCP Server について
Podman MCP Server は、Podman と Docker の両方に対応したコンテナランタイム向けの MCP サーバーです。AI クライアントからコンテナ、イメージ、ネットワーク、ボリュームを管理したい開発者や運用担当者向けです。バックエンドは自動検出するか、api と cli の実装を指定できます。
主な機能
- 01コンテナの一覧表示、実行、停止、削除、詳細確認
- 02イメージのビルド、プル、プッシュ、削除
- 03ネットワークとボリュームの一覧表示
- 04api と cli バックエンドの自動検出または指定
- 05STDIO と HTTP のトランスポートモード
活用シーン
- 01AI クライアントから実行中のコンテナを一覧表示して確認
- 02Containerfile からイメージをビルドしてレジストリへプッシュ
- 03Claude Desktop や VS Code からローカルコンテナを管理
MCP 対応
本プロジェクトは MCP サーバーとして、コンテナ、イメージ、ネットワーク、ボリュームに関するツールを STDIO または HTTP 経由で MCP クライアントに公開します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
Podman MCP Server
✨ 機能 | 🚀 はじめに | 📚 ドキュメント | 🎥 デモ | ⚙️ 設定 | 🛠️ ツール | 🧑💻 開発
✨ 機能
Podman と Docker に対応したコンテナランタイム向けの、強力で柔軟な MCP サーバーです。
🚀 はじめに
Claude Desktop
npx を使用する
npm がインストールされている場合、Claude Desktop で podman-mcp-server を使い始める最も手早い方法です。
claude_desktop_config.json を開き、mcp サーバーを mcpServers のリストに追加します:
{
"mcpServers": {
"podman": {
"command": "npx",
"args": [
"-y",
"podman-mcp-server@latest"
]
}
}
}
VS Code / VS Code Insiders
以下のいずれかのリンクをクリックして、Podman MCP サーバーをインストールします:
または、次のコマンドを実行して拡張機能を手動でインストールできます:
# For VS Code
code --add-mcp '{"name":"podman","command":"npx","args":["-y","podman-mcp-server@latest"]}'
# For VS Code Insiders
code-insiders --add-mcp '{"name":"podman","command":"npx","args":["-y","podman-mcp-server@latest"]}'
Goose CLI
Goose CLI は、AI エージェントを手軽に(そして安価に)使い始める最も簡単な方法です。
npm を使用する
npm がインストールされている場合、podman-mcp-server を使い始める最も手早い方法です。
Goose の config.yaml を開き、mcp サーバーを mcpServers のリストに追加します:
extensions:
podman:
command: npx
args:
- -y
- podman-mcp-server@latest
📚 ドキュメント
詳細なセットアップガイド、設定リファレンス、機能仕様については、ドキュメント を参照してください。
🎥 デモ
⚙️ 設定
Podman MCP サーバーは、コマンドライン(CLI)引数を使って設定できます。
CLI 実行ファイルは、npx を使うか、最新リリースのバイナリをダウンロードして実行できます。
# Run the Podman MCP server using npx (in case you have npm installed)
npx podman-mcp-server@latest --help
# Run the Podman MCP server using the latest release binary
./podman-mcp-server --help
設定オプション
| オプション | 説明 |
|---|---|
--port, -p | /mcp の Streamable HTTP エンドポイントと /sse の SSE エンドポイントを使用して、HTTP モードで MCP サーバーを起動します。 |
--output-format, -o | リストコマンドの出力形式です。text(デフォルト。人が読みやすい表形式)または json を指定します。 |
--podman-impl | 使用する Podman の実装です。指定しない場合は自動検出されます。 |
--sse-port | 非推奨です。 代わりに --port を使用してください。SSE 専用モードで MCP サーバーを起動します。 |
--sse-base-url | 非推奨です。 エンドポイントメッセージの送信時に使用する SSE の公開ベース URL です。 |
トランスポートモード
サーバーは複数のトランスポートモードをサポートしています。
- STDIO モード(デフォルト)- 標準入力/出力を介して通信します
- HTTP モード(
--port)- Streamable HTTP と SSE の両方のエンドポイントを備えた最新の HTTP トランスポートです - SSE 専用モード(
--sse-port)- 従来の Server-Sent Events トランスポートです(非推奨)
# Start HTTP server on port 8080 (Streamable HTTP at /mcp and SSE at /sse)
podman-mcp-server --port 8080
# Legacy SSE-only server on port 8080 (deprecated, use --port instead)
podman-mcp-server --sse-port 8080
Podman の実装
サーバーは複数の Podman バックエンド実装をサポートしています。
| 実装 | 説明 | 優先度 |
|---|---|---|
api | Unix ソケット経由の Podman REST API | 100(優先) |
cli | Podman/Docker CLI ラッパー | 50(フォールバック) |
デフォルトでは、サーバーは利用可能な最適な実装を自動検出します。
Podman ソケットが利用可能な場合は api 実装が優先され、そうでない場合はフォールバックとして cli 実装が使用されます。
特定の実装を強制的に使用するには、--podman-impl フラグを使用します。
# Force CLI implementation
podman-mcp-server --podman-impl=cli
# Force API implementation (requires Podman socket)
podman-mcp-server --podman-impl=api
api 実装は Unix ソケット経由で Podman REST API と直接通信します。一方、cli 実装は podman または docker バイナリをシェルから実行します。
🛠️ ツール
コンテナー
-
container_inspect - 指定したコンテナー ID または名前の Docker または Podman コンテナーについて、低レベルの情報と設定を表示します
name(string) (required) - 情報を表示する Docker または Podman コンテナーの ID または名前
-
container_list - 実行中の Docker または Podman コンテナーの情報を出力します
-
container_logs - 指定したコンテナー ID または名前の Docker または Podman コンテナーのログを表示します
name(string) (required) - ログを表示する Docker または Podman コンテナーの ID または名前
-
container_remove - 指定したコンテナー ID または名前の Docker または Podman コンテナーを削除します(rm)
name(string) (required) - 削除する Docker または Podman コンテナーの ID または名前
-
container_run - 指定したイメージ名の Docker または Podman コンテナーを実行します
environment(array) - コンテナーに設定する環境変数です。形式:=。例:FOO=bar。(任意。環境変数を設定する場合のみ追加してください)imageName(string) (required) - 実行する Docker または Podman コンテナーイメージの名前ports(array) - ホスト上に公開するポートのマッピングです。形式::。例:8080:80。(任意。ポートを公開する場合のみ追加してください)
-
container_stop - 指定したコンテナー ID または名前の実行中の Docker または Podman コンテナーを停止します
name(string) (required) - 停止する Docker または Podman コンテナーの ID または名前
イメージ
-
image_build - Dockerfile、Podmanfile、または Containerfile から Docker または Podman イメージをビルドします
containerFile(string) (required) - イメージのビルド元となる Dockerfile、Podmanfile、または Containerfile の絶対パスimageName(string) - ビルドが正常に完了した場合に、生成されたイメージに割り当てる名前を指定します(--tag、-t)
-
image_list - ローカルマシン上の Docker または Podman イメージを一覧表示します
-
image_pull - Docker または Podman コンテナーイメージをレジストリからローカルマシンのストレージにコピー(プル)します
imageName(string) (required) - プルする Docker または Podman コンテナーイメージの名前
-
image_push - ローカルマシンのストレージからレジストリに Docker または Podman コンテナーイメージ、マニフェストリスト、またはイメージインデックスをプッシュします
imageName(string) (required) - プッシュする Docker または Podman コンテナーイメージの名前
-
image_remove - ローカルマシンのストレージから Docker または Podman イメージを削除します
imageName(string) (required) - 削除する Docker または Podman コンテナーイメージの名前
ネットワーク
- network_list - 利用可能なすべての Docker または Podman ネットワークを一覧表示します
ボリューム
- volume_list - 利用可能なすべての Docker または Podman ボリュームを一覧表示します
🧑💻 開発
mcp-inspector での実行
プロジェクトをコンパイルし、mcp-inspector で Podman MCP サーバーを実行して、MCP サーバーを検査します。
# Compile the project
make build
# Run the Podman MCP server with mcp-inspector
npx @modelcontextprotocol/inspector@latest $(pwd)/podman-mcp-server
mcp-name: io.github.manusa/podman-mcp-server
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。