Bedrock AgentCore Runtime に MCP サーバーをデプロイして Kiro から接続する

記事タイトルとURLをコピーする

はじめに

Bedrock AgentCore Runtime に MCP (Model Context Protocol) サーバーを作成し、Kiro などの MCP クライアントから接続する方法を、実際に検証した内容を含めて詳しく記載します。

公式ドキュメントには書かれていない重要なポイントや、ハマった問題の解決方法を共有します。

目次

  1. 必要なツールのインストール
  2. AWS の準備
  3. プロジェクトのセットアップ
  4. ファイルを作成する
  5. デプロイの実行
  6. Kiro の設定
  7. 動作確認
  8. 最大の落とし穴:エンドポイント URL の違い
  9. トラブルシューティング
  10. 重要なポイントまとめ

1. 必要なツールのインストール

まず、以下のツールをインストールします。

1.1 Python 3.10 以上

# macOS の場合
brew install python@3.11

# バージョン確認
python3 --version

1.2 AWS CLI

# macOS の場合
brew install awscli

# バージョン確認
aws --version

1.3 uv(Python パッケージマネージャー)

# インストール
curl -LsSf https://astral.sh/uv/install.sh | sh

# シェルを再起動するか、以下を実行
source ~/.bashrc  # または ~/.zshrc

# バージョン確認
uv --version

uv は高速な Python パッケージマネージャーで、uvx コマンドで Python パッケージを直接実行できます。Kiro が mcp-proxy-for-aws を実行する際に使用します。

1.4 Kiro(MCP クライアント)

Kiro は既にインストール済みと仮定します。


2. AWS の準備

2.1 AWS CLI の設定

# AWS 認証情報を設定
aws configure

# 入力内容:
# AWS Access Key ID: [あなたのアクセスキー]
# AWS Secret Access Key: [あなたのシークレットキー]
# Default region name: ap-northeast-1  # 東京リージョン
# Default output format: json

2.2 認証確認

# 認証が正しく設定されているか確認
aws sts get-caller-identity

# 以下のような出力が表示されれば OK
# {
#     "UserId": "AIDAXXXXXXXXXX",
#     "Account": "123456789012",
#     "Arn": "arn:aws:iam::123456789012:user/your-user"
# }

2.3 必要な AWS 権限

以下の権限が必要です(IAM ポリシーで確認):

  • bedrock-agentcore:* - AgentCore Runtime の操作
  • ecr:* - ECR リポジトリの作成とプッシュ
  • iam:CreateRole, iam:AttachRolePolicy - IAM ロールの作成
  • logs:* - CloudWatch Logs へのアクセス
  • ssm:PutParameter, ssm:GetParameter - Parameter Store の操作
  • codebuild:* - CodeBuild でのイメージビルド

3. プロジェクトのセットアップ

3.1 作業ディレクトリの作成

# プロジェクトディレクトリを作成
mkdir simple-mcp-server
cd simple-mcp-server

3.2 Python パッケージのインストール

# 必要なパッケージをインストール
pip install bedrock-agentcore-starter-toolkit mcp boto3

# インストール確認
pip list | grep -E "bedrock-agentcore|mcp|boto3"

これで以下がインストールされます:

  • bedrock-agentcore-starter-toolkit - AgentCore Runtime へのデプロイツール
  • mcp - MCP サーバーを作成するためのライブラリ
  • boto3 - AWS SDK for Python

3.3 bedrock-agentcore-starter-toolkit とは

bedrock-agentcore-starter-toolkit は、AWS が提供する公式の Python ライブラリで、AgentCore Runtime へのデプロイを簡単にするためのツールです。

