Kiro から AWS Bedrock AgentCore Gateway に mcp-proxy-for-aws で接続する方法

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

はじめに

以前の記事「Kiro (IDE) から AWS ALB ログを自然言語で直接解析する! Bedrock AgentCore Gateway × MCP」では、AgentCore Gateway と Kiro に接続するために bridge.py という Python スクリプトを作成しました。このスクリプトは Cognito 認証、動的なツール登録、引数のアンラップ、HTTP-to-Stdio 変換などを処理していました。

記事を書いた後に気づいたのですが、実は AWS 公式の mcp-proxy-for-aws ツール(2025年10月 GA)を使えば、bridge.py なしで直接接続できることがわかりました。ただし、Gateway を IAM 認証で作成する必要があります。

本記事では、mcp-proxy-for-aws を使って AgentCore Gateway に接続する方法を解説します。

Before

  • Cognito 認証 + bridge.py

  • bridge.py で以下を実装:

    • Cognito トークン取得
    • 動的にMCPツールを登録
    • 引数のアンラップ
    • MCP と HTTP の変換

After

  • IAM 認証 + mcp-proxy-for-aws

  • mcp-proxy-for-aws が自動的に処理:

    • IAM 認証(SigV4 署名)
    • 動的にMCPツールを登録
    • MCP と HTTP の変換

AgentCore Gateway を IAM 認証で作成

AgentCore Gateway を IAM 認証で作成します。ターゲットの登録や実行ロールの設定は前回のブログと同じなので割愛します。

クライアント環境

  • Python 3.11 以上
  • AWS CLI 設定済み(IAM 認証情報)
  • uv インストール済み
  • Kiro IDE インストール済み
  • AgentCore Gateway の基本的な理解

uv のインストール

mcp-proxy-for-awsuvx コマンドで実行するため、事前に uv をインストールする必要があります。

macOS / Linux:

curl -LsSf https://astral.sh/uv/install.sh | sh

Windows (PowerShell):

powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"

Homebrew (macOS):

brew install uv

インストール後、以下のコマンドで確認:

uvx --version

詳細は uv 公式ドキュメント を参照してください。

Kiro の MCP 設定

~/.kiro/settings/mcp.json に以下の設定を追加します。

{
  "mcpServers": {
    "gateway-iam-test": {
      "command": "uvx",
      "args": [
        "mcp-proxy-for-aws@latest",
        "https://gateway-iam-test-xxxxx.gateway.bedrock-agentcore.ap-northeast-1.amazonaws.com/mcp",
        "--service", "bedrock-agentcore",
        "--region", "ap-northeast-1"
      ],
      "env": {
        "AWS_PROFILE": "default"
      },
      "disabled": false,
      "autoApprove": []
    }
  }
}

設定のポイント

  1. endpoint URL: Gateway の URL(/mcp で終わる)
  2. --service: bedrock-agentcore を指定
  3. --region: Gateway のリージョン
  4. AWS_PROFILE: AWS 認証情報のプロファイル

動作確認

Kiro の MCP Server ビューからツールが表示されたことを確認します。

チャットで以下のように実行できます:

2025年8月4日のALBログを取得して

実行結果:

mcp-proxy-for-aws の仕組み

mcp-proxy-for-aws は以下の処理を自動的に行います:

  1. SigV4 署名: AWS IAM 認証情報を使用してリクエストに署名
  2. MCP プロトコル変換: Stdio ↔ HTTP の変換
  3. ツール登録: Gateway のツールを自動的に Kiro に登録
  4. エラーハンドリング: 認証エラーやタイムアウトの処理

内部的な処理フロー

1. Kiro が MCP リクエストを Stdio で送信
   ↓
2. mcp-proxy-for-aws が受信
   ↓
3. AWS 認証情報を取得(環境変数または AWS_PROFILE)
   ↓
4. SigV4 署名を生成
   ↓
5. HTTP リクエストに変換して Gateway に送信
   ↓
6. Gateway からのレスポンスを受信
   ↓
7. Stdio 形式に変換して Kiro に返却

トラブルシューティング

接続できない場合

  1. IAM 権限の確認
aws sts get-caller-identity

使用している IAM ユーザー/ロールに bedrock-agentcore:InvokeGateway 権限があるか確認してください。

よくあるエラー

SignatureDoesNotMatch

An error occurred (SignatureDoesNotMatch) when calling the InvokeGateway operation

原因: SigV4 署名が正しくない

解決方法

  • --service bedrock-agentcore が指定されているか確認
  • --region が Gateway のリージョンと一致しているか確認
  • AWS 認証情報が正しいか確認

まとめ

mcp-proxy-for-aws を使用することで、以下のメリットがあります:

  1. コード不要: bridge.py のような独自スクリプトが不要
  2. メンテナンス性: AWS 公式ツールなので更新が保証される
  3. シンプル: 設定ファイルに数行追加するだけ
  4. セキュリティ: IAM 認証で安全にアクセス

AgentCore Gateway を Kiro で使用する場合は、IAM 認証 + mcp-proxy-for-aws の組み合わせをお勧めします。

参考リンク

山本 哲也 (記事一覧)

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

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