View a markdown version of this page

MCP 伺服器目標 - Amazon Bedrock AgentCore

MCP 伺服器目標

MCP 伺服器提供本機工具、資料存取或自訂函數,讓您與 Bedrock AgentCore 中的模型和代理程式互動。在 Bedrock AgentCore 中,您可以在建立閘道時將預先設定的 MCP 伺服器定義為目標。

MCP 伺服器託管代理程式可以探索和使用的工具、提示和資源。在 Bedrock AgentCore 中,您可以使用閘道將目標與這些功能建立關聯,並將其連接到您的代理程式執行期。您可以透過執行通訊協定交握和索引可用功能的 SynchronizeGatewayTargets API,與外部 MCP 伺服器連線。如需安裝和使用 MCP 伺服器的詳細資訊,請參閱 Amazon Bedrock AgentCore MCP 伺服器:使用編碼助理進行 Vibe 編碼

重要考量和限制

列出模式

ListingMode 可以設定為 MCP 伺服器目標的 DYNAMIC 或 DEFAULT。

  • 在 DYNAMIC 模式中,當使用者叫用 MCP 操作時,用戶端會探索 MCP 伺服器功能。Gateway 透過將請求轉送到 MCP 伺服器來擷取伺服器功能。目前 DYNAMIC 模式無法與語意搜尋或輸出三邊形 OAuth (3LO) 互通。

  • 除非變更,否則列出模式會設為 DEFAULT。在 DEFAULT 模式中,用戶端會透過 SynchronizeGatewayTargets API 提供的同步操作探索 MCP 伺服器功能。

隱含同步

對於 DEFAULT 模式的目標,CreateGatewayTarget 和 UpdateGatewayTarget 操作會自動觸發功能探索和索引。呼叫任一操作時,Gateway 會使用 MCP tools/list的功能擷取可用的工具、使用 的提示prompts/list、使用 resources/list和 的 資源resources/templates/list,並將傳回的功能新增至統一目錄。

明確同步

可透過呼叫 SynchronizeGatewayTargets API 手動重新整理 DEFAULT 模式中目標的功能目錄。呼叫 時,它會更新閘道的可用功能清單。每當 MCP 伺服器的工具、提示、資源定義變更時,您應該呼叫 API。

在整合 MCP 伺服器時,同步是維護準確功能目錄的關鍵機制。隱含同步會在目標建立和更新期間自動發生,其中 Gateway 會立即從 MCP 伺服器探索和編製工具、提示和資源的索引,以確保功能可用於語意搜尋和統一清單。明確同步是透過 SynchronizeGatewayTargets API 隨需執行,允許在 MCP 伺服器獨立修改其功能時探索 MCP 功能目錄。

何時呼叫 SynchronizeGatewayTargets

每當 MCP 伺服器目標的列出模式設定為 DEFAULT 時,請在新增、移除或修改工具、提示或資源之後使用 SynchronizeGatewayTargets API。由於 Gateway 會預先計算向量內嵌以進行語意搜尋並維護標準化功能目錄,因此同步是必要的,以確保您的使用者能夠探索和叫用最新的可用工具、提示和資源。

如何呼叫 API

向 /gateways/ { gatewayIdentifier} 提出 PUT 請求/與請求內文中的目標 ID 同步。API 會立即傳回 202 回應,並以非同步方式處理同步。透過 GetGatewayTarget 監控目標狀態以追蹤同步進度,因為大型功能集的操作可能需要幾分鐘的時間。

授權策略

支援以下類型的授權策略。

  • 無授權 – 閘道在沒有預先設定授權的情況下叫用 MCP 伺服器。不建議使用此方法。

  • OAuth – 閘道支援兩邊 OAuth (用戶端登入資料授予類型) 和三邊 OAuth (授權碼授予類型)。您可以在相同帳戶和區域中的 Amazon Bedrock AgentCore Identity 中設定授權提供者,讓閘道呼叫 MCP 伺服器。

  • IAM ( AWS Signature 第 4 版 (Sig V4)) – 閘道使用 SigV4 搭配閘道服務角色憑證來簽署對 MCP 伺服器的請求。您可以使用 SigV4 簽署IamCredentialProvider所需的服務名稱和選用區域 (預設為閘道區域) 來設定 。

  • API 金鑰 – 閘道使用 API 金鑰登入資料提供者來驗證 MCP 伺服器。您可以在與閘道位於相同帳戶和區域中的 Amazon Bedrock AgentCore Identity 中設定 API 金鑰提供者。

重要

IAM (SigV4) 傳出授權要求 MCP 伺服器託管在原生支援 IAM 身分驗證 AWS 的服務後方。閘道會使用 SigV4 簽署傳出請求,但不會修改目標上的身分驗證組態。目標服務必須能夠驗證 SigV4 簽章。

下列 AWS 服務原生支援 IAM 身分驗證,並與 MCP 伺服器目標的 IAM 傳出授權相容:

