AI エージェント向け: ドキュメントインデックスは https://www.mongodb.com/ja-jp/docs/llms.txt で利用できます。すべてのページの markdown バージョンは、いずれかの URL パスに .md を追加することで利用できます。
See how MongoDB 9.0 delivers up to 2x higher throughput.
MongoDB Branding Shape
Register now >
Docs Menu

エージェントをローカルで実行およびテストする

このガイドでは、 Atlas Agent Engineエージェントのローカル開発環境を開始する方法を学習できます。 agentengine dev コマンドは、アプリケーションコードを含むDockerイメージを構築し、マシン上でオーケストレーション 、エージェントサンドボックス、ツール サンドボックス、ローカルMongoDBインスタンスなど、完全なエージェントスタックを起動します。環境で が実行中いる場合は、CLI はサービス URL を出力するので、エージェントを開発およびテストできます。

開始する前に、必ずagentengine CLI をインストールしてください。 CLI のインストール、認証、プロジェクトの登録方法の詳細については、「 インストールと認証 」を参照してください。

このセクションでは、ローカル開発環境を構成するために使用できるオプションの設定について説明します。

agent.yamlファイルで features.memory: true を設定する場合は、ローカル環境を起動する前に、次の変数を .envファイルに追加します。

  • VOYAGE_API_KEY: メモリ埋め込みの生成に必要です。

  • MONGOMEM_DB_NAME: 任意。メモリサーバーが書き込むMongoDBデータベース名。デフォルトは mdb_memory_<project-id> です。

dev.yamlファイルを使用してローカル サービス ポートの割り当てを上書きし、開発中にローカルMongoDBインスタンスをオンまたはオフにすることができます。 dev.yamlファイルをagent.yamlファイルと同じディレクトリに配置します。このファイルは任意であり、プラットフォームはこのファイルを .gitignoreファイルに追加しないため、設定をコミットして共有できます。

次の表では、dev.yamlファイルに含めることができるフィールドを説明しています。

フィールド
タイプ
必須
説明

services.<svc>.port

int(1–65535)

no

プラットフォーム サービスのポート オーバーライド。有効なサービス名は、oe、aer、tool、playground、guardrails、mongodb、grpc です。

services.mongodb.local

ブール

no

開発スタックの一部としてローカルMongoDBインスタンスを起動するかどうか。デフォルトは true です。 false の場合、.envファイルで MONGODB_URI を設定して、外部のMongoDBインスタンスを点ようにする必要があります。

services.mongodb.port

整数

no

ポートMongoDB は、ローカルで実行中いる場合に でリッスンします。デフォルトは 27017 です。

次の例は、利用可能なすべてのフィールドを設定する dev.yamlファイルを示しています。

dev.yaml
services:
playground:
port: 3000
oe:
port: 8000
aer:
port: 8001
tool:
port: 8002
mongodb:
local: true
port: 27017

コマンドは、アクティブな開発用のagentengine dev ホットリロードモードと、本番環境のようなトポロジーをテストするための 分離モードの 2 つのスタートアップモードをサポートしています。

ホットリロードモードでは、すべてのエージェントサービスが単一のアプリコンテナ内で実行され、ソースコードが直接マウントされます。ファイルを編集すると、監視ファイルによって変更が検出され、影響を受けるサービスが自動的に再読み込みされます。完全な再構築は必要ありません。

1

プロジェクトのルートから次のコマンドを実行します。

agentengine dev up

CLI は、 Dockerイメージをビルドし、スタックを起動し、すべてのサービスが準備できたときにサービス URL を出力します。

2

Visual Studio(VS)コードを使用する場合は、次の手順を実行して実行中のコンテナに直接接続します。これにより、完全な IntelliSense およびデバッグ サポートによる統合開発エクスペリエンスが提供されます。

  1. VS Codeに Dev Containers 拡張機能をインストールします。

  2. スタックがを実行中いる間に、Command Palette を開き、Dev Containers:/ Reopen in Container を選択します。

VS Code はアプリコンテナに接続し、その中のワークスペースを再読み込みします。

--isolated フラグを使用して、ローカル環境を 分離モードで起動できます。分離モードでは、 本番環境のトポロジーをミラーリングして、 個別のコンテナ内で各エージェントサービスを起動します。このモードを使用して、サービス境界全体の動作を検証したり、本番固有の問題を再現したりします。コードはホストからマウントされていないため、コードを変更した後にイメージを再ビルドする必要があります。

1

プロジェクトのルートから次のコマンドを実行します。

agentengine dev up --isolated

CLI は、各サービスに対して個別のイメージをビルドし、 フルスタックを起動します。

2

分離モードではソースファイルがマウントされないため、コードを変更するたびにスタック を停止し、再ビルドして再起動する必要があります。

agentengine dev stop
agentengine dev up --isolated

実行中環境を管理するには、次の agentengine dev コマンドを使用します。

