AgentCore Gateway から MCP サーバーへの接続
connection ジェネレーターは、MCP サーバー(TypeScript または Python)を AgentCore Gateway のターゲットとして登録できます。
接続されると、Gateway は MCP サーバーのツールを単一の MCP エンドポイントに集約し、Cedar ポリシーエンジンに対して呼び出しを評価し、IAM SigV4 を使用して MCP サーバーへのアウトバウンドトラフィックに署名します。
このジェネレーターを使用する前に、以下を確認してください:
agentcore-gatewayプロジェクトinfra: agentcoreおよびauth: iamで作成された MCP サーバーコンポーネント(ts#mcp-serverまたはpy#mcp-server)
Gateway は protocol: mcp を持ち、MCP サーバーは auth: iam を持つ必要があります — ジェネレーターは両方を検証します。Gateway は SigV4 でアウトバウンドトラフィックに署名するため、非 IAM の MCP サーバーは接続できません。
ジェネレーターの実行
Section titled “ジェネレーターの実行”- インストール Nx Console VSCode Plugin まだインストールしていない場合
- VSCodeでNxコンソールを開く
- クリック
Generate (UI)"Common Nx Commands"セクションで - 検索
@aws/nx-plugin - connection - 必須パラメータを入力
- クリック
Generate
pnpm nx g @aws/nx-plugin:connectionyarn nx g @aws/nx-plugin:connectionnpx nx g @aws/nx-plugin:connectionbunx nx g @aws/nx-plugin:connectionGateway プロジェクトをソースとして、MCP サーバープロジェクトをターゲットとして選択します。MCP サーバープロジェクトに複数のコンポーネントが含まれている場合は、targetComponent を指定して明確にします。
| パラメータ | 型 | デフォルト | 説明 |
|---|---|---|---|
| sourceProject 必須 | string | - | ソース プロジェクト |
| targetProject 必須 | string | - | 接続先のターゲット プロジェクト |
| sourceComponent | string | - | 接続元のソース コンポーネント (コンポーネント名、ソース プロジェクト ルートからの相対パス、またはジェネレーター ID)。プロジェクトをソースとして明示的に選択するには '.' を使用します。 |
| targetComponent | string | - | 接続先のターゲット コンポーネント (コンポーネント名、ターゲット プロジェクト ルートからの相対パス、またはジェネレーター ID)。プロジェクトをターゲットとして明示的に選択するには '.' を使用します。 |
| preferInstallDependencies | boolean | true | ジェネレーター実行後に依存関係のインストールを優先するかどうか。複数のジェネレーターをバッチ処理する際にインストールを延期する場合はfalseに設定します(後続のジェネレーターがNxプロジェクトグラフを計算できるよう、必要に応じてインストールは実行されます)。最後に一度だけインストールします。 |
ジェネレーターの出力
Section titled “ジェネレーターの出力”ジェネレーターは、新しいソースファイルを生成するのではなく、既存のプロジェクトを接続します。以下のファイルが変更されます:
Directorypackages/<gateway>
- project.json
<gateway>-serve-localが MCP サーバーの<mcp>-serve-localへの依存関係を取得 - serve-local.ts
ATTACHED_MCP_SERVERSが更新され、ローカル gateway が MCP サーバーを集約
- project.json
Gateway プロジェクトの dev ターゲットは、MCP サーバーの <mcp>-dev ターゲットへの依存関係を取得するため、Gateway をローカルで実行すると MCP サーバーも起動します。MCP サーバーは Gateway プロジェクトの local-dev.ts にも登録されるため、ローカル gateway がそのツールを集約します。
スタックへの MCP サーバーターゲットの追加
Section titled “スタックへの MCP サーバーターゲットの追加”ジェネレーターは、Gateway をインスタンス化するスタックやモジュールを知らないため、MCP サーバーターゲットをインフラストラクチャに自動的に接続できません。gateway.addMcpServer(server) の呼び出しを自分で追加してください。
Gateway をインスタンス化するスタックで、MCP サーバーをターゲットとして登録します:
const myMcpServer = new MyMcpServer(this, 'MyMcpServer');const myGateway = new MyGateway(this, 'MyGateway');
// MCP サーバーを Gateway のターゲットとして登録します。ターゲット名は// デフォルトで MCP サーバーコンストラクトの id をケバブケースにしたもの(`my-mcp-server`)になります。myGateway.addMcpServer(myMcpServer);Gateway ターゲット名(デフォルトでは MCP サーバーの mcpServerName)は、Cedar アクション名のプレフィックスとして使用されます — アクション形式は AgentCore::Action::"<targetName>___<toolName>" です。ポリシーの記述セクションを参照してください。ターゲット名は短く安定したものにしてください。後で変更すると、古い名前を参照する Cedar ポリシーが無効になります。
デフォルトのターゲット名を上書きするには、gatewayTargetName を渡します:
myGateway.addMcpServer(myMcpServer, { gatewayTargetName: 'my-mcp' });コンストラクトは iamCredentialProvider.service = 'bedrock-agentcore' でターゲットを構成するため、Gateway は自身の実行ロールを使用してアウトバウンド呼び出しに署名します。
Gateway をインスタンス化する Terraform ファイルで、MCP サーバーターゲットを接続します:
module "my_mcp_server" { source = "../../common/terraform/src/app/mcp-servers/my-mcp-server"}
module "my_gateway" { source = "../../common/terraform/src/app/gateways/my-gateway" policy_dependencies = [aws_bedrockagentcore_gateway_target.my_mcp_server.target_id]}
# MCP サーバーを Gateway のターゲットとして登録resource "aws_bedrockagentcore_gateway_target" "my_mcp_server" { gateway_identifier = module.my_gateway.gateway_id name = "my-mcp-server"
target_configuration { mcp { mcp_server { endpoint = "https://bedrock-agentcore.${local.aws_region}.amazonaws.com/runtimes/${urlencode(module.my_mcp_server.agent_core_runtime_arn)}/invocations?qualifier=DEFAULT" } } }
credential_provider_configuration { gateway_iam_role { service = "bedrock-agentcore" } }}ターゲット name(上記の my-mcp-server)は、Cedar アクション名のプレフィックスとして使用されます — ポリシーの記述セクションを参照してください。policy_dependencies は、このターゲットのアクションを参照する Cedar ポリシーが、ターゲットがそれらを登録した後に作成されることを保証します。
ローカル開発
Section titled “ローカル開発”Gateway をローカルで実行するには:
pnpm nx dev <gateway-name>yarn nx dev <gateway-name>npx nx dev <gateway-name>bunx nx dev <gateway-name>これにより、ローカル gateway と、接続されているすべての MCP サーバーが割り当てられたローカルポートで起動します。ローカル gateway は、接続されたサーバーのツールを集約する単一の MCP エンドポイントを公開します。TypeScript または Python gateway-connection ジェネレーターを介して Gateway に接続されたエージェントは、LOCAL_DEV=true で実行する際にそれを参照します。
�が保たれます。 :::