本指南說明如何在 Cloud Run 上,透過可串流的 HTTP 傳輸方式,託管 Model Context Protocol (MCP) 伺服器,並提供 MCP 用戶端驗證的相關指引。如果您是 MCP 新手,請參閱下列資源:
MCP 是一項開放通訊協定,規範 AI 代理程式與環境互動的方式。AI 代理會託管 MCP 用戶端,而與其互動的工具和資源則是 MCP 伺服器。MCP 用戶端可透過兩種不同的傳輸類型與 MCP 伺服器通訊:
您可以在同一部本機機器上託管 MCP 用戶端和伺服器、在本機託管 MCP 用戶端,並讓用戶端與託管在 Cloud Run 等雲端平台上的遠端 MCP 伺服器通訊,或在雲端平台上託管 MCP 用戶端和伺服器。
Cloud Run 支援託管採用可串流 HTTP 傳輸的 MCP 伺服器,但不支援採用 stdio 傳輸的 MCP 伺服器。
下圖顯示 MCP 用戶端如何取得 AI 代理的意圖,並將標準化要求傳送至 MCP 伺服器,指定要執行的工具。MCP 伺服器執行動作並擷取結果後,會以一致的格式將結果傳回 MCP 用戶端。
如果您要開發自己的 MCP 伺服器,或是使用現有的 MCP 伺服器,都適用本頁面的指引。
- 如果您要自行開發 MCP 伺服器,建議使用 MCP 伺服器 SDK,例如官方語言 SDK (TypeScript、Python、Go、Kotlin、Java、C#、Ruby 或 Rust) 或 FastMCP。
- 如果您使用現有 MCP 伺服器,請前往 MCP 伺服器 GitHub 存放區,查看官方和社群 MCP 伺服器清單。Docker Hub 也提供精選 MCP 伺服器清單。
事前準備
-
In the Cloud de Confiance console, on the project selector page, select or create a Cloud de Confiance project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Cloud de Confiance project.
- 在 Cloud de Confiance 專案中設定 Cloud Run 開發環境。
- 確認您具備部署服務的適當權限,且帳戶已獲派 Cloud Run 管理員 (
roles/run.admin) 和服務帳戶使用者 (roles/iam.serviceAccountUser) 角色。 -
前往 Cloud de Confiance 控制台的「IAM」頁面。
前往 IAM 頁面 - 選取專案。
- 按一下 「授予存取權」。
-
在「New principals」(新增主體) 欄位中,輸入您的使用者 ID。這通常是部署 Cloud Run 服務時使用的電子郵件地址。
- 在「Select a role」(選取角色) 清單中,選取角色。
- 如要授予其他角色,請按一下「Add another role」(新增其他角色),然後新增其他角色。
- 按一下「儲存」。
- PROJECT_NUMBER 替換為您的 Cloud de Confiance 專案編號。
- 將 PROJECT_ID 替換為 Cloud de Confiance 專案 ID。
- PRINCIPAL,並為該帳戶新增繫結。這通常是用來部署 Cloud Run 服務的電子郵件地址。
- ROLE 替換為要新增至部署者帳戶的角色。
- 查看 Cloud Run 定價,或使用 Pricing Calculator 估算費用。
瞭解如何授予角色
控制台
gcloud
如要將必要的 IAM 角色授予專案中的帳戶,請按照下列步驟操作:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member=PRINCIPAL \ --role=ROLE
更改項目:
代管遠端 SSE 或可串流的 HTTP MCP 伺服器
使用伺服器傳送事件 (SSE) 或可串流的 HTTP 傳輸的 MCP 伺服器,可從 MCP 用戶端遠端代管。
如要將這類 MCP 伺服器部署至 Cloud Run,您可以視 MCP 伺服器的封裝方式,將 MCP 伺服器部署為容器映像檔或原始碼 (通常是 Node.js 或 Python)。
容器映像檔
以容器映像檔形式發布的遠端 MCP 伺服器是網路伺服器,會在特定通訊埠上監聽 HTTP 要求,也就是說,這些伺服器符合 Cloud Run 的容器執行階段合約,可部署至 Cloud Run 服務。
如要部署封裝為容器映像檔的 MCP 伺服器,您需要容器映像檔的網址,以及預期接收要求的通訊埠。您可以使用下列 gcloud CLI 指令部署這些項目:
gcloud run deploy --image IMAGE_URL --port PORT
更改項目:
IMAGE_URL替換為容器映像檔網址,例如us-docker.pkg.dev/cloudrun/container/mcp。PORT,例如3000。
將 HTTP MCP 伺服器部署至 Cloud Run 後,MCP 伺服器會取得 HTTPS 網址,通訊則可使用 Cloud Run 內建的 HTTP 回應串流支援功能。
驗證 AI 代理的 MCP 用戶端
視您代管 MCP 用戶端的位置而定,請參閱相關部分:
驗證本機 MCP 用戶端
如果託管 MCP 用戶端的 AI 代理在本機執行,請使用下列任一方法驗證 MCP 用戶端:
詳情請參閱 MCP 驗證規格。
IAM 叫用者權限
根據預設,Cloud Run 服務的網址會要求所有要求都必須具備 Cloud Run 叫用者 (roles/run.invoker) IAM 角色授權。這項 IAM 政策繫結可確保使用強大的安全機制,驗證本機 MCP 用戶端。
將 MCP 伺服器部署至特定區域的 Cloud Run 服務後,請在本機電腦上執行 Cloud Run Proxy,使用自己的憑證安全地將遠端 MCP 伺服器公開給用戶端:
gcloud run services proxy MCP_SERVER_NAME --region REGION --port=3000
更改項目:
- 將 MCP_SERVER_NAME 換成 Cloud Run 服務的名稱。
- REGION 替換為您部署服務的 Cloud de Confiance by S3NS
區域。例如
europe-west1。
Cloud Run Proxy 指令會在通訊埠 3000 建立本機 Proxy,將要求轉送至遠端 MCP 伺服器,並插入您的身分。
請在 MCP 用戶端的 MCP 設定檔中,加入下列內容:
{
"mcpServers": {
"cloud-run": {
"url": "http://localhost:3000/sse"
}
}
}
如果 MCP 用戶端不支援 url 屬性,請使用 mcp-remote npm 套件:
{
"mcpServers": {
"cloud-run": {
"command": "npx",
"args": [
"-y",
"mcp-remote",
"http://localhost:3000/sse"
]
}
}
}
OIDC ID 權杖
視 MCP 用戶端是否公開標頭,或使用提供自訂驗證傳輸的方式而定,您可能會考慮使用 OIDC ID 權杖驗證 MCP 用戶端。
您可以使用各種 Google 驗證程式庫,從執行階段環境取得 ID 權杖,例如 Python 適用的 Google 驗證程式庫。除非使用自訂目標對象,否則這個權杖必須含有正確的目標對象聲明,與接收服務的 *.s3nsrun.fr 網址相符。您也必須在用戶端要求中加入 ID 權杖,例如 Authorization: Bearer <token value>。
如果 MCP 用戶端未公開標頭或傳輸,請改用其他驗證方式。
使用 IAP 驗證本機 MCP 用戶端
本節說明如何驗證在 Cloud Run 執行的本機 MCP 用戶端。
如要建立 Ingress 政策,請按照下列步驟操作:
將 Cloud Run Invoker (
roles/run.invoker) 角色授予 IAP 服務代理。gcloud run services add-iam-policy-binding SERVICE_NAME \ --member='serviceAccount:service-PROJECT_NUMBER@gcp-sa-iap.s3ns-system.iam.gserviceaccount.com' \ --role='roles/run.invoker'更改下列內容:
SERVICE_NAME:要新增政策繫結的服務名稱PROJECT_NUMBER:服務所在專案的專案編號
在 Cloud Run 服務上啟用 IAP。
建立
如要為新服務啟用 IAP 驗證,請執行下列指令:
gcloud run deploy SERVICE_NAME --image=MCP_SERVER_IMAGE --functional-type=MCP_SERVER \ --region=REGION \ --iap
更改下列內容:
SERVICE_NAME:要新增政策繫結的服務名稱MCP_SERVER_IMAGE:MCP 伺服器映像檔的路徑REGION:您要部署服務的 Cloud de Confiance 區域,例如europe-west1
更新
如要為現有服務啟用 IAP 驗證,請執行下列指令:
gcloud run services update SERVICE_NAME \ --region=REGION \ --functional-type=MCP_SERVER \ --iap
更改下列內容:
SERVICE_NAME:要更新的服務名稱REGION:您部署服務的 Cloud de Confiance by S3NS 區域,例如europe-west1
驗證在 Cloud Run 執行的 MCP 用戶端
如果託管 MCP 用戶端的 AI 代理在 Cloud Run 上執行,請使用下列其中一種方法驗證 MCP 用戶端:
將 MCP 伺服器部署為 Sidecar
MCP 伺服器可以部署為 Sidecar,在 MCP 用戶端執行的位置運作。
由於 MCP 用戶端和 MCP 伺服器位於同一個執行個體,因此這個用途不需要特定驗證。用戶端可以使用 http://localhost:PORT 上的通訊埠連線至 MCP 伺服器。將 PORT 替換為與傳送要求至 Cloud Run 服務時不同的通訊埠。
服務對服務驗證
如果 MCP 伺服器和 MCP 用戶端是以不同的 Cloud Run 服務執行,請參閱「驗證服務對服務」。
後續步驟
- 在 Cloud Run 託管 AI 代理。
- 請按照教學課程,在 Cloud Run 建構及部署遠端 MCP 伺服器。
- 請按照下列 MCP 程式碼實驗室操作: