mcpField
C
code-interpreter

code-interpreter

github.com/aws-samples開発197159 回インストール3 週間前に更新
リポジトリ

code-interpreter について

AWS Bedrock AgentCore Code Interpreterを基盤とする、サンドボックス型のコード実行スキルです。コードのテストやデータ分析、プロトタイプ作成など、実行を伴う作業向けで、セッション内のワークスペースにファイルを保持します。

主な機能

  1. 01Python、JavaScript、TypeScriptの実行
  2. 02シェルコマンドの実行
  3. 03ファイルの読み取り、書き込み、一覧表示、削除
  4. 04セッションワークスペースの保持
  5. 05生成ファイルの公開

活用シーン

  1. 01コードスニペットのテストとデバッグ
  2. 02データの探索と分析
  3. 03アルゴリズムのプロトタイプ作成
  4. 04パッケージのインストールと確認

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/aws-samples/sample-strands-agent-with-agentcore --skill code-interpreter

インストール後、Claude Code で/code-interpreterを入力して読み込まれたか確認します。

詳細

コードインタープリター

AWS Bedrock AgentCore Code Interpreter を利用した汎用コード実行環境です。安全なサンドボックス内でコードを実行し、シェルコマンドを実行して、ファイルを管理できます。

利用可能なツール

  • execute_code(code, language, output_filename):Python、JavaScript、または TypeScript のコードを実行します。
  • execute_command(command):シェルコマンドを実行します。
  • file_operations(operation, paths, content):マウントされたセッションのワークスペース内で、ファイルの読み取り、書き込み、一覧表示、削除を行います。

ツールのパラメーター

execute_code
パラメーター型必須デフォルト説明
codestringはい実行するコードです。テキスト出力には print() を使用します。
languagestringいいえ"python""python"、"javascript"、または "typescript"
output_filenamestringいいえ""永続的なセッションファイルとして公開するファイルです。コードでは、この名前と完全に一致するファイルを保存する必要があります。
execute_command
パラメーター型必須説明
commandstringはい実行するシェルコマンドです(例:"ls -la"、"pip install requests")。
file_operations
パラメーター型必須説明
operationstringはい"read"、"write"、"list"、または "remove"
pathslistread/list/remove の場合ファイルパスです。read:["file.txt"]、list:["."]、remove:["old.txt"]
contentlistwrite の場合path と text を含むエントリーです:[{"path": "out.txt", "text": "hello"}]

tool_input の例

execute_code — テキスト出力
{
  "code": "import pandas as pd\ndf = pd.DataFrame({'A': [1,2,3], 'B': [4,5,6]})\nprint(df.describe())",
  "language": "python"
}
execute_code — グラフの生成
{
  "code": "import matplotlib\nmatplotlib.use('Agg')\nimport matplotlib.pyplot as plt\nimport numpy as np\nx = np.linspace(0, 10, 100)\nplt.figure(figsize=(10,6))\nplt.plot(x, np.sin(x))\nplt.title('Sine Wave')\nplt.savefig('sine.png', dpi=300, bbox_inches='tight')\nprint('Done')",
  "language": "python",
  "output_filename": "sine.png"
}
execute_command — パッケージのインストール
{
  "command": "pip install yfinance"
}
execute_command — 環境の確認
{
  "command": "python --version && pip list | head -20"
}
file_operations — ファイルの書き込み
{
  "operation": "write",
  "content": [{"path": "config.json", "text": "{\"key\": \"value\"}"}]
}
file_operations — ファイルの一覧表示
{
  "operation": "list",
  "paths": ["."]
}
file_operations — ファイルの読み取り
{
  "operation": "read",
  "paths": ["output.csv"]
}

このスキルを使用する場面

コードインタープリターは、コードのテストやプロトタイプ作成のためのサンドボックスとして使用します。 本番環境向けの作業(ドキュメント、グラフ、プレゼンテーションの作成)には、専用のスキルを優先してください。

