hybrid server
The server is able to function both locally and remotely, depending on the configuration or use case.
Integrations
Uses Docker for container isolation as a security layer when executing tools on behalf of AI systems.
Designed to run on Linux systems with features like AppArmor profiles and Firejail for sandboxing.
Uses Podman as an alternative to Docker for container isolation when executing tools on behalf of AI systems.
コンテナ-MCP
大規模言語モデルに代わってツールを実行するためのモデル コンテキスト プロトコル (MCP) の安全なコンテナー ベースの実装。
概要
Container-MCPは、コードの実行、コマンドの実行、ファイルへのアクセス、大規模言語モデルから要求されたWeb操作を安全に実行するためのサンドボックス環境を提供します。MCPプロトコルを実装することで、これらの機能をAIシステムが安全に検出・呼び出しできるツールとして公開します。
このアーキテクチャでは、多層セキュリティを備えたドメイン固有のマネージャー パターンを使用して、適切な制限のある分離された環境でツールが実行されるようにし、潜在的に有害な操作からホスト システムを保護します。
主な特徴
- 多層セキュリティ
- Podman/Docker を使用したコンテナの分離
- アクセスを制限するためのAppArmorプロファイル
- 追加の分離のためのFirejailサンドボックス
- リソース制限(CPU、メモリ、実行時間)
- パストラバーサル防止
- 許可された拡張機能の制限
- MCPプロトコルの実装
- 標準化されたツールの検出と実行
- リソース管理
- 非同期実行のサポート
- ドメイン固有のマネージャー
BashManager
: 安全なコマンド実行PythonManager
: サンドボックス化された Python コード実行FileManager
: 安全なファイル操作WebManager
: 安全なウェブブラウジングとスクレイピング
- 設定可能な環境
- 環境変数による詳細な設定
- カスタム環境のサポート
- 開発と生産モード
利用可能なツール
システム操作
system_run_command
安全なサンドボックス環境で bash コマンドを実行します。
- パラメータ:
command
(文字列、必須): 実行するbashコマンドworking_dir
(文字列、オプション): 作業ディレクトリ (サンドボックスでは無視されます)
- 戻り値:
stdout
(文字列): コマンドの標準出力stderr
(文字列): コマンドの標準エラーexit_code
(整数): コマンドの終了コードsuccess
(ブール値): コマンドが正常に完了したかどうか
system_run_python
安全なサンドボックス環境で Python コードを実行します。
- パラメータ:
code
(文字列、必須): 実行するPythonコードworking_dir
(文字列、オプション): 作業ディレクトリ (サンドボックスでは無視されます)
- 戻り値:
output
(文字列):コードからの出力を印刷するerror
(文字列): コードからのエラー出力result
(任意): オプションの戻り値(コードが_
変数を設定している場合に使用可能)success
(ブール値): コードが正常に実行されたかどうか
system_env_var
環境変数の値を取得します。
- パラメータ:
var_name
(文字列、オプション): 取得する特定の変数
- 戻り値:
variables
(オブジェクト): 環境変数の辞書- 要求され
requested_var
変数の値(var_nameが指定されている場合)
ファイル操作
file_read
ファイルの内容を安全に読み取ります。
- パラメータ:
path
(文字列、必須): ファイルへのパス(サンドボックスのルートからの相対パス)encoding
(文字列、オプション): ファイルのエンコーディング(デフォルト: "utf-8")
- 戻り値:
content
(文字列): ファイルの内容size
(整数): ファイルサイズ(バイト単位)modified
(float): 最終更新日時success
(ブール値): 読み取りが成功したかどうか
file_write
コンテンツを安全にファイルに書き込みます。
- パラメータ:
path
(文字列、必須): ファイルへのパス(サンドボックスのルートからの相対パス)content
(文字列、必須): 書き込むコンテンツencoding
(文字列、オプション): ファイルのエンコーディング(デフォルト: "utf-8")
- 戻り値:
success
(ブール値): 書き込みが成功したかどうかpath
(文字列): 書き込まれたファイルへのパス
file_list
ディレクトリの内容を安全に一覧表示します。
- パラメータ:
path
(文字列、オプション): ディレクトリへのパス (デフォルト: "/")pattern
(文字列、オプション):ファイルをフィルタリングするためのglobパターン
- 戻り値:
entries
(配列):メタデータを含むディレクトリエントリのリストpath
(文字列): リストされたディレクトリパスsuccess
(boolean): リストが成功したかどうか
file_delete
ファイルを安全に削除します。
- パラメータ:
path
(文字列、必須): 削除するファイルのパス
- 戻り値:
success
(ブール値): 削除が成功したかどうかpath
(文字列): 削除されたファイルへのパス
file_move
ファイルを安全に移動または名前を変更します。
- パラメータ:
source
(文字列、必須): ソースファイルのパスdestination
(文字列、必須): 宛先ファイルパス
- 戻り値:
success
(ブール値): 移動が成功したかどうかsource
(文字列): 元のファイルパスdestination
(文字列):新しいファイルパス
ウェブオペレーション
web_search
検索エンジンを使用して Web 上の情報を検索します。
- パラメータ:
query
(文字列、必須): 検索するクエリ
- 戻り値:
results
(配列):検索結果のリストquery
(文字列): 元のクエリ
web_scrape
特定の URL をスクレイピングしてコンテンツを返します。
- パラメータ:
url
(文字列、必須): スクレイピングするURLselector
(文字列、オプション):特定のコンテンツを対象とする CSS セレクター
- 戻り値:
content
(文字列):スクレイピングされたコンテンツurl
(文字列): スクレイピングされたURLtitle
(文字列): ページのタイトルsuccess
(boolean): スクレイピングが成功したかどうかerror
(文字列): スクレイピングに失敗した場合のエラーメッセージ
web_browse
Playwright を使用して Web サイトをインタラクティブに閲覧します。
- パラメータ:
url
(文字列、必須): ブラウジングセッションの開始URL
- 戻り値:
content
(文字列): ページのHTMLコンテンツurl
(文字列): リダイレクト後の最終URLtitle
(文字列): ページのタイトルsuccess
(ブール値): ブラウジングが成功したかどうかerror
(文字列): 閲覧に失敗した場合のエラーメッセージ
実行環境
Container-MCP は、それぞれ独自のセキュリティ対策とリソース制約を持つ、さまざまな種類の操作に対して分離された実行環境を提供します。
コンテナ環境
メインの Container-MCP サービスはコンテナ内で実行され (Podman または Docker を使用)、分離の最初のレイヤーを提供します。
- ベースイメージ: Ubuntu 24.04
- ユーザー: 非ルート Ubuntu ユーザー
- Python : 3.12
- ネットワーク: ローカルホストバインディングのみに制限されます
- ファイルシステム: 構成、データ、ログ用のボリュームマウント
- セキュリティ: AppArmor、Seccomp、および機能制限
Bash実行環境
Bash 実行環境は複数の分離レイヤーで構成されています。
- 許可されたコマンド:
BASH_ALLOWED_COMMANDS
で設定された安全なコマンドに制限されます - Firejail Sandbox : ファイルシステムへのアクセスを制限したプロセス分離
- AppArmor プロファイル: きめ細かなアクセス制御
- リソース制限:
- 実行タイムアウト(デフォルト: 30秒、最大: 120秒)
- サンドボックスへのディレクトリアクセスのみに制限
- ネットワーク: ネットワークアクセスなし
- ファイルシステム: データへの読み取り専用アクセス、サンドボックスへの読み取り/書き込み
許可されるコマンドの例:
Python実行環境
Python 実行環境は、安全なコード実行のために設計されています。
- Python バージョン: 3.12
- メモリ制限: 設定可能なメモリ上限 (デフォルト: 256 MB)
- 実行タイムアウト: 設定可能な時間制限 (デフォルト: 30 秒、最大: 120 秒)
- AppArmorプロファイル: システムリソースへのアクセスを制限します
- Firejail Sandbox : プロセス分離
- 機能: すべての機能が削除されました
- ネットワーク: ネットワークアクセスなし
- 利用可能なライブラリ: 標準ライブラリのみ
- 出力キャプチャ: stdout/stderr をリダイレクトしてサニタイズ
- リソース制御: CPUとメモリの制限が強制される
ファイルシステム環境
ファイル システム環境は、サンドボックス内のファイルへのアクセスを制御します。
- ベースディレクトリ: すべての操作はサンドボックスルートに制限されます
- パス検証: すべてのパスが正規化され、トラバーサルの試行がチェックされます
- サイズ制限: 最大ファイルサイズを強制 (デフォルト: 10 MB)
- 拡張子制御: 許可された拡張子のみ許可されます (デフォルト: txt、md、csv、json、py)
- 権限制御: 適切な読み取り/書き込み権限の適用
- 分離: ホストファイルシステムにアクセスできない
ウェブ環境
Web 環境では、外部リソースへの制御されたアクセスが提供されます。
- ドメイン制御: 許可されたドメインのホワイトリスト化(オプション)
- タイムアウト制御: 操作のタイムアウトを設定可能
- ブラウザコントロール: Playwright 経由のヘッドレスブラウザでフルレンダリング
- スクレイピング制御: リクエスト/BeautifulSoupによるシンプルなスクレイピング
- コンテンツのサニタイズ: すべてのコンテンツが解析され、サニタイズされます
- ネットワーク分離: コンテナを介してネットワーク名前空間を分離する
建築
このプロジェクトはモジュール型アーキテクチャに従います。
各マネージャーは一貫した設計パターンに従います。
- 環境ベースの初期化のための
.from_env()
クラスメソッド - 非ブロッキング操作の非同期実行メソッド
- 強力な入力検証とエラー処理
- すべての業務においてセキュリティを最優先に考える
セキュリティ対策
Container-MCP は複数のセキュリティ層を実装します。
- コンテナ分離: コンテナ分離にPodman/Dockerを使用する
- AppArmor プロファイル: bash および Python 実行のためのきめ細かなアクセス制御
- Firejailサンドボックス:追加のプロセス分離
- リソース制限: メモリ、CPU、実行時間の制限
- パストラバーサル防止: すべてのファイルパスを検証し、正規化します
- 許可された拡張子の制限: アクセスできるファイルの種類を制御します
- ネットワーク制限: アクセス可能なドメインを制御します
- 最小権限: コンポーネントは最小限の必要な権限で実行されます
インストール
前提条件
- Podman または Docker を使用した Linux システム
- Python 3.12以上
- Firejail (
apt install firejail
またはdnf install firejail
) - AppArmor (
apt install apparmor apparmor-utils
またはdnf install apparmor apparmor-utils
)
クイックスタート
最も早く始める方法は、オールインワン スクリプトを使用することです。
ステップバイステップのインストール
インストール手順を個別に実行することもできます。
- プロジェクトを初期化します:Copy
- コンテナをビルドします:Copy
- 環境を設定します:Copy
- コンテナを実行します:Copy
- テストを実行する(オプション):Copy
使用法
コンテナが起動したら、任意のMCPクライアント実装を使用してコンテナに接続できます。サーバーはhttp://localhost:8000
または設定で指定されたポートで利用できます。
重要: MCPクライアントを設定する際は、エンドポイントURLをhttp://127.0.0.1:<port>/sse
sse( <port>
はデフォルトの8000または設定したポート)に設定する必要があります。/sseパス/sse
サーバー送信イベントの通信に必要です。
Pythonクライアントの例
構成
Container-MCP は、 volume/config/custom.env
で設定できる環境変数を通じて構成できます。
サーバー構成
Bash マネージャーの設定
Python マネージャーの設定
ファイルマネージャーの設定
Webマネージャーの設定
発達
開発環境の構築
- Python 仮想環境を作成します。Copy
- 依存関係をインストールします:Copy
- 開発モードでパッケージをインストールします。Copy
テストの実行
開発サーバー
MCP サーバーを開発モードで実行するには:
ライセンス
このプロジェクトは、Apache License 2.0 に基づいてライセンスされています。
著者
マーティン・ブコウスキー
This server cannot be installed
モデル コンテキスト プロトコル (MCP) の安全なコンテナーベースの実装であり、AI システムが安全にコードを実行し、コマンドを実行し、ファイルにアクセスし、Web 操作を実行するためのサンドボックス環境を提供します。