実行中のすべてのサービスからログをストリーミングするには、次のコマンドを実行します。

agentengine dev logs

特定のサービスからログをストリーミングするには、サービス名を位置引数として渡します。

agentengine dev logs <service>

単一リポジトリでは、--all を渡して、共有すべてのワークスペーススタックのログをストリーミングします。

agentengine dev logs --all

agentengine dev status コマンドは、サービスごとのステータスや公開ホスト URL など、ローカル コンフィギュレーションスタックの現在の状態を表示します。以下の例では、コマンド構文を示しています。

agentengine dev status [--workspace <name>] [--all] [--json]

次の表では、使用可能なフラグについて説明しています。

Flag
説明

--workspace <name>

(MongoDB のみ) ルートagent.yaml で定義されている特定のエージェントを名前でターゲットにします。

--all

(MongoDB のみ) すべてのワークスペーススタックを対象とします。

--json

マシンが判読可能なステータスオブジェクトを stdout に出力します。 schema_version、status、mode、running、total、services、contextオブジェクトが含まれます。各 servicesオブジェクトには、name、status、running、およびローカル url が含まれます(使用可能な場合)。

agentengine dev restart コマンドは、イメージを再ビルドせずにホットリロード app コンテナと oe コンテナを再起動します。ホストの依存関係を変更した後にこれを使用します。以下の例では、コマンド構文を示しています。

agentengine dev restart [--workspace <name>]

このコマンドは、ホットリロードスタックのみを対象とします。 --all または 分離モードはサポートされていません。

pyproject.tomlファイルに依存関係を追加する場合、uv.lockファイルがすでに存在する場合は、ローカル開発スタックによってその依存関係がインストールされない可能性があります。 uv.lockファイルが存在する場合、開発エントリポイントは --frozen フラグで環境を同期します。これにより、pyproject.tomlファイルではなくロックファイルから依存関係が解決されます。

新しい依存関係をインストールするには、次のコマンドを実行して uv.lockファイルを削除し、スタックを再起動します。

rm uv.lock
agentengine dev stop
agentengine dev up

または、スタックを再起動する前に、次のコマンドを実行してロックファイルを更新することもできます。

uv lock
agentengine dev stop
agentengine dev up

エージェントが、 AWS CodeAtlas のプライベート PyPI やnpmレジストリなどのプライベート アーティファクト リポジトリでホストされているパッケージに依存している場合は、 agent.yamlファイルの artifact_repositories ブロックでそれらを宣言します。ホットリロードモードでは、agentengine dev up コマンドと agentengine dev restart コマンドによって、type: pypi エントリのレジストリ認証情報が自動的に構成されます。 CLI はnpmエントリを自動構成しません。 npmプライベート依存関係の場合は、 プロジェクト レベルの .npmrcファイルなどのローカルnpm構成を介して認証します。

宣言された PyPIリポジトリごとに、次のいずれかの方法で認証情報を提供します。

  • プロセス環境または .envファイル内の UV_INDEX_<NAME>_PASSWORD(およびオプションで _USERNAME)変数。例、corps-pypi という名前のインデックスには UV_INDEX_CORPS_PYPI_PASSWORD を設定します。

  • 宣言された secretフィールド。これは .envファイルから読み取られます。

  • AWS CodeAtlasインデックスの場合、アクティブなAWSプロファイルまたは SSO セッションから生成されたトークン。

宣言されたリポジトリの認証情報が解決されない場合、CLI は失敗し、確認するリポジトリとソースに名前を付けます。

自動構成をスキップして、UV_INDEX_* 変数を自分で管理するには、次のコマンドを実行します。

agentengine dev up --no-artifact-auth

注意

type: pypi エントリを宣言し、--isolated または --allモードで を起動すると、CLI は依存関係のインストールに失敗したコンテナを起動するのではなく、エラーを返します。

artifact_repositoriesスキーマの詳細については、「 エージェント YAML スキーマ 」を参照してください。プライベート アーティファクト リポジトリがクラウドビルドでどのように機能するかについては、「 プライベート アーティファクト リポジトリ 」を参照してください。

コンテナを削除せずにローカル環境を一時停止するには、次のコマンドを実行します。

agentengine dev stop [--workspace <name>] [--all]

コマンドは、コンテナを削除せずに停止します。リビルドせずにコンテナを再開するには、agentengine dev up を再度実行します。

すべてのコンテナを停止し、関連するボリュームと生成されたランタイム ファイルをすべて削除するには、次のコマンドを実行します。

agentengine dev clean [--workspace <name>] [--all]

警告

agentengine dev clean を実行すると、MongoDB Atlas Local ボリュームに保存されているすべてのローカルデータが永続的に削除されます。このコマンドを実行中前に、必要なデータをバックアップしてください。

消去後に agentengine dev up を実行してファイルを再生成し、新しいローカル コンテナを起動します。