原生不會驗證 SigV4 簽章的服務,例如 Application Load Balancer 或直接 Amazon EC2 端點,與 IAM 傳出授權不相容。如果您的 MCP 伺服器託管在這些服務的後面,請改用 OAuth 或 API 金鑰授權。

MCP 伺服器目標的組態考量

必須設定下列項目。

  1. MCP 伺服器必須具有工具功能。提示和資源功能是選用的,會在伺服器公告時自動同步。

  2. 支援的 MCP 通訊協定版本為 - 2025-06-182025-03-262025-11-25

  3. 對於伺服器提供的 URL/端點,應該對 URL 進行編碼。Gateway 將使用相同的 URL 來叫用伺服器。

提示

如果您的 MCP 伺服器託管在 AgentCore 執行期,請在閘道上啟用 MCP 工作階段,或在目標的 中新增 Mcp-Session-Id做為允許的請求和回應標頭metadataConfiguration。這可避免在每個請求上重複初始化 MCP 伺服器,並降低後續工具呼叫的延遲。

使用授權碼流程連線至 OAuth 保護的 MCP 伺服器

為了支援 MCP 伺服器目標的授權碼授予類型 (三邊 OAuth),Amazon Bedrock AgentCore Gateway 提供兩種建立目標的方法。

MCP 伺服器目標建立期間的隱含同步

透過此方法,管理員使用者會使用回應中傳回的授權 URL,在 CreateGatewayTargetUpdateGatewayTargetSynchronizeGatewayTargets操作期間完成授權碼流程。這可讓 Amazon Bedrock AgentCore Gateway 預先探索和快取 MCP 伺服器的工具。

注意

您無法刪除、更新或同步處於待定授權狀態 (、 UPDATE_PENDING_AUTHSYNCHRONIZE_PENDING_AUTH ) CREATE_PENDING_AUTH 的目標。等待授權完成或失敗,然後再對目標執行進一步的操作。

在 MCP 伺服器目標建立期間預先提供結構描述

透過此方法,管理員使用者在使用 mcpToolSchema 欄位的 CreateGatewayTargetUpdateGatewayTarget操作期間直接提供工具結構描述,而不是 Amazon Bedrock AgentCore Gateway 從 MCP 伺服器動態擷取工具結構描述。Amazon Bedrock AgentCore Gateway 會剖析提供的結構描述,並快取工具定義。

注意

您無法同步已設定靜態工具結構描述 () mcpToolSchema 的目標。透過 UpdateGatewayTarget呼叫移除靜態結構描述,以啟用動態工具同步。

URL 工作階段繫結

OAuth 2.0 授權 URL 工作階段繫結會驗證啟動 OAuth 授權請求的使用者是否與授予同意的使用者相同。使用者完成同意後,瀏覽器會重新導向回目標上以唯一工作階段 URI 設定的傳回 URL。應用程式接著會負責呼叫 CompleteResourceTokenAuth API,同時呈現使用者的身分和工作階段 URI。Amazon Bedrock AgentCore Identity 會驗證啟動流程的使用者是否與在交換存取字符的授權碼之前完成流程的使用者相同。

這可防止使用者意外共用授權 URL 且其他人完成同意的情況,這會將存取權杖授予錯誤一方。授權 URL 和工作階段 URI 僅在 10 分鐘內有效,進一步限制濫用的時段。工作階段繫結適用於目標建立期間 (隱含同步) 和工具調用期間。

注意

透過 AWS 管理主控台執行目標操作 (建立、更新或同步) 和授權時,會代表資源擁有者進行 CompleteResourceTokenAuth 呼叫,授權後不需要進一步的動作。

設定許可

您用來建立、更新或同步 MCP 伺服器目標的 IAM 角色應具有下列範例所示的許可。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "bedrock-agentcore:CreateGateway", "bedrock-agentcore:GetGateway", "bedrock-agentcore:CreateGatewayTarget", "bedrock-agentcore:GetGatewayTarget", "bedrock-agentcore:SynchronizeGatewayTargets", "bedrock-agentcore:UpdateGatewayTarget" ], "Resource": "arn:aws:bedrock-agentcore:*:*:*gateway*" }, { "Effect": "Allow", "Action": [ "bedrock-agentcore:CreateWorkloadIdentity", "bedrock-agentcore:GetWorkloadAccessToken", "bedrock-agentcore:GetWorkloadAccessTokenForUserId", "bedrock-agentcore:GetResourceOauth2Token", "bedrock-agentcore:GetResourceApiKey", "bedrock-agentcore:CompleteResourceTokenAuth", "secretsmanager:GetSecretValue" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "kms:EnableKeyRotation", "kms:Decrypt", "kms:Encrypt", "kms:GenerateDataKey*", "kms:ReEncrypt*", "kms:CreateAlias", "kms:DisableKey", "kms:*" ], "Resource": "arn:aws:kms:*:123456789012:key/*" } ] }