主な機能:

  1. 自動デプロイ

    • Dockerfile の自動生成
    • CodeBuild を使った ARM64 イメージのビルド
    • ECR へのイメージプッシュ
    • IAM ロールの自動作成
    • AgentCore Runtime へのデプロイ
  2. 設定管理

    • .bedrock_agentcore.yaml でデプロイ状態を管理
    • 再デプロイ時に既存の設定を再利用
    • 複数の Agent を管理可能
  3. 開発モード

    • ローカル開発モード(launch(local=True)
    • ローカルビルドモード(launch(local_build=True)
    • クラウドビルドモード(launch()、デフォルト)
  4. 認証設定

    • IAM 認証(デフォルト)
    • OAuth 認証(Cognito など)
    • カスタム認証

このツールキットを使うメリット:

  • AWS CLI で手動で行う複雑な手順を自動化
  • ベストプラクティスに従った設定が自動で適用される
  • エラーハンドリングとリトライ機能
  • デプロイ状態の管理が簡単

公式ドキュメント: - bedrock-agentcore-starter-toolkit on PyPI - AWS Bedrock AgentCore 公式ドキュメント


4. ファイルを作成する

これから、以下の 4 つのファイルを作成します:

simple-mcp-server/
├── simple_mcp_server.py    # MCP サーバー本体
├── requirements.txt         # Python 依存パッケージ
├── deploy_simple.py         # デプロイスクリプト
└── setup_kiro.py           # Kiro 設定スクリプト

4.1 requirements.txt

AgentCore Runtime 上で動作する MCP サーバーが必要とする Python パッケージを指定します。

mcp>=1.10.0

これは、AgentCore Runtime 上で動作する MCP サーバーが必要とするパッケージです。

4.2 simple_mcp_server.py

MCP サーバー本体です。3つのツール(add_numbers, multiply_numbers, greet_user)を提供します。

from mcp.server.fastmcp import FastMCP

# stateless_http=True が必須(AgentCore Runtime の要件)
mcp = FastMCP(host="0.0.0.0", stateless_http=True)

@mcp.tool()
def add_numbers(a: int, b: int) -> int:
    """Add two numbers together"""
    return a + b

@mcp.tool()
def multiply_numbers(a: int, b: int) -> int:
    """Multiply two numbers together"""
    return a * b

@mcp.tool()
def greet_user(name: str) -> str:
    """Greet a user by name"""
    return f"Hello, {name}! Nice to meet you."

if __name__ == "__main__":
    # transport="streamable-http" が必須
    mcp.run(transport="streamable-http")

このスクリプトの詳細:

  1. FastMCP の初期化

    • host="0.0.0.0" - コンテナ内で全てのネットワークインターフェースからアクセス可能にする。ポートはデフォルトで 8000 であり AgentCore Runtime の要件と一致する。
    • stateless_http=True - AgentCore Runtime はステートレスな HTTP 接続を要求するため必須
  2. ツールの定義

    • @mcp.tool() デコレータで関数を MCP ツールとして登録
    • 関数名がツール名になる(例: add_numbers
    • docstring がツールの説明として使われる
    • 型ヒント(int, str)が MCP のスキーマ定義に使われる
  3. サーバーの起動

    • transport="streamable-http" - AgentCore Runtime が要求する HTTP トランスポート方式
    • このトランスポートにより、リクエスト/レスポンスのストリーミングが可能になる

4.3 deploy_simple.py

AgentCore Runtime へのデプロイを自動化するスクリプトです。以下を実行します

  • AgentCore Runtime の設定
  • CodeBuild でのイメージビルド
  • ECR へのプッシュ
  • Agent のデプロイ
  • Agent ARN を Parameter Store に保存
#!/usr/bin/env python3
"""
Deploy simple MCP server with IAM authentication
"""
import os
import boto3
from boto3.session import Session
from bedrock_agentcore_starter_toolkit import Runtime

def main():
    boto_session = Session()
    region = boto_session.region_name
    agent_name = "simple_mcp_server"
    
    print(f"Deploying Simple MCP Server (IAM Auth)")
    print(f"Region: {region}")
    print("=" * 50)
    
    # Check required files
    if not os.path.exists('simple_mcp_server.py'):
        print("ERROR: simple_mcp_server.py not found")
        return
    
    if not os.path.exists('requirements.txt'):
        print("ERROR: requirements.txt not found")
        return
    
    print("All required files found")
    
    # Configure AgentCore Runtime with IAM auth
    print("\nConfiguring AgentCore Runtime with IAM authentication...")
    agentcore_runtime = Runtime()
    
    response = agentcore_runtime.configure(
        entrypoint="simple_mcp_server.py",
        auto_create_execution_role=True,
        auto_create_ecr=True,
        requirements_file="requirements.txt",
        region=region,
        protocol="MCP",
        agent_name=agent_name
    )
    print("Configuration completed")
    
    # Launch
    print("\nLaunching to AgentCore Runtime...")
    print("This may take several minutes...")
    launch_result = agentcore_runtime.launch(auto_update_on_conflict=True)
    print("Launch completed")
    print(f"Agent ARN: {launch_result.agent_arn}")
    
    # Store Agent ARN
    print("\nStoring Agent ARN...")
    ssm_client = boto3.client('ssm', region_name=region)
    ssm_client.put_parameter(
        Name='/simple_mcp_server/agent_arn',
        Value=launch_result.agent_arn,
        Type='String',
        Description='Simple MCP Server Agent ARN',
        Overwrite=True
    )
    print("Agent ARN stored in Parameter Store")
    
    print("\n" + "=" * 50)
    print("Deployment completed!")
    print(f"Agent ARN: {launch_result.agent_arn}")
    print("\nNext: Run 'python3 setup_kiro.py' to configure Kiro")

if __name__ == "__main__":
    main()

このスクリプトの詳細:

  1. AWS セッションの初期化

    • Session() で現在の AWS 認証情報を取得
    • region_name で設定されているリージョンを取得(aws configure で設定した値)
  2. 必要なファイルの確認

    • simple_mcp_server.pyrequirements.txt の存在を確認
    • ファイルがない場合はエラーメッセージを表示して終了
  3. AgentCore Runtime の設定

    • Runtime() オブジェクトを作成
    • configure() メソッドで以下を設定:
      • entrypoint - MCP サーバーのエントリーポイントファイル
      • auto_create_execution_role=True - IAM ロールを自動作成
      • auto_create_ecr=True - ECR リポジトリを自動作成
      • requirements_file - Python 依存パッケージのリスト
      • protocol="MCP" - MCP プロトコルを使用することを明示
      • agent_name - Agent の名前(ECR リポジトリ名などに使用される)
    • この時点で Dockerfile.bedrock_agentcore.yaml が自動生成される
  4. デプロイの実行

    • launch(auto_update_on_conflict=True) メソッドで以下が自動実行される:
      • CodeBuild でコンテナイメージをビルド(ARM64 アーキテクチャ)
      • ECR にイメージをプッシュ
      • IAM 実行ロールを作成(CloudWatch Logs への書き込み権限を含む)
      • AgentCore Runtime を起動
      • エンドポイントを作成
      • 重要: auto_update_on_conflict=True により、同じ名前の Agent が既に存在する場合は自動的に更新される
    • launch_result.agent_arn に Agent の ARN が返される
  5. Agent ARN の保存

    • AWS Systems Manager Parameter Store に Agent ARN を保存
    • パラメータ名: /simple_mcp_server/agent_arn
    • 後で setup_kiro.py がこの値を読み取る
    • Overwrite=True で既存の値を上書き可能にする

AWS CLI だけでできる?

bedrock_agentcore_starter_toolkit を使わずに AWS CLI だけでデプロイすることも可能ですが、以下の手順を全て手動で行う必要があります:

  1. ECR リポジトリの作成
  2. Dockerfile の作成とイメージのビルド
  3. ECR へのログインとプッシュ
  4. IAM ロールの作成と権限設定
  5. AgentCore Runtime の作成

bedrock_agentcore_starter_toolkit はこれら全てを自動化してくれるため、手動でやるよりも遥かに簡単で、エラーも少なくなります。特に以下の点で便利です:

  • Dockerfile の自動生成(適切な設定が自動で入る)
  • CodeBuild を使った ARM64 イメージのビルド(ローカルに Docker 不要)
  • IAM ロールの適切な権限設定
  • .bedrock_agentcore.yaml での状態管理(再デプロイやクリーンアップが簡単)

4.4 setup_kiro.py

Kiro の MCP 設定を生成して表示するスクリプトです。以下を実行します

  • Parameter Store から Agent ARN を取得
  • 正しいエンドポイント URL(/invocations)を生成
  • Kiro の MCP 設定 JSON を表示
#!/usr/bin/env python3
"""
Display Kiro configuration for simple MCP server
"""
import boto3
import json
from boto3.session import Session

def main():
    boto_session = Session()
    region = boto_session.region_name
    
    print("Retrieving Agent ARN...")
    
    # Get Agent ARN from Parameter Store
    ssm_client = boto3.client('ssm', region_name=region)
    try:
        response = ssm_client.get_parameter(Name='/simple_mcp_server/agent_arn')
        agent_arn = response['Parameter']['Value']
        print(f"Agent ARN: {agent_arn}")
    except Exception as e:
        print(f"ERROR: {e}")
        print("\nMake sure you ran 'python3 deploy_simple.py' first!")
        return
    
    # Build MCP URL - 重要:/invocations エンドポイントを使用
    encoded_arn = agent_arn.replace(':', '%3A').replace('/', '%2F')
    mcp_url = f"https://bedrock-agentcore.{region}.amazonaws.com/runtimes/{encoded_arn}/invocations"
    
    print(f"\nMCP URL: {mcp_url}")
    
    # Create Kiro MCP configuration
    kiro_config = {
        "simple-mcp-server": {
            "command": "uvx",
            "args": [
                "mcp-proxy-for-aws@latest",
                mcp_url,
                "--service",
                "bedrock-agentcore",
                "--region",
                region
            ],
            "env": {
                "AWS_PROFILE": "default"
            },
            "disabled": False,
            "autoApprove": []
        }
    }
    
    print("\n" + "=" * 70)
    print("Kiro MCP Configuration")
    print("=" * 70)
    print("\nAdd the following to ~/.kiro/settings/mcp.json")
    print("under the 'mcpServers' section:\n")
    print(json.dumps(kiro_config, indent=2))
    print("\n" + "=" * 70)
    print("\nNext steps:")
    print("1. Open ~/.kiro/settings/mcp.json")
    print("2. Add the above configuration to 'mcpServers' section")
    print("3. Restart Kiro")
    print("4. Check MCP Server view for 'simple-mcp-server'")
    print("5. Available tools:")
    print("   - add_numbers(a, b)")
    print("   - multiply_numbers(a, b)")
    print("   - greet_user(name)")

if __name__ == "__main__":
    main()

このスクリプトの詳細:

  1. Agent ARN の取得

    • AWS Systems Manager Parameter Store から Agent ARN を取得
    • パラメータ名: /simple_mcp_server/agent_arn
    • deploy_simple.py で保存した値を読み取る
    • パラメータが存在しない場合はエラーメッセージを表示
  2. MCP エンドポイント URL の構築

    • Agent ARN を URL エンコード(:%3A, /%2F
    • 重要: /invocations エンドポイントを使用
    • 形式: https://bedrock-agentcore.{region}.amazonaws.com/runtimes/{encoded_arn}/invocations
    • /mcp エンドポイントは使わない(これが最大の落とし穴)
  3. Kiro MCP 設定の生成

    • simple-mcp-server の設定を生成
    • command: "uvx" - uv の実行コマンド(Python パッケージを実行)
    • args の内容:
      • mcp-proxy-for-aws@latest - AWS の公式 MCP プロキシツール(後述)
      • MCP URL - 接続先のエンドポイント
      • --service bedrock-agentcore - AWS SigV4 署名のサービス名(必須)
      • --region - AWS リージョン
    • env.AWS_PROFILE - 使用する AWS プロファイル(デフォルトは "default")
    • disabled: false - MCP サーバーを有効化
    • autoApprove: [] - 自動承認するツールのリスト(空の場合は全て手動承認)
  4. 設定内容の表示

    • JSON 形式で設定内容を表示(インデント 2 スペース)
    • ユーザーが手動で ~/.kiro/settings/mcp.json に追加する
    • 既存の設定を上書きしないため、安全

mcp-proxy-for-aws とは?

mcp-proxy-for-aws は、AWS が公式に提供する MCP プロキシツールです(2025年10月31日リリース)。

主な機能

  • MCP クライアント(Kiro など)と AWS がホストする MCP サーバー間の通信を仲介
  • AWS SigV4 認証を自動的に処理
  • IAM 認証情報を使って AWS サービスに接続
  • 読み取り専用モード、リトライロジック、ロギングなどの安全機能を提供

このツールがないと、MCP クライアントから AgentCore Runtime に接続する際の AWS 認証を手動で実装する必要があります。uvx コマンドで実行することで、インストール不要で最新版を自動的にダウンロードして使用できます。

詳細: https://github.com/aws/mcp-proxy-for-aws

4.5 作成したファイルの確認

# ファイルが全て作成されたか確認
ls -la

# 以下のファイルがあれば OK:
# simple_mcp_server.py
# requirements.txt
# deploy_simple.py
# setup_kiro.py

5. デプロイの実行

5.1 デプロイスクリプトを実行

python3 deploy_simple.py

何が起こるか:

  1. 設定フェーズ(数秒)

    • Dockerfile.dockerignore が自動生成される
    • .bedrock_agentcore.yaml が作成される(デプロイ状態を保存)
  2. ビルドフェーズ(2-3分)

    • CodeBuild が起動
    • ARM64 コンテナイメージがビルドされる
    • ECR リポジトリが自動作成される
    • イメージが ECR にプッシュされる
  3. デプロイフェーズ(2-3分)

    • IAM ロールが自動作成される
    • AgentCore Runtime が起動する
    • エンドポイントが作成される
  4. 完了

    • Agent ARN が表示される
    • Parameter Store に保存される

成功時の出力例:

Deployment completed!
Agent ARN: arn:aws:bedrock-agentcore:ap-northeast-1:123456789012:runtime/simple_mcp_server-xxxxx

Next: Run 'python3 setup_kiro.py' to configure Kiro

5.2 生成されたファイルの確認

ls -la

# 以下のファイルが追加されているはず:
# .bedrock_agentcore.yaml  ← デプロイ状態(重要!削除しない)
# Dockerfile               ← 自動生成されたコンテナ定義
# .dockerignore            ← 自動生成された除外設定

重要: .bedrock_agentcore.yaml は削除しないでください。このファイルには:

  • Agent ARN
  • ECR リポジトリ情報
  • IAM ロール情報

が保存されており、再デプロイやクリーンアップ時に必要です。

ただし、AWS アカウント ID などの機密情報が含まれるため、Git にコミットする場合は .gitignore に追加することを推奨します。

5.3 作成される AWS リソース

デプロイが成功すると、以下の AWS リソースが自動的に作成されます:

1. AgentCore Runtime

  • リソース名: simple_mcp_server
  • Agent ARN: arn:aws:bedrock-agentcore:ap-northeast-1:XXXX:runtime/simple_mcp_server-XXXXX
  • プロトコル: MCP
  • ネットワーク: PUBLIC

2. ECR リポジトリ

  • リポジトリ名: bedrock-agentcore-simple_mcp_server
  • URI: XXXX.dkr.ecr.ap-northeast-1.amazonaws.com/bedrock-agentcore-simple_mcp_server
  • イメージタグ: latest
  • アーキテクチャ: ARM64

3. IAM ロール(実行ロール)

  • ロール名: AmazonBedrockAgentCoreSDKRuntime-ap-northeast-1-XXXXX
  • 用途: AgentCore Runtime の実行権限
  • アタッチされるポリシー:
    • CloudWatch Logs への書き込み権限
    • ECR からのイメージプル権限

4. IAM ロール(CodeBuild ロール)

  • ロール名: AmazonBedrockAgentCoreSDKCodeBuild-ap-northeast-1-XXXXX
  • 用途: CodeBuild でのイメージビルド権限
  • アタッチされるポリシー:
    • ECR へのプッシュ権限
    • S3 へのアクセス権限
    • CloudWatch Logs への書き込み権限

5. CodeBuild プロジェクト

  • プロジェクト名: bedrock-agentcore-simple_mcp_server-builder
  • 用途: ARM64 コンテナイメージのビルド
  • ビルド環境: AWS が管理する ARM64 環境

6. S3 バケット(ソースコード保存用)

  • バケット名: bedrock-agentcore-codebuild-sources-XXXX-ap-northeast-1
  • 用途: CodeBuild のソースコードアップロード先
  • 複数の Agent で共有される

7. Parameter Store エントリ

  • パラメータ名: /simple_mcp_server/agent_arn
  • 値: Agent ARN
  • 用途: setup_kiro.py が Agent ARN を取得するため

8. CloudWatch Logs ロググループ

  • ロググループ名: /aws/bedrock-agentcore/runtimes/{agent-id}-DEFAULT
  • 用途: AgentCore Runtime の実行ログ
  • 保持期間: デフォルト(無期限)

6. Kiro の設定

6.1 Kiro 設定スクリプトを実行

python3 setup_kiro.py

何が起こるか:

  1. Parameter Store から Agent ARN を取得
  2. 正しいエンドポイント URL を生成(/invocations
  3. Kiro MCP 設定の JSON を表示

成功時の出力例:

6.2 設定を mcp.json に追加

スクリプトが表示した JSON 設定を、~/.kiro/settings/mcp.json に手動で追加します。

# 設定ファイルを開く
open ~/.kiro/settings/mcp.json
# または
code ~/.kiro/settings/mcp.json
# または
vim ~/.kiro/settings/mcp.json

既存の設定がない場合:

{
  "mcpServers": {
    "simple-mcp-server": {
      "command": "uvx",
      "args": [
        "mcp-proxy-for-aws@latest",
        "https://bedrock-agentcore.ap-northeast-1.amazonaws.com/runtimes/arn%3Aaws%3Abedrock-agentcore%3Aap-northeast-1%3A123456789012%3Aruntime%2Fsimple_mcp_server-xxxxx/invocations",
        "--service",
        "bedrock-agentcore",
        "--region",
        "ap-northeast-1"
      ],
      "env": {
        "AWS_PROFILE": "default"
      },
      "disabled": false,
      "autoApprove": []
    }
  }
}

既存の設定がある場合:

既存の mcpServers セクションに追加します:

{
  "mcpServers": {
    "aws-documentation": {
      // 既存の設定
    },
    "simple-mcp-server": {
      // 上記の設定を追加
      "command": "uvx",
      "args": [
        "mcp-proxy-for-aws@latest",
        "https://...",
        "--service",
        "bedrock-agentcore",
        "--region",
        "ap-northeast-1"
      ],
      "env": {
        "AWS_PROFILE": "default"
      },
      "disabled": false,
      "autoApprove": []
    }
  }
}

6.3 Kiro を再起動

Kiro を完全に再起動します(設定を反映させるため)。


7. 動作確認

7.1 MCP Server ビューで確認

Kiro を再起動後、以下を確認します:

  1. Kiro の左サイドバーから「MCP Servers」ビューを開く
  2. simple-mcp-server が表示されているか確認
  3. ステータスが「Connected (3 tools)」になっているか確認

接続成功の表示例:

7.2 実際にツールを使ってみる

Kiro のチャットで以下のように質問してみます:

例 1: 足し算

あなた: 5 + 3 を計算して

Kiro が add_numbers ツールを呼び出し、結果を返します。

例 2: 掛け算

あなた: 4 × 7 を計算して

Kiro が multiply_numbers ツールを呼び出します。

例 3: 挨拶

あなた: ぱるよ に挨拶して

Kiro が greet_user ツールを呼び出します。

7.3 ログで確認

AgentCore Runtime のログを確認して、リクエストが届いているか確認できます:

# Agent ID を取得(.bedrock_agentcore.yaml から)
cat .bedrock_agentcore.yaml | grep agent_id

# ログを確認
aws logs tail /aws/bedrock-agentcore/runtimes/{agent-id}-DEFAULT \
  --since 10m --format short --follow

ツールの呼び出しに成功していれば、以下のようなログが表示されます:

02:27:51 Processing request of type CallToolRequest
02:28:09 Processing request of type CallToolRequest
02:28:51 Processing request of type CallToolRequest

8. 最大の落とし穴:エンドポイント URL の違い

ここが最も重要なポイントです。公式ドキュメントと実際に動作する URL が異なります。

動かない URL

以下の URL では接続に失敗します:

パターン 1: クエリパラメータ付き(公式ドキュメントに記載)

https://bedrock-agentcore.{region}.amazonaws.com/runtimes/{encoded_arn}/mcp?qualifier=DEFAULT

パターン 2: クエリパラメータなし

https://bedrock-agentcore.{region}.amazonaws.com/runtimes/{encoded_arn}/mcp

どちらの /mcp エンドポイントも、AgentCore Runtime は PingRequest しか処理しません。実際の MCP initialize リクエストが届かず、"Session terminated" エラーや "Connection Failed" になります。

動く URL(実際に必要な URL)

https://bedrock-agentcore.{region}.amazonaws.com/runtimes/{encoded_arn}/invocations

/invocations エンドポイントを使う必要があります。

実際に検証した結果:

  • /mcp?qualifier=DEFAULT → Connection Failed ✗
  • /mcp → Connection Failed ✗
  • /invocations → Connected (3 tools) ✓

9. ポイントまとめ

重要な設定

  1. エンドポイント: /invocations を使う(/mcp ではない)
  2. mcp.json の --service パラメータ: bedrock-agentcore を指定
  3. stateless_http: True に設定
  4. transport: streamable-http を使用
  5. .bedrock_agentcore.yaml: 削除しない(再デプロイ時に必要)

参考資料


クリーンアップ(アンデプロイ)

デプロイした MCP サーバーを削除する方法です。

AWS マネジメントコンソールで削除

関連リソースの削除

Agent を削除しても、以下のリソースは残ります。必要に応じて手動で削除してください:

1. ECR リポジトリとイメージ

# ECR リポジトリを削除(イメージも全て削除される)
aws ecr delete-repository \
  --repository-name bedrock-agentcore-simple_mcp_server \
  --force \
  --region ap-northeast-1

2. Parameter Store のエントリ

# Parameter Store のエントリを削除
aws ssm delete-parameter \
  --name /simple_mcp_server/agent_arn \
  --region ap-northeast-1

3. IAM ロール

IAM ロールは複数の Agent で共有されている可能性があります。他に Agent がない場合のみ削除してください:

# 実行ロールを削除
aws iam delete-role \
  --role-name AmazonBedrockAgentCoreSDKRuntime-ap-northeast-1-xxxxx

# CodeBuild ロールを削除
aws iam delete-role \
  --role-name AmazonBedrockAgentCoreSDKCodeBuild-ap-northeast-1-xxxxx

注意: ロールを削除する前に、アタッチされているポリシーをデタッチする必要があります。

4. Kiro の設定

~/.kiro/settings/mcp.json から simple-mcp-server のエントリを削除し、Kiro を再起動します。


まとめ

AWS Bedrock AgentCore Runtime に MCP サーバーをデプロイして Kiro から接続するには、公式ドキュメントに書かれていない重要なポイントがいくつかあります:

  1. /invocations エンドポイントを使う(最重要)
  2. --service bedrock-agentcore を指定する
  3. IAM 認証を使う(OAuth より簡単)
  4. .bedrock_agentcore.yaml を削除しない

これらのポイントを押さえれば、AgentCore Runtime 上の MCP サーバーを Kiro などの MCP クライアントから使えるようになります。

この記事が、同じ問題で困っている方の助けになれば幸いです。


余談

トレイルランニングの大会、「FUJI 100」 のコースを走ってみました。
当然かのように富士山が綺麗でした。

ちなみに FUJI 100 には出場しません。
今年は Tokyo Grand Trail に出たいです。

山本 哲也 (記事一覧)

多分インフラエンジニアです。データ分析に興味あります。

山を走るのが趣味です。今年は 100 マイルレース完走します。