agentengine dev mcp auth コマンドは、mcp.servers の下の agent.yamlファイルに構成されたリモート MCP サーバーの OAuth 認証情報を管理します。コマンドはログイン認証情報を ~/.agentengine/mcp-oauth の開発者認証キャッシュに書き込み、生成された agentengine dev up スタックはそのディレクトリを自動的にマウントします。

キャッシュはプロジェクトごとと MCP エンドポイントごとに異なります。あるプロジェクトからログインしても、別のプロジェクトにはログしないため、プロジェクトごとにagentengine dev mcp auth login 1 回 コマンドを実行する必要があります。 MCP サーバーの命名要件の詳細については、「 サーバーの命名規則 」を参照してください。

次の例に示すように、agentengine dev mcp auth login コマンドを使用してサーバーのプロバイダー認可フローを開き、認証情報を 取得キャッシュに保存します。

agentengine dev mcp auth login <server> [--no-browser]

--no-browser フラグは、ブラウザでURL を開く代わりにログインURLを出力します。

サーバーが宣言する認可URLは、https スキームを使用する必要があります。サーバーが他のスキームを使用する認可エンドポイントを公開した場合、 コマンドは停止し、Refused to open unauthorized MCP OAuth URLエラーを生成します。

次の例に示すように、agentengine dev mcp auth status コマンドを使用して、サーバーにキャッシュされた認証情報が存在するかどうかを確認します。

agentengine dev mcp auth status [server] [--check]

--check フラグは、キャッシュされた認証情報を使用して MCPサーバーに接続し、ツール リスト エンドポイントを呼び出してサーバーが認証情報を受け入れているかどうかを確認します。

agentengine dev mcp auth upload コマンドを使用して、サーバーのローカル OAuthキャッシュをベース64でエンコードし、AGENTIC_MCP_OAUTH_B64_<SERVER> という名前のワークスペース シークレットとして保存します。このコマンドは、配置されたエージェントに認可情報を公開します。

以下の例では、コマンド構文を示しています。

agentengine dev mcp auth upload <server> [--workspace-id <id>] [--sync]

--workspace-id フラグはワークスペースIDを指定し、``--sync`` フラグはアクティブな配置のシークレットをアップロード後すぐに再読み込みします。

アップロードする前に、CLI はキャッシュに記録されているサーバーURL がagent.yamlファイル内のURLと一致していることを確認します。キャッシュが別のエンドポイントで記録されている場合、CLI はアップロードを拒否し、agentengine dev mcp auth login コマンドを再度実行するように要求します。

agentengine agent validate コマンドは、ビルドパイプラインが使用するのと同じパーサーとバリデーターを使用して agent.yamlファイルをローカルにリンティングします。をビルドする前に実行して、誤った値、無効な値、ネットワーク ポリシー エラーをキャッチします。

以下の例では、コマンド構文を示しています。

agentengine agent validate [path] [--strict]

デフォルトのパスは ./agent.yaml です。明示的なパスを渡して、mongorepo ワークスペースなどの別の場所にファイルを検証します。

このコマンドは、次の終了コードを返します。

終了コード
意味

0

agent.yaml は有効です。

1

検証に失敗しました。出力は、無効なフィールドを識別します。

2

ファイルまたは I/O エラー。ファイルを読み取れませんでした。

コマンドは認証を必要とせず、有効なトークンなしで CI で実行できます。

artifact_repositories が空でない場合、コマンドは agent.yaml と同じディレクトリにあるプロジェクトツールに対して、宣言されたインデックス名をクロスチェックします。 Pythonエージェントの場合は、pyproject.toml と uv.lock が読み取られます。 TypeScript エージェントの場合は、package.json、.npmrc、package-lock.json が読み取られます。認証情報インジェクションがオプトインされているため、ロックファイル内の未宣言のプライベート URL が許可されます。クラウドクラウドをブロックするのと同じハード エラーが発生すると、検証が停止し、終了コード 1 が返されます。

ログインすると、コマンドは欠落またはスコープ外のartifact_repositories[].secret WORKSPACE_CONTEXT_NEEDEDagentengine init値に対する非ブロッキング警告も出力します。これには、アクティブな コンテキストなしでワークスペース スコープのエントリが宣言されている場合に--strict が含まれます。これらの警告を終了コード として扱うには、1 を渡します。プライベート アーティファクト リポジトリがクラウドビルドでどのように機能するかについては、「 プライベート アーティファクト リポジトリ 」を参照してください。

注意

agentengine agent validate コマンドは実験的なものです。そのフラグ、 出力形式、および終了コードは、バリデーターが展開してより多くの agent.yaml フィールドをカバーするにつれて変更される可能性があります。

ローカル環境で が実行中れたら、エージェントをテストし、コードを反復処理できます。エージェントを手動でテストしてコード変更を適用する方法については、「 エージェントのテスト 」を参照してください。