Amazon Bedrock AgentCore RuntimeでホストしたTerraform MCP ServerにClaude Codeから接続してみる

Amazon Bedrock AgentCore RuntimeでホストしたTerraform MCP ServerにClaude Codeから接続してみる

2025.08.05

Amazon Bedrock AgentCore Runtimeを使うと、簡単にリモートMCPサーバをデプロイできます。

以前これを使って、Terraform MCPサーバーをデプロイしました。

Terraform MCP ServerをAWS Marketplaceでサブスクライブして、Amazon Bedrock AgentCoreを使ってセットアップしてみた | DevelopersIO

今回は、Claude CodeからデプロイしたリモートMCPサーバーに接続してみます。

認証用のAmazon Cognitoユーザープールの用意

今回はAgent Runtimeの認証にAmazon Cognitoユーザープールを使います。

公式ドキュメントにCognitoセットアップ用のスクリプトがあるためこれを利用します。

Deploy MCP servers in AgentCore Runtime - Amazon Bedrock AgentCore

setup_cognito.sh
#!/bin/bash

# Create User Pool and capture Pool ID directly
export POOL_ID=$(aws cognito-idp create-user-pool \
  --pool-name "MyUserPool" \
  --policies '{"PasswordPolicy":{"MinimumLength":8}}' \
  --region us-east-1 | jq -r '.UserPool.Id')

# Create App Client and capture Client ID directly
export CLIENT_ID=$(aws cognito-idp create-user-pool-client \
  --user-pool-id $POOL_ID \
  --client-name "MyClient" \
  --no-generate-secret \
  --explicit-auth-flows "ALLOW_USER_PASSWORD_AUTH" "ALLOW_REFRESH_TOKEN_AUTH" \
  --region us-east-1 | jq -r '.UserPoolClient.ClientId')

# Create User
aws cognito-idp admin-create-user \
  --user-pool-id $POOL_ID \
  --username "testuser" \
  --temporary-password "TempPassword0123!" \
  --region us-east-1 \
  --message-action SUPPRESS > /dev/null

# Set Permanent Password
aws cognito-idp admin-set-user-password \
  --user-pool-id $POOL_ID \
  --username "testuser" \
  --password "MyPassword0123!" \
  --region us-east-1 \
  --permanent > /dev/null

# Authenticate User and capture Access Token
export BEARER_TOKEN=$(aws cognito-idp initiate-auth \
  --client-id "$CLIENT_ID" \
  --auth-flow USER_PASSWORD_AUTH \
  --auth-parameters USERNAME='testuser',PASSWORD='MyPassword0123!' \
  --region us-east-1 | jq -r '.AuthenticationResult.AccessToken')

# Output the required values
echo "Pool id: $POOL_ID"
echo "Discovery URL: https://cognito-idp.us-east-1.amazonaws.com/$POOL_ID/.well-known/openid-configuration"
echo "Client ID: $CLIENT_ID"
echo "Bearer Token: $BEARER_TOKEN"

AWS認証情報をコンソールにセットした後に、以下のコマンドを実行します。

source setup_cognito.sh

出力される以下の値は、次のステップで使用するため控えておきます。

  • Discovery URL
  • Client ID
  • Bearer Token

Agent Runtime用のIAM Roleを作成

以下記事の「Agent Runtime用のIAM Roleを作成」を参考にIAM Roleを作成します。

Terraform MCP ServerをAWS Marketplaceでサブスクライブして、Amazon Bedrock AgentCoreを使ってセットアップしてみた | DevelopersIO

Amazon Bedrock Agent Coreを使ってTerraform MCPサーバーをデプロイする

以下のコマンドを実行して、Agent Runtimeを作成します。

<Cognito Discovery URL><Cognito Client ID>前の手順で表示されたものに置き換えてください。

