メインコンテンツまでスキップ

Kuroco MCP サーバと Amazon Bedrock AgentCore Gateway の連携

このチュートリアルでは、OAuth 2.0 の client_credentials 認証を使って、Kuroco MCP サーバを Amazon Bedrock AgentCore Gateway に接続する手順を説明します。

この連携は、大きく次の 3 つのパートで構成されます。

  1. Kuroco の OAuth Authorization Server を設定し、client_credentials 用のクライアントを登録する。
  2. そのクライアントを、Amazon Bedrock AgentCore にアウトバウンドの OAuth クライアントプロバイダーとして登録する。
  3. AgentCore Gateway を作成し、Kuroco MCP サーバを MCP ターゲットとして追加する。

最終的なフローは次のとおりです。

クライアントまたはエージェント
→ Amazon Bedrock AgentCore Gateway
→ client_credentials を使った Kuroco OAuth Authorization Server
→ Kuroco MCP サーバ

1. Kuroco の OAuth Authorization Server を設定する

この連携は、Kuroco に組み込まれた OAuth Authorization Server を利用します。OAuth Authorization Server は、Amazon Bedrock AgentCore が Kuroco MCP サーバを呼び出す際に使用するアクセストークンを発行します。

このセクションでは、次の作業を行います。

  1. 用途が API の OAuth Authorization Server を作成(または既存のものを再利用)する。
  2. client_credentials グラントに対応したコンフィデンシャルクライアントを登録する。
  3. 後で Amazon Bedrock AgentCore に入力する値を収集する。

1.1 前提条件

  • MCP サーバが有効になっており、かつ API セキュリティが none 以外の値に設定されている Kuroco API エンドポイント。

    client_credentials グラントは、Kuroco MCP サーバが OAuth を通じて検証するベアラートークンを発行します。

対象 API の MCP 設定から、その API の MCP エンドポイント URL を取得します。URL は次の形式です。

https://{your-site}.g.kuroco.app/rcms-api/{api_id}/mcp

Image from Gyazo

エンドポイントで MCP サーバがまだ有効化されていない場合は、先に MCP サーバを設定してください(エンドポイントの MCP 設定: ツール名、入力スキーマ、ステータス)。

注記

このチュートリアルでは、Client API MCP サーバ/rcms-api/{api_id}/mcp)を使用します。これは用途が API の OAuth Authorization Server に紐付いています。管理系の操作を公開したい場合は、用途が AdminMCP の OAuth Authorization Server に紐付く Admin MCP サーバ/direct/rcms_api/admin_mcp/)を使って、同じ流れで設定できます。設定手順は同様ですが、用途・スコープ・オーディエンスが異なります。

1.2 OAuth Authorization Server を作成する

注記

新規に作成する代わりに、用途が API の既存の認可サーバー(Kuroco が Kuroco MCP API (default) という名前でデフォルトの認可サーバーを自動作成している場合があります)を再利用できます。再利用する場合は、その 対応するグラントタイプclient_credentials が含まれていること、および 許可するスコープapi:read(必要に応じて api:write)が含まれていることを確認してください。グラントタイプはクライアントごとに選択されるため、共有する認可サーバーで client_credentials を有効にしても、他のグラントを使う既存のクライアントには影響しません。

Kuroco 管理画面で 「外部システム連携」→「OAuth Authorization Server」 を開き、「+追加」 をクリックして、次のとおり設定します。

