やっていきましょう
AgentCore Gatewayを作成する
-
Amazon Bedrock AgentCoreの管理画面を開きます。
-
まずはAPIキーを保存します。
- メニューの「Identity」を選択します
- 右下のオレンジボタンの「Add API key」
モーダルダイアログにAPI Keyを登録します。
APIキーはTavilyのサイトで事前に取得する必要があります。
登録できました。
-
続いてゲートウェイを作成します。
- メニューの「Gateways」を選択します
- オレンジ色の「Create gateway」を選択します
項目に入力していきます。デフォルトで行けるところはデフォルトで行きましょう。この画面はこのままでOKです。
- 「Target Description」を入力します
- Target typeを「Integrations」に変更し、「Browse providers」をクリックします
Tavilyを選択し、「Select」をクリックします
- API keyは先ほどIdentityとして登録したAPIキーを選択します。
- 「Create Gateway」をクリックします
ゲートウェイができました!
Discovery URL、Gateway resource URLを後で使用します。
Bearerトークンを生成する
さて、このリモートMCPサーバーのアクセスはBearerトークンによる認証が有効化されています。このトークンを生成します。
おそらくプレビューだからだと思いますが、ここのドキュメントがありませんw
しれっとデフォルト設定で進めてきましたが、実はAmazon Cognitoが作成されていまして、認証機能はCognitoが担当しています。
-
Cognitoの管理画面を開き、該当の(作成日時が一番最近のやつ)を選択します。
メニューの「アプリケーションクライアント」を選択します。 -
一つだけ登録されているアプリケーションクライアント名を選択します。
-
クライアントID
とクライアントシークレット
をコピーします。 -
ログインページタブを選び、
カスタムスコープ
をコピーします。
ここからCloudShellで作業します。
これまでにコピーした値をセットします。
export CLIENT_ID=*****
export CLIENT_SECRET=*****
export CUSTOM_SCOPE=*****
export DISCOVERY_URL=https://cognito-idp.us-east-1.amazonaws.com/*****
トークンを発行します。
AUTH_HEADER=$(echo -n "${CLIENT_ID}:${CLIENT_SECRET}" | base64 -w 0)
TOKEN_ENDPOINT=$(curl ${DISCOVERY_URL} | jq -r .token_endpoint)
ACCESS_TOKEN=$(curl -X POST ${TOKEN_ENDPOINT} \
-H "Content-Type: application/x-www-form-urlencoded" \
-H "Authorization: Basic ${AUTH_HEADER}" \
-d "grant_type=client_credentials&scope=${CUSTOM_SCOPE}" | jq -r .access_token)
echo $ACCESS_TOKEN
正直、何をやってるかわかってませんが、「セキュアリモートパスワード (SRP)」という認証フローだそうです。Amazon Q Develoer CLIが教えてくれました。
後日Claude Desktopに聞いたらClient Credentials Grantと教えてくれました。 どっち??
これでトークンが発行できました。
VSCodeから接続!
それではVSCodeから接続してみましょう。
-
VSCodeを起動し、GitHub Copilotのチャットを開きます。
-
名前をつけます。
-
MCPの設定ファイルが作成されますが、設定が不足しているので接続に失敗します。
こんな感じでHTTPヘッダーにAuthorizationヘッダーを送信するように設定します。{ "servers": { "my-mcp-server-1ba6c630": { "url": "*****", "type": "http", "headers": { "Authorization": "Bearer ${input:api_key}", } } }, "inputs": [ { "id": "api_key", "type": "promptString", "description": "Enter your api key", "password": true } ] }
-
設定したら、設定ファイルの中に表示される「再起動」をクリックします
-
トークンの入力欄が表示されるので、トークン文字列を入力します。
-
「実行中」になり、ツールの数が表示されれば接続成功です。
チャット欄で呼び出してみましょう
やったね!
アクセストークンの有効期限が1時間なので気をつけよう