次の用途には使用しないでください:

  • コード例の整形や表示(Markdown のコードブロックで直接回答してください)
  • コードやアルゴリズムの説明(テキストで直接回答してください)
  • 頭の中でできる簡単な計算(答えをそのまま提示してください)
  • 実際にコードを実行する必要のないタスク
タスク推奨スキル備考
グラフ/図の作成visual-design本番用のグラフでは、まずこれを使用してください
Word ドキュメントの作成word-documentsテンプレートとスタイリングに対応しています
Excel スプレッドシートの作成excel-spreadsheets書式設定のパイプラインと検証機能があります
PowerPoint の作成powerpoint-presentationsレイアウトシステムとデザインパターンを備えています
コードスニペットのテストcode-interpreterデバッグ、ロジックの検証、出力の確認
アルゴリズムのプロトタイプ作成code-interpreter実装前に試行
パッケージのインストール/テストcode-interpreter互換性の確認、API のテスト
コードロジックのデバッグcode-interpreter特定の関数を切り分けてテスト
計算の検証code-interpreter簡単な計算やデータの確認

コードインタープリターとコードエージェントの比較

コードインタープリターコードエージェント
性質サンドボックス化された実行環境自律型エージェント(Claude Code)
最適な用途簡単なスクリプト、データ分析、プロトタイプ作成複数ファイルのプロジェクト、リファクタリング、テストスイート
ファイルの永続性/mnt/workspace 内のファイルはインタープリターの再起動後も保持されますすべてのファイルが自動的に S3 と同期されます
セッションの状態変数は1つのインタープリターセッション内で保持され、ワークスペース内のファイルはチャットセッション中保持されますファイルと会話はセッション間で保持されます
自律性コードはユーザーが記述しますエージェントが計画、記述、実行、反復を行います
使用する場面特定のコードを実行する必要がある場合問題をエンドツーエンドで解決するエンジニアが必要な場合

ワークスペースとの連携

チャットセッションには、/mnt/workspace にマウントされた永続ファイルシステムがあります。 Code Interpreter ツールで使用する相対ファイルパスは、このディレクトリ内を参照します。 ここに書き込まれたファイルは一時ファイルであり、インタープリターセッションを 再起動しても利用できます。output_filename を指定しない限り、ファイルはユーザーがダウンロードできる成果物にはなりません。

マウントは必須です。設定またはアタッチできない場合、Code Interpreter は永続性のない分離セッションを開始せず、エラーを返します。

永続ファイルを直接作成する:

{
  "tool": "execute_code",
  "code": "from pathlib import Path\nPath('/mnt/workspace/results.json').write_text('{\"ok\": true}')"
}

生成したファイルを Generated Files に表示する、またはユーザーがダウンロードできるようにする必要がある場合は、output_filename を使用してください。ツールは成功を返す前に、そのファイルを公開して検証します。/mnt/workspace への Markdown リンクを作成したり、ワークスペース内のパスをダウンロードリンクとして記述したりしないでください。アプリケーションがファイル操作を表示します。

アップロードされたファイル:

ユーザーがアップロードしたファイルは、手動で読み込んだり base64 で転送したりしなくても、マウントされたワークスペースの /mnt/workspace/inputs から利用できます。JSON、JSONL、NDJSON の添付ファイルは、会話内では一部のテキスト抜粋として表示される場合があります。データセット全体が必要な場合は、マウントされたファイルを使用してください。

一時ファイルの確認には file_operations を使用してください。公開されたファイルはアプリケーションに表示されるため、表示されているファイル名で参照してください。

環境

  • 言語: Python(推奨、200 以上のライブラリ)、JavaScript、TypeScript
  • シェル: execute_command による完全なシェルアクセス
  • ファイルシステム: /mnt/workspace はチャットセッション中、Code Interpreter の再起動後も維持されます
  • セッション状態: 変数は 1 つのインタープリターセッション内で維持され、ファイルはマウントされたワークスペース内で維持されます
  • ネットワーク: インターネットアクセスが利用可能です(requests、urllib、curl を使用できます)

