MCP Code Executor について
MCP Code Executor は、LLM が指定された Python 環境(Conda、virtualenv、UV virtualenv)内でコードを実行できるようにする MCP サーバーです。環境にインストール済みのライブラリに依存する作業に向き、大きなスクリプトを段階的に作成することにも対応しています。
主な機能
- 01設定された Python 環境でのコード実行
- 02Conda、virtualenv、UV virtualenv への対応
- 03コードファイルの段階的な作成、追記、実行
- 04Python パッケージの確認とインストール
- 05実行時の環境設定の変更
活用シーン
- 01既存環境の numpy を使う LLM 生成コードの実行
- 02トークン上限を超える長いスクリプトの作成
- 03実行前に依存パッケージの有無を確認する
MCP 対応
本プロジェクトは MCP サーバーであり、コード実行、パッケージ管理、コードファイル操作のツールを MCP クライアントに提供します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
MCP Code Executor
MCP Code Executor は、LLM が指定した Python 環境内で Python コードを実行できる MCP サーバーです。これにより、LLM は環境で定義されたライブラリや依存関係にアクセスしてコードを実行できます。また、トークン制限を超える可能性のある大きなコードブロックを処理するため、コードを段階的に生成する機能もサポートしています。
特長
- LLM のプロンプトから Python コードを実行
- トークン制限を克服するための段階的なコード生成をサポート
- 指定した環境(Conda、virtualenv、または UV virtualenv)内でコードを実行
- 必要に応じて依存関係をインストール
- パッケージがすでにインストールされているか確認
- 実行時に環境を動的に設定
- コードの保存ディレクトリを設定可能
前提条件
- Node.js がインストールされていること
- 次のいずれか:
- Conda がインストールされ、必要な Conda 環境が作成されていること
- Python virtualenv
- UV virtualenv
セットアップ
- このリポジトリをクローンします。
git clone https://github.com/bazinga012/mcp_code_executor.git
- プロジェクトディレクトリに移動します。
cd mcp_code_executor
- Node.js の依存関係をインストールします。
npm install
- プロジェクトをビルドします。
npm run build
設定
MCP Code Executor サーバーを設定するには、MCP サーバーの設定ファイルに以下を追加します。
Node.js を使用する場合
{
"mcpServers": {
"mcp-code-executor": {
"command": "node",
"args": [
"/path/to/mcp_code_executor/build/index.js"
],
"env": {
"CODE_STORAGE_DIR": "/path/to/code/storage",
"ENV_TYPE": "conda",
"CONDA_ENV_NAME": "your-conda-env"
}
}
}
}
Docker を使用する場合
{
"mcpServers": {
"mcp-code-executor": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"mcp-code-executor"
]
}
}
}
注: Dockerfile は venv-uv 環境タイプでのみテストされています。他の環境タイプでは追加の設定が必要になる場合があります。
環境変数
必須変数
CODE_STORAGE_DIR:生成されたコードを保存するディレクトリ
環境タイプ(いずれかの設定を選択)
-
Conda の場合:
ENV_TYPE:condaに設定CONDA_ENV_NAME:使用する Conda 環境の名前
-
標準の Virtualenv の場合:
ENV_TYPE:venvに設定VENV_PATH:virtualenv ディレクトリへのパス
-
UV Virtualenv の場合:
ENV_TYPE:venv-uvに設定UV_VENV_PATH:UV virtualenv ディレクトリへのパス
利用可能なツール
MCP Code Executor は LLM に次のツールを提供します。
1. execute_code
設定済みの環境で Python コードを実行します。短いコードスニペットに最適です。
{
"name": "execute_code",
"arguments": {
"code": "import numpy as np\nprint(np.random.rand(3,3))",
"filename": "matrix_gen"
}
}
2. install_dependencies
環境に Python パッケージをインストールします。
{
"name": "install_dependencies",
"arguments": {
"packages": ["numpy", "pandas", "matplotlib"]
}
}
3. check_installed_packages
環境にパッケージがすでにインストールされているか確認します。
{
"name": "check_installed_packages",
"arguments": {
"packages": ["numpy", "pandas", "non_existent_package"]
}
}
4. configure_environment
環境設定を動的に変更します。
{
"name": "configure_environment",
"arguments": {
"type": "conda",
"conda_name": "new_env_name"
}
}
5. get_environment_config
現在の環境設定を取得します。
{
"name": "get_environment_config",
"arguments": {}
}
6. initialize_code_file
初期内容を含む新しい Python ファイルを作成します。トークン制限を超える可能性のある長いコードを書く場合は、最初の手順として使用します。
{
"name": "initialize_code_file",
"arguments": {
"content": "def main():\n print('Hello, world!')\n\nif __name__ == '__main__':\n main()",
"filename": "my_script"
}
}
7. append_to_code_file
既存の Python コードファイルに内容を追加します。initialize_code_file で作成したファイルにコードを追加する場合に使用します。
{
"name": "append_to_code_file",
"arguments": {
"file_path": "/path/to/code/storage/my_script_abc123.py",
"content": "\ndef another_function():\n print('This was appended to the file')\n"
}
}
8. execute_code_file
既存の Python ファイルを実行します。initialize_code_file と append_to_code_file でコードを組み立てた後、最後の手順として使用します。
{
"name": "execute_code_file",
"arguments": {
"file_path": "/path/to/code/storage/my_script_abc123.py"
}
}
9. read_code_file
既存の Python コードファイルの内容を読み取ります。内容を追加したり実行したりする前に、ファイルの現在の状態を確認するために使用します。
{
"name": "read_code_file",
"arguments": {
"file_path": "/path/to/code/storage/my_script_abc123.py"
}
}
使用方法
設定が完了すると、MCP Code Executor は指定した CODE_STORAGE_DIR にファイルを生成し、設定済みの環境内で実行することで、LLM が Python コードを実行できるようにします。
LLM は、プロンプトでこの MCP サーバーを参照してコードを生成・実行できます。
大きなコードブロックの処理
LLM のトークン制限を超える可能性のある大きなコードブロックには、コードを段階的に生成する方法を使用してください。
initialize_code_fileを使用して、基本構造でファイルを初期化します- 後続の呼び出しで
append_to_code_fileを使用してコードを追加します - 必要に応じて
read_code_fileを使用して、ファイルの内容を確認します execute_code_fileを使用して、コード全体を実行します
この方法により、LLM はトークン制限に達することなく、複雑な複数パートのコードを作成できます。
後方互換性
このパッケージは、以前のバージョンとの後方互換性を維持しています。Conda 環境のみを指定していた以前のバージョンのユーザーは、設定を変更せずに引き続き使用できます。
貢献
皆さんからの貢献を歓迎します!Issue を作成するか、プルリクエストを送信してください。
ライセンス
このプロジェクトは MIT License の下でライセンスされています。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。