本文將說明如何檢測及部署自行代管的 Model Context Protocol (MCP) 伺服器,以收集遙測資料。本文中的範例會使用 FastMCP 建構 MCP 伺服器,並使用 Cloud Run 部署 MCP 伺服器。FastMCP 包含 OpenTelemetry 檢測,可從所有 MCP 作業收集遙測資料。
本文說明下列步驟:
事前準備
- 登入 Google Cloud 帳戶。如果您是 Google Cloud新手,歡迎 建立帳戶,親自評估產品在實際工作環境中的成效。新客戶還能獲得價值 $300 美元的免費抵免額,可用於執行、測試及部署工作負載。
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud 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 Google Cloud project.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud 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 Google Cloud project.
啟用 Artifact Registry、Cloud Run、Cloud Build、Telemetry、Cloud Logging、Cloud Monitoring 和 Cloud Trace API。
啟用 API 時所需的角色
如要啟用 API,您需要服務使用情形管理員 IAM 角色 (
roles/serviceusage.serviceUsageAdmin),其中包含serviceusage.services.enable權限。瞭解如何授予角色。- 在 Google Cloud 專案中設定 Cloud Run 開發環境。
- 請確認您具備部署服務的適當權限,且帳戶已獲派 Cloud Run 管理員 (
roles/run.admin) 和服務帳戶使用者 (roles/iam.serviceAccountUser) 角色。 - 將 Cloud Run Invoker (
roles/run.invoker) 角色授予您的帳戶。這個角色可讓自行託管的 MCP 伺服器存取 Cloud Run 服務。 -
前往 Google Cloud 控制台的「IAM」頁面。
前往「IAM」頁面 - 選取專案。
- 按一下 「授予存取權」。
-
在「New principals」(新增主體) 欄位中,輸入您的使用者 ID。這通常是部署 Cloud Run 服務時使用的電子郵件地址。
- 在「Select a role」(選取角色) 清單中,選取角色。
- 如要授予其他角色,請按一下「Add another role」(新增其他角色),然後新增其他角色。
- 按一下「儲存」。
- PROJECT_ID:專案的 ID。
- PRINCIPAL:要授予角色的主體 ID。主體 ID 通常採用以下格式:
PRINCIPAL-TYPE:ID。 例如:user:my-user@example.com。如需PRINCIPAL的完整格式清單,請參閱「主體 ID」。 - ROLE:IAM 角色。
- 安裝 Python 套件和專案管理員 Uv。
瞭解如何授予角色
控制台
gcloud
如要在專案中授予帳戶必要的 IAM 角色,請按照下列步驟操作:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member=PRINCIPAL \ --role=ROLE
更改項目:
準備 Python 專案
下列步驟說明如何使用 uv 套件管理工具設定 Python 專案。
建立名為
mcp-on-cloudrun的資料夾,用於儲存部署作業的原始碼:mkdir mcp-on-cloudrun cd mcp-on-cloudrun使用
uv工具建立 Python 專案,產生pyproject.toml檔案:uv init --name "mcp-on-cloudrun" --description "Example of deploying an MCP server on Cloud Run" --bare --python 3.10uv init指令會建立下列pyproject.toml檔案:[project] name = "mcp-server" version = "0.1.0" description = "Example of deploying an MCP server on Cloud Run" readme = "README.md" requires-python = ">=3.10" dependencies = []建立下列其他新檔案:
server.py,取得 MCP 伺服器原始碼。otel_setup.py,設定 OpenTelemetry。test_server.py測試自行託管的伺服器。- 用於部署至 Cloud Run 的 Dockerfile。
touch server.py otel_setup.py test_server.py Dockerfile專案目錄應包含下列結構:
├── mcp-on-cloudrun │ ├── pyproject.toml │ ├── otel_setup.py │ ├── server.py │ ├── test_server.py │ └── Dockerfile
建立 MCP 伺服器以執行數學運算
在本節中,您將使用 FastMCP 設定數學 MCP 伺服器。FastMCP 提供快速建構 MCP 伺服器和用戶端的方法 (使用 Python)。
請按照下列步驟建立 MCP 伺服器,用於加法和減法等數學運算。
執行下列指令,將 FastMCP 新增為
pyproject.toml檔案中的依附元件:uv add fastmcp==2.13.1 --no-sync在
otel_setup.py檔案中新增下列 OpenTelemetry 設定程式碼:在
server.py檔案中新增下列數學 MCP 伺服器原始碼:在 Dockerfile 中加入下列程式碼,即可使用
uv工具執行server.py檔案:
部署至 Cloud Run
容器映像檔
如要部署封裝為容器映像檔的 MCP 伺服器,請按照下列操作說明進行。
建立 Artifact Registry 存放區來儲存容器映像檔:
gcloud artifacts repositories create self-hosted-mcp-servers \ --repository-format=docker \ --location=us-central1 \ --description="Repository for self-hosted MCP servers" \ --project=PROJECT_ID使用 Cloud Build 建構容器映像檔並推送至 Artifact Registry:
gcloud builds submit --region=us-central1 --tag us-central1-docker.pkg.dev/PROJECT_ID/self-hosted-mcp-servers/mcp-server:latest將 MCP 伺服器容器映像檔部署至 Cloud Run:
gcloud run deploy mcp-server \ --image us-central1-docker.pkg.dev/PROJECT_ID/self-hosted-mcp-servers/mcp-server:latest \ --region=us-central1 \ --no-allow-unauthenticated
來源
您可以從來源將自行代管的 MCP 伺服器部署至 Cloud Run。
執行下列指令,從來源部署:
gcloud run deploy mcp-server --no-allow-unauthenticated --region=us-central1 --source .
驗證 MCP 用戶端
如果您使用 --no-allow-unauthenticated 旗標部署服務,連線至自架 MCP 伺服器的任何 MCP 用戶端都必須通過驗證。
將 Cloud Run 叫用者 (
roles/run.invoker) 角色授予服務帳戶。這項身分與存取權管理政策繫結可確保使用強大的安全機制,驗證本機 MCP 用戶端。執行 Cloud Run Proxy,在本機電腦上建立通過驗證的通道,連線至自行託管的 MCP 伺服器:
gcloud run services proxy mcp-server --region=us-central1如果尚未安裝 Cloud Run Proxy,這項指令會提示您下載 Proxy。按照提示下載並安裝 Proxy。
Cloud Run 會驗證傳送至 http://127.0.0.1:8080 的所有流量,並將要求轉送至自行代管的 MCP 伺服器。
測試自行託管的 MCP 伺服器
您可以使用 FastMCP 用戶端測試及連線至自行代管的 MCP 伺服器,並存取 http://127.0.0.1:8080/mcp 網址。
如要測試及叫用加減機制,請按照下列步驟操作:
執行測試伺服器前,請執行 Cloud Run Proxy。
建立名為
test_server.py的測試檔案,並加入下列程式碼:在新的終端機中執行測試伺服器:
uv run test_server.py您應該會看到以下的輸出內容:
🛠️ Tool found: add 🛠️ Tool found: subtract 🪛 Calling add tool for 1 + 2 ✅ Result: 3 🪛 Calling subtract tool for 10 - 3 ✅ Result: 7
查看遙測資料
本節說明如何查看自行託管的 MCP 伺服器產生的記錄、指標和追蹤記錄資料。
事前準備
如要取得查看記錄、指標和追蹤記錄資料所需的權限,請要求管理員在專案中授予您下列 IAM 角色:
-
記錄檢視器 (
roles/logging.viewer) -
Monitoring 檢視者 (
roles/monitoring.viewer) - Cloud Trace 使用者 (
roles/cloudtrace.user)
如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和組織的存取權」。
查看遙測資料
如要瞭解如何查看記錄、指標和追蹤記錄資料,請參閱下列文章:
記錄檔資料
前往 Google Cloud 控制台的 「Logs Explorer」頁面:
如果您是使用搜尋列尋找這個頁面,請選取子標題為「Logging」的結果。
如要進一步瞭解如何使用「Logs Explorer」頁面,請參閱「查看及分析記錄檔」。
指標資料
前往 Google Cloud 控制台的 leaderboard「指標探索器」頁面:
如果您是使用搜尋列尋找這個頁面,請選取子標題為「Monitoring」的結果。
如要進一步瞭解如何使用「Metrics Explorer」頁面,請參閱「使用 Metrics Explorer 建立圖表」一文。
追蹤資料
前往 Google Cloud 控制台的
「Trace Explorer」頁面:
前往「Trace explorer」(Trace 探索工具)
您也可以透過搜尋列找到這個頁面。
以下螢幕截圖顯示「Trace Explorer」(追蹤記錄探索器) 頁面中的「Details」(詳細資料) 窗格,其中顯示從 tools/call 作業產生的追蹤記錄範圍:
如要進一步瞭解如何使用「Trace 探索工具」頁面,請參閱「尋找及探索追蹤記錄」。
後續步驟
進一步瞭解如何查看、探索及分析遙測資料。
進一步瞭解在 Cloud Run 託管 MCP 伺服器。
瞭解如何使用 MCP 伺服器將程式碼部署至 Cloud Run。