サポートされている言語

  • Python(推奨)— データサイエンス、ML、可視化、ファイル処理に対応した 200 以上のプリインストール済みライブラリ
  • JavaScript — JSON 操作や非同期処理に便利な Node.js ランタイム
  • TypeScript — 型チェックに対応した TypeScript ランタイム

プリインストール済み Python ライブラリ

データ分析と可視化
ライブラリ主な用途
pandasDataFrame、CSV/Excel の入出力、グループ化、ピボット
numpy配列、線形代数、乱数、統計
matplotlib折れ線、棒、散布図、ヒストグラム、サブプロット
plotlyインタラクティブなグラフ、3D プロット
bokehインタラクティブな可視化
scipy最適化、補間、信号処理
statsmodels回帰、時系列、仮説検定
sympy代数、微積分、方程式の求解
機械学習と AI
ライブラリ主な用途
scikit-learn分類、回帰、クラスタリング、パイプライン
torch / torchvision / torchaudioディープラーニング、コンピュータービジョン、音声
xgboost高性能な勾配ブースティング
spacy / nltk / textblobNLP、トークン化、NER、感情分析
scikit-image画像処理、フィルター、セグメンテーション
数学と最適化
ライブラリ主な用途
cvxpy凸最適化、ポートフォリオ最適化
ortoolsスケジューリング、ルーティング、制約プログラミング
pulp線形計画法
z3-solverSAT ソルバー、形式検証
networkx / igraphグラフアルゴリズム、ネットワーク分析
ファイル処理とドキュメント
ライブラリ主な用途
openpyxl / xlrd / XlsxWriter書式設定に対応した Excel の読み書き
python-docxWord ドキュメントの作成・変更
python-pptxPowerPoint の作成・変更
PyPDF2 / pdfplumber / reportlabPDF の読み込み・書き込み・生成
lxml / beautifulsoup4XML/HTML の解析
markitdownさまざまな形式から Markdown への変換
画像とメディア
ライブラリ一般的な用途
pillow (PIL)画像のリサイズ、切り抜き、フィルター、変換
opencv-python (cv2)コンピュータービジョン、特徴検出
imageio / moviepy画像/動画の入出力と編集
pydub音声の操作
svgwrite / WandSVG の作成、ImageMagick
データストレージと形式
ライブラリ一般的な用途
duckdbDataFrame とファイルに対する SQL クエリ
SQLAlchemySQL ORM とデータベースの抽象化
pyarrowParquet と Arrow 形式の処理
orjson / ujson / PyYAML高速な JSON/YAML の解析
Web と API
ライブラリ一般的な用途
requests / httpxHTTP リクエスト、API 呼び出し
beautifulsoup4Web スクレイピング
fastapi / Flask / DjangoWeb フレームワーク
ユーティリティ
ライブラリ一般的な用途
pydanticデータ検証、スキーマ定義
Fakerテストデータの生成
rich見栄えのよい出力、テーブル
cryptography暗号化、ハッシュ化
qrcodeQR コードの生成
boto3AWS SDK

バージョン付きの 200 以上のライブラリの完全な一覧を表示するには、execute_command(command="pip list") を実行してください。

使用パターン

パターン 1:データ分析
import pandas as pd
import numpy as np

df = pd.DataFrame({
    'date': pd.date_range('2024-01-01', periods=100),
    'revenue': np.random.normal(1000, 200, 100),
    'costs': np.random.normal(700, 150, 100),
})
df['profit'] = df['revenue'] - df['costs']

print("=== Summary Statistics ===")
print(df.describe())
print(f"\nTotal Profit: ${df['profit'].sum():,.2f}")
print(f"Profit Margin: {df['profit'].mean() / df['revenue'].mean() * 100:.1f}%")
パターン 2:可視化(output_filename を使用)
import matplotlib
matplotlib.use('Agg')
import matplotlib.pyplot as plt
import numpy as np

