containerport について
containerportは、ホストのdockerバイナリを通じて日常的なDockerコンテナ操作を行うMCPサーバー兼コマンドラインツールです。コンテナ管理向けに、コンテナ、イメージ、ログ、ボリュームの基本操作に絞り、Dockerの広範なカタログやゲートウェイ機能は対象外です。
主な機能
- 01コンテナの一覧表示、確認、起動、停止、削除
- 02ポート、環境値、コマンドを指定して実行
- 03イメージの一覧表示と取得
- 04コンテナログの取得
- 05ボリュームの一覧表示
活用シーン
- 01稼働中または停止中のコンテナを確認
- 02コンテナの起動と管理
- 03コンテナログの取得
- 04利用可能なイメージとボリュームの一覧表示
MCP 対応
MCPサーバーは、コンテナのライフサイクル操作、イメージの一覧表示と取得、ログ取得、ボリューム一覧など、10種類のDocker操作をツールとして公開します。呼び出しはホストのdockerバイナリを通じて実行されます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
10掲載時のツール一覧 · 1 週間前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| all | boolean | いいえ | true の場合、実行中のコンテナに加えて停止中のコンテナも含めます。 |
詳細
containerport
containerport は、日常的な Docker コンテナ作業のための小規模な MCP サーバー兼 CLI です。Docker CLI に直接対応する定義済みのコアサブセット(コンテナの一覧表示、詳細確認、実行、起動、停止、削除、イメージの一覧表示と取得、コンテナログの読み取り、ボリュームの一覧表示という 10 個のツール)を、クリーンルーム方式で再構築したものです。
これは、Docker の MCP カタログ/ツールキットゲートウェイを意図したものではありません。Compose のサポート、イメージのビルド、ネットワークや Swarm の管理、レジストリ認証、コンテナ内での exec、カタログ/ゲートウェイツールはなく、エージェントがよく使うコンテナ操作だけを、ホストの docker バイナリを通じて忠実に実行します。
各呼び出しは引数配列として構築され、execFile のセマンティクスで実行されます。シェル文字列は決して使わないため、イメージ名、環境変数の値、ポートがシェル構文として再解釈されることはありません。run-container に渡す command は、ホストのシェルではなく、コンテナ自身の sh -c を通じて実行されます。エグゼキューターは差し替え可能で、テストスイートでは偽のエグゼキューターを使って正確な引数配列を検証しています。
ホストでは、動作する docker CLI が必要です。docker が見つからない場合、呼び出しは捏造した結果ではなく、基盤となる spawn エラー(ENOENT)をそのまま返して失敗します。公開されているコンテナイメージには docker バイナリは含まれていません。ホスト側のエグゼキューター(たとえば、Docker ソケットをマウントするワークフロー)を想定しており、その旨は Dockerfile に記載されています。
インストール
npx @reneturcios/containerport list-containers --all
docker run -i ghcr.io/cloudcorprecords/containerport
CLI
containerport list-containers [--all]
containerport inspect-container <container_id>
containerport run-container <image> [--name n] [--port 8080:80] [--env KEY=val] [--command "echo hi"]
containerport start-container <container_id>
containerport stop-container <container_id>
containerport remove-container <container_id> [--force]
containerport list-images
containerport pull-image <image>
containerport get-container-logs <container_id> [--tail 100]
containerport list-volumes
containerport --version
終了コード:0 は成功、1 は docker エラー、2 は使用方法のエラーです。
MCP サーバー
npx -y @reneturcios/containerport mcp
{
"mcpServers": {
"containerport": {
"command": "npx",
"args": ["-y", "@reneturcios/containerport", "mcp"]
}
}
}
ツール
| ツール | 入力 | 説明 |
|---|---|---|
list_containers | all(ブール値、省略可能) | docker ps [--all] --format json を実行して解析します。 |
inspect_container | container_id(必須) | docker inspect を実行し、単一のドキュメントを返します。 |
run_container | image(必須)、name、ports[]、env[]、command | docker run -d を実行し、新しいコンテナ ID を返します。 |
start_container | container_id(必須) | docker start を実行します。 |
stop_container | container_id(必須) | docker stop を実行します。 |
remove_container | container_id(必須)、force | docker rm [-f] を実行します。 |
list_images | — | docker images --format json を実行して解析します。 |
pull_image | image(必須) | docker pull を実行します。 |
get_container_logs | container_id(必須)、tail | docker logs [--tail n] を実行します。 |
list_volumes | — | docker volume ls を実行し、ドライバー名とボリューム名のペアを解析します。 |
エグゼキューターの失敗(docker バイナリが見つからない、デーモンエラー、存在しないコンテナなど)は、基盤となるメッセージを含むツールエラーとして報告されます。
開発
npm install
npm run build
npm test
npm run dev
テストはすべて偽のエグゼキューターで実行され、正確な引数配列、出力の解析、エラーの伝播を検証します。実際の Docker デーモンには接続しません。
ライセンス
MIT — LICENSE を参照してください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。