aws bedrock-agentcore-control create-agent-runtime \
  --region us-east-1 \
  --agent-runtime-name "terraform_mcp_server" \
  --description "terraform_mcp_server" \
  --agent-runtime-artifact '{
    "containerConfiguration": {
      "containerUri": "<Terraform MCP Server ECR Image URI>"
    }
  }' \
  --role-arn "arn:aws:iam::<accdountId>:role/service-role/AmazonBedrockAgentCoreRuntimeDefaultServiceRole-TerraformMCPServer" \
  --network-configuration '{
    "networkMode": "PUBLIC"
  }' \
  --protocol-configuration '{
    "serverProtocol": "MCP"
  }' \
  --authorizer-configuration '{
    "customJWTAuthorizer": {
      "discoveryUrl": "<Cognito Discovery URL>",
      "allowedClients": ["<Cognito Client ID>"]
    }
  --environment-variables '{
    "MCP_SESSION_MODE": "stateless",
    "MCP_CORS_MODE": "strict",
    "MCP_ALLOWED_ORIGINS": "http://127.0.0.1:8000",
    "TRANSPORT_MODE": "streamable-http",
    "TRANSPORT_HOST": "0.0.0.0",
    "TRANSPORT_PORT": "8000"
  }'

コマンド実行時にAgent ARNが表示されるため、控えておきます。

Claude Codeの設定

Claude Codeに設定する際に、AgentCore RuntimeのURLとCognitoのBearer Tokenが必要です。

AgentCore RuntimeのURLは以下の形式になります。

https://bedrock-agentcore.<Region Name>.amazonaws.com/runtimes/arn%3Aaws%3Abedrock-agentcore%3A<Region Name>%3A<Account ID>%3Aruntime%2F<Runtime Name>/invocations?qualifier=DEFAULT

Agent ARNの部分をURLエンコードする必要があります。

エンドポイントURLを作成する際は、エージェントランタイムARNをURLエンコードしてください。エンコードされたURLでは、コロン(:)は%3A、スラッシュ(/)は%2Fになります。

Deploy MCP servers in AgentCore Runtime - Amazon Bedrock AgentCore

CognitoのBearer Tokenの有効期限はデフォルトは1時間です。

この時点で期限が切れている場合は、以下を実行してBearer Tokenを再発行します。(Cognitoセットアップスクリプトの一部)

# Authenticate User and capture Access Token
export BEARER_TOKEN=$(aws cognito-idp initiate-auth \
  --client-id "$CLIENT_ID" \
  --auth-flow USER_PASSWORD_AUTH \
  --auth-parameters USERNAME='testuser',PASSWORD='MyPassword0123!' \
  --region us-east-1 | jq -r '.AuthenticationResult.AccessToken')

~/.claude.jsonに以下を追加します。

~/.claude.json
      "mcpServers": {
        "terraform-mcp-remote": {
          "type": "http",
          "url": "https://bedrock-agentcore.us-east-1.amazonaws.com/runtimes/<Escaped Agent ARN>/invocations?qualifier=DEFAULT",
          "headers": {
            "Authorization": "Bearer <Cognito Bearer Token>"
          }
        }
      },

または以下のコマンドで追加します。

export RUNTIME_URL="https://bedrock-agentcore.us-east-1.amazonaws.com/runtimes/<Escaped Agent ARN>/invocations?qualifier=DEFAULT"
claude mcp add --transport http \
  terraform-mcp-remote $RUNTIME_URL \
  -H "Authorization: Bearer $BEARER_TOKEN"

Claude Codeを起動し、/mcpと入力します。terraform-mcp-remoteconnectedになっていればOKです。

claude

zsh_—_terraform-mcp-bedrock-agentcore.png

動作確認

動作確認として、Terraform MCPサーバーのサンプルプロンプトをClaude Codeで実行してみます。

I need help understanding what resources are available in the Google provider that are for AI

登録したMCPサーバーを使って、レスポンスを返していることを確認できました。

zsh_—_terraform-mcp-bedrock-agentcore.png

この記事をシェアする

facebookのロゴhatenaのロゴtwitterのロゴ

© Classmethod, Inc. All rights reserved.