項目設定値
名前任意のラベル(例: Bedrock AgentCore)。
用途API/rcms-api/{api_id}/mcp で公開されるコンテンツ API を保護します)。この値は作成後に変更できません。
対応するグラントタイプclient_credentials を有効にします。(この連携では authorization_code / refresh_token は不要です。)
許可するスコープapi:read を有効にします(クライアントで書き込み操作を行う場合は api:write も有効にします)。
アクセストークン有効期間3600(秒。デフォルト)。
リフレッシュトークン有効期間2592000(秒。デフォルト)。
認可コード有効期間60(秒。デフォルト)。
ログインページ URLデフォルト(https://{your-domain}.g.kuroco-mng.app/management/login/login/)のままにします。この項目は用途が API の認可サーバーでは必須ですが、client_credentials フローでは使用されません。
有効ON

「追加」 をクリックして保存します。

Image from Gyazo

保存後、作成した認可サーバーを再度開きます。後で必要になる 2 つの読み取り専用の値が表示されます。

  • 発行元 (Issuer) URL。次の形式です。

    https://{your-site}.g.kuroco.app/direct/login/oauth_idp/{id}
  • メタデータ URL。次の形式です。

    https://{your-site}.g.kuroco.app/.well-known/oauth-authorization-server/direct/login/oauth_idp/{id}

1.3 OAuth クライアントを登録する

認可サーバー一覧で、作成した認可サーバーの行にある 「クライアントを管理」 をクリックし、続いて 「+追加」 をクリックして、クライアントを次のとおり設定します。

項目設定値
クライアント名任意のラベル(例: Bedrock AgentCore)。
トークンエンドポイント認証方式client_secret_basic。このチュートリアルでは client_secret_basic を使用しますが、client_secret_post も利用できます。Amazon Bedrock AgentCore 側と同じ方式を選択してください。none にすることはできません。client_credentials にはコンフィデンシャルクライアントが必要です。
対応するグラントタイプclient_credentials を有効にします。
サービスメンバー発行されるトークンが振る舞うメンバーを選択します。Gateway からのすべての MCP 呼び出しはこのメンバーの権限で実行されるため、必要最小限の権限を持つメンバーを選択してください。このメンバーはトークンを生成できる必要があります。この項目は client_credentials を選択した場合に必須です。
デフォルト APIこのトークンの対象となる、MCP が有効な API を選択します。これによりトークンのオーディエンス(RFC 8707 の resource)が設定されます。この連携では必須です。 Amazon Bedrock AgentCore は resource パラメータを送信しないため、デフォルト API を設定しないと、トークンエンドポイントはリクエストを invalid_target で拒否します。
許可するスコープapi:read を選択します(書き込み操作を行う場合は api:write も選択します)。少なくとも 1 つの機能スコープが必要です。
リダイレクト URI空欄のままにします。リダイレクト URI は authorization_code グラントでのみ必要ですが、この連携では使用しません。
有効ON

Image from Gyazo

「追加」 をクリックすると、次のようになります。

  • クライアント ID が自動的に生成されます。
  • 認証方式が none ではないため、クライアントシークレット が生成され、一度だけ 表示されます。再表示はできないため、すぐに控えてください(紛失した場合は、クライアント編集画面から再生成できます)。

Image from Gyazo

1.4 Amazon Bedrock AgentCore 用の値を収集する

これで AgentCore の設定に必要なものがそろいました。次の値を収集します。

  • クライアント IDクライアントシークレット(登録したクライアントから取得)。
  • 発行元 (Issuer)認可エンドポイントトークンエンドポイント

各エンドポイントを取得するには、セクション 1.2 の メタデータ URL を開きます。この URL は OAuth 2.0 Authorization Server Metadata ドキュメント(RFC 8414)を返します。JSON から次の値を取得します。

メタデータのフィールド値の例
issuerhttps://{your-site}.g.kuroco.app/direct/login/oauth_idp/{id}
authorization_endpointhttps://{your-site}.g.kuroco.app/direct/login/oauth_idp/{id}/authorize
token_endpointhttps://{your-site}.g.kuroco.app/direct/login/oauth_idp/{id}/token
注記

client_credentials は認可エンドポイントを使用しませんが、Amazon Bedrock AgentCore ではこの項目が必須のため、控えておいてください。

2. Amazon Bedrock AgentCore で Kuroco OAuth クライアントを設定する

Gateway を作成する前に、セクション 1.4 で収集した値を使って、Kuroco の OAuth Authorization Server を AgentCore Identity にアウトバウンドの OAuth クライアントプロバイダーとして登録します。

Kuroco はメタデータ URL で OAuth 2.0 Authorization Server Metadata ドキュメント(RFC 8414)を公開していますが、AgentCore の自動検出は OpenID Connect のディスカバリドキュメントを想定しており、Kuroco はこのエンドポイントではそれを公開していません。Manual config を使用し、各エンドポイントを手動で入力してください。

2.1 AgentCore Identity に OAuth クライアントを追加する

AWS コンソールで、次の操作を行います。

  1. Amazon Bedrock AgentCore を開きます。
  2. Identity を開きます。
  3. アウトバウンド認証のセクションに移動します。
  4. 新しい OAuth クライアントを追加します。
  5. カスタム OAuth プロバイダーを選択します。
  6. Manual config を選択します。

プロバイダーを次のとおり設定します。

項目設定値
Client authentication methodClient secret basic(Kuroco クライアントに設定した トークンエンドポイント認証方式 と一致させる必要があります。Client secret post も利用できます)
IssuerKuroco のメタデータ URL の issuer の値
Authorization endpointKuroco のメタデータ URL の authorization_endpoint の値
Token endpointKuroco のメタデータ URL の token_endpoint の値
Client IDKuroco でクライアントを登録したときに生成された Client ID
Client secretKuroco でクライアントを登録したときに生成された Client secret

Client secret basic は、AgentCore が HTTP Basic 認証を使って Kuroco のトークンエンドポイントに認証することを意味します。

Authorization: Basic base64(client_id:client_secret)

トークンリクエストは client_credentials グラントを使用し、Kuroco のトークンエンドポイント(メタデータ URL の token_endpoint の値。https://{your-site}.g.kuroco.app/direct/login/oauth_idp/{id}/token の形式)に送信されます。

POST /direct/login/oauth_idp/{id}/token
Content-Type: application/x-www-form-urlencoded
Authorization: Basic base64(client_id:client_secret)

grant_type=client_credentials

AgentCore でスコープを設定する必要はありません。トークンのスコープは、Kuroco クライアントに設定した 許可するスコープapi:read / api:write)に由来します。トークンリクエストが scope パラメータを省略した場合、Kuroco はそのクライアントに設定されたスコープを付与します。

同様に、トークンのオーディエンスも AgentCore では設定しません。オーディエンスは、Kuroco クライアントに設定した デフォルト API に由来します。リクエストが resource パラメータを送信しない場合、Kuroco はこのデフォルト API を RFC 8707 の resource として使用します。

Image from Gyazo

この時点で、OAuth の設定は完了です。Kuroco の OAuth Authorization Server が client_credentials を使って Amazon Bedrock AgentCore に接続されました。

この OAuth クライアントの設定は、対応する Kuroco MCP サーバに接続する必要があるすべての AgentCore Gateway で再利用できます。

3. Amazon Bedrock AgentCore Gateway を作成する

AWS コンソールで、次の操作を行います。

  1. Amazon Bedrock AgentCore を開きます。
  2. Gateways を開きます。
  3. Create Gateway を選択します。

作成ウィザードは 4 つのステップで構成されます。

ステップ 1 — Gateway の詳細を定義する

デフォルト値のまま変更しなくてかまいません。

Image from Gyazo

生成された Gateway 名やその他のデフォルト設定を確認し、Next をクリックします。

ステップ 2 — インバウンド ID を設定する

インバウンド認証は、クライアントが AgentCore Gateway を呼び出す際にどのように認証するかを制御します。

ニーズに応じて認証方式を選択してください。利用できるオプションは次のとおりです。

  • IAM 認証
  • JWT ベースの認証
  • 認証なし(一時的な隔離されたテスト専用)

インバウンド認証は、AgentCore Gateway と Kuroco の間で使用されるアウトバウンドの OAuth 認証とは別のものです。

クライアント → AgentCore Gateway
インバウンド認証

AgentCore Gateway → Kuroco MCP サーバ
OAuth client_credentials
注意

本番環境では、認証ありのインバウンド設定を使用してください。インバウンド認証のない、公開状態でアクセス可能な Gateway を放置しないでください。

インバウンド ID を設定したら、Next をクリックします。

ステップ 3 — ターゲットを追加する

Kuroco MCP サーバを Gateway のターゲットとして追加します。

ターゲットを次のとおり設定します。

項目設定値
Target ProtocolMCP Target
Target typeMCP Server
MCP endpoint追加したい Kuroco MCP サーバのエンドポイント
Outbound AuthOAuth client
OAuth clientセクション 2 で作成した OAuth クライアントを選択します

残りの設定はすべてデフォルト値のままでかまいません。

MCP endpoint には、Kuroco MCP サーバの完全な公開 HTTPS エンドポイントを指定します。次の形式です。

https://{your-site}.g.kuroco.app/rcms-api/{api_id}/mcp

トークンのオーディエンスと呼び出し先の resource が一致するように、Kuroco クライアントで デフォルト API として選択したものと同じ API の MCP エンドポイントを使用してください。

ターゲットを設定したら、Next をクリックします。

ステップ 4 — 確認して作成する

Gateway とターゲットの設定内容を確認し、Create Gateway をクリックします。

AgentCore が Gateway を作成し、先ほど設定した OAuth クライアントを使って、ターゲットを Kuroco MCP サーバに接続します。

4. Gateway をテストする

Gateway の詳細ページから Gateway URL をコピーします。URL は /mcp で終わっているはずです。

インバウンド認証なしで作成した Gateway は、curl でテストできます。

curl -i -X POST 'YOUR_GATEWAY_URL' \
-H 'Content-Type: application/json' \
-H 'Accept: application/json, text/event-stream' \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/list",
"params": {}
}'

接続に成功すると、レスポンスには Kuroco MCP サーバが公開しているツールが含まれます。

ツールを呼び出すには、tools/list が返した正確なツール名と入力スキーマを使用します。

curl -i -X POST 'YOUR_GATEWAY_URL' \
-H 'Content-Type: application/json' \
-H 'Accept: application/json, text/event-stream' \
-d '{
"jsonrpc": "2.0",
"id": 2,
"method": "tools/call",
"params": {
"name": "YOUR_TOOL_NAME",
"arguments": {}
}
}'

IAM または JWT のインバウンド認証を使用する Gateway の場合は、Gateway を呼び出す際に対応する認証を付与してください。

これで Gateway を任意の MCP クライアントに接続でき、Kuroco MCP サーバを利用できるようになります。

関連ドキュメント


サポート

お探しのページは見つかりましたか?解決しない場合は、問い合わせフォームからお問い合わせいただくか、Slackコミュニティにご参加ください。