Safe Local Python Executor について
Safe Local Python Executor は、smolagents の LocalPythonExecutor をラップした stdio 方式の MCP サーバーで、LLM が生成した Python コードをローカルで実行します。Docker や仮想マシンは不要で、ファイル I/O と インポートが制限されており、Claude Desktop や Cursor などのクライアント利用者に向いています。
主な機能
- 01run_python ツールの提供
- 02ファイル I/O 操作の禁止
- 03インポート可能なモジュールの制限
- 04uv で管理された仮想環境での実行
- 05Docker や仮想マシンが不要
活用シーン
- 01Claude Desktop にコードインタープリター機能を追加する
- 02LLM が生成した計算コードをローカルで実行する
MCP 対応
本サーバーは stdio で動作し、Python コードを実行する run_python ツールを MCP クライアントに提供します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
セーフローカルPythonエグゼキューター
Hugging Face の LocalPythonExecutor
(smolagents フレームワークの一部)をラップする MCP サーバー(stdio トランスポート)です。LLM が生成した Python コードをローカルで実行する際に、基本的な分離とセキュリティを提供するカスタム Python ランタイムです。Docker や VM は不要です。
このパッケージを使うと、Python エグゼキューターを MCP(Model Context Protocol)経由で、Claude Desktop、Cursor、その他の MCP 互換クライアントなどの LLM アプリ向けツールとして公開できます。
Claude Desktop の場合、このツールを使うと、不足しているコードインタープリター(ChatGPT ではかなり前からプラグインとして利用可能です)を簡単に追加できます。
機能
run_pythonツールを公開します- Python の
eva()lを直接使う場合と比べ、より安全に Python コードを実行します - Python venv 内で uv を介して実行します
- ファイルの I/O 操作は許可されません
- インポート可能なモジュールを制限しています
- collections
- datetime
- itertools
- math
- queue
- random
- re
- stat
- statistics
- time
- unicodedata
セキュリティ
お使いのマシンで LLM が生成したコードを実行する際は注意してください。コマンドライン経由や eval() を使って Python を実行する MCP サーバーは避けてください。最も安全な選択肢は VM または Docker コンテナーの使用ですが、セットアップに手間がかかり、リソースを消費し、動作も遅くなります。Python ランタイムを提供するサードパーティーサービスもありますが、登録や API キーなどが必要です。
LocalPythonExecutor は、ローカルの Python 環境を直接使う方法(セットアップが簡単です)と、Docker コンテナーや VM、サードパーティーサービスでリモート実行する方法(安全です)の間で、適切なバランスを実現します。Hugging Face チームは、コーディングエージェントが使用する LLM 生成コードをすばやく安全に実行できる方法の開発に取り組んできました。この MCP サーバーは、それを基盤としています。
セキュリティの第一段階として、smolagents のコード実行では、標準の Python インタープリターを使用していません。より安全な LocalPythonExecutor をゼロから再構築しました。
詳しくはこちらをご覧ください。
インストールと実行
Smithery 経由でインストールする
Smithery 経由で Claude Desktop 用 Safe Local Python Executor を自動的にインストールするには:
npx -y @smithery/cli install @maxim-saplin/mcp_safe_local_python_executor --client claude
手動でインストールする
uvをインストールします(macOS ではbrew install uvを実行するか、公式ドキュメントを参照してください)- リポジトリをクローンし、ディレクトリを
cd mcp_safe_local_python_executorで変更します - サーバーはコマンドラインから
uv run mcp_server.pyで起動できます。venv は自動的に作成され、依存関係(smollagents、mcp)がインストールされます
Claude Desktop の設定
-
Claude for Desktop がインストールされていることを確認します(claude.ai からダウンロードしてください)
-
Claude for Desktop の設定ファイルを編集します:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%\Claude\claude_desktop_config.json - または Claude Desktop を開き、Settings -> Developer に移動して、「Edit Config」ボタンをクリックします
- macOS:
-
次の設定を追加します:
{
"mcpServers": {
"safe-local-python-executor": {
"command": "uv",
"args": [
"--directory",
"/path/to/mcp_local_python_executor/",
"run",
"mcp_server.py"
]
}
}
}
- Claude for Desktop を再起動します
- Python エグゼキューターのツールが Claude で利用可能になります(メッセージ入力欄にハンマーのアイコンが表示されます)
プロンプトの例
設定が完了したら、次のようなプロンプトを使用できます:
- 「Python を使って 5 の階乗を計算してください」
- 「100 以下の素数のリストを作成してください」
- 「この方程式を解いてください(Python を使用):x^2 + 5x + 6 = 0」
開発
リポジトリをクローンします。uv を使って仮想環境を作成し、開発用の依存関係をインストールして、テストを実行します。
uv venv .venv
uv sync --group dev
python -m pytest tests/
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。