fig, axes = plt.subplots(2, 2, figsize=(14, 10))

categories = ['Q1', 'Q2', 'Q3', 'Q4']
values = [120, 150, 180, 210]
axes[0,0].bar(categories, values, color='#2196F3')
axes[0,0].set_title('Quarterly Revenue')

x = np.linspace(0, 10, 50)
axes[0,1].plot(x, np.sin(x), 'b-', linewidth=2)
axes[0,1].set_title('Trend')

sizes = [35, 30, 20, 15]
axes[1,0].pie(sizes, labels=['A','B','C','D'], autopct='%1.1f%%')
axes[1,0].set_title('Market Share')

x = np.random.normal(50, 10, 200)
y = x * 1.5 + np.random.normal(0, 15, 200)
axes[1,1].scatter(x, y, alpha=0.5, c='#FF5722')
axes[1,1].set_title('Correlation')

plt.tight_layout()
plt.savefig('dashboard.png', dpi=300, bbox_inches='tight')
print('Dashboard saved')
パターン 3:機械学習
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import classification_report
from sklearn.datasets import load_iris

iris = load_iris()
X_train, X_test, y_train, y_test = train_test_split(
    iris.data, iris.target, test_size=0.3, random_state=42
)

model = RandomForestClassifier(n_estimators=100, random_state=42)
model.fit(X_train, y_train)
y_pred = model.predict(X_test)

print(classification_report(y_test, y_pred, target_names=iris.target_names))
パターン 4:DuckDB での SQL
import duckdb
import pandas as pd

orders = pd.DataFrame({
    'order_id': range(1, 101),
    'customer': [f'Customer_{i%20}' for i in range(100)],
    'amount': [round(50 + i * 3.5, 2) for i in range(100)],
})

result = duckdb.sql("""
    SELECT customer, COUNT(*) as cnt, ROUND(SUM(amount), 2) as total
    FROM orders GROUP BY customer
    HAVING COUNT(*) >= 3 ORDER BY total DESC LIMIT 10
""").df()
print(result.to_string(index=False))
パターン 5:Web からデータを取得
import requests
import pandas as pd

response = requests.get("https://api.example.com/data")
data = response.json()
df = pd.DataFrame(data)
print(df.head())
パターン 6:複数ステップのワークフロー(セッション状態が保持されます)
Call 1: execute_code → load and clean data, store in variable `df`
Call 2: execute_code → analyze `df`, generate chart, save as PNG
Call 3: execute_code → export results to CSV
Call 4: file_operations(operation="read") → download the CSV

同じセッション内の呼び出し間では、変数(df)とファイルが保持されます。

重要なルール

  1. import matplotlib.pyplot の前に matplotlib.use('Agg') を実行してください — サンドボックスにはディスプレイがありません。
  2. テキスト出力には print() を使用してください — 結果は stdout を通じて返されます。
  3. output_filename は完全に一致させてください — plt.savefig() または wb.save() 内のファイル名は、output_filename パラメーターと一致する必要があります。
  4. シェルタスクには execute_command を使用してください — ls、pip install、curl など。
  5. ファイル管理には file_operations を使用してください — ファイルの読み取り、書き込み、一覧表示、削除を明示的に行います。
  6. セッション状態は保持されます — 変数とファイルは呼び出し間で保持されます。複数ステップのワークフローに活用してください。

避けるべきよくある間違い

  • import matplotlib.pyplot as plt の前に matplotlib.use('Agg') を実行し忘れる
  • plt.savefig() ではなく plt.show() を使用する — ディスプレイはありません
  • output_filename の入力ミス — コードで保存するファイル名と完全に一致させる必要があります
  • シェルタスクに execute_code を使用する — 代わりに execute_command を使用してください
  • file_operations でバイナリファイルを書き込む — execute_code でバイナリファイルを生成し、output_filename でダウンロードしてください

コメント