このドキュメントでは、セルフホスト型 Model Context Protocol(MCP)サーバーを計測してデプロイし、テレメトリーの収集を有効にする手順について説明します。このドキュメントの例では、FastMCP を使用して MCP サーバーを構築し、Cloud Run を使用して MCP サーバーをデプロイします。FastMCP には、すべての MCP オペレーションからテレメトリーを収集する OpenTelemetry 計測機能が含まれています。
このドキュメントでは、次の手順について説明します。
uvパッケージ マネージャーを使用して Python プロジェクトを準備します。- 算術演算用の MCP サーバーを作成します。
- Cloud Run にデプロイします。
- MCP クライアントを認証します。
- 自己ホスト型 MCP サーバーをテストします。
- テレメトリー データを表示する。
始める前に
- Google Cloud アカウントにログインします。 Google Cloudを初めて使用する場合は、 アカウントを作成して、実際のシナリオでの Google プロダクトのパフォーマンスを評価してください。新規のお客様には、ワークロードの実行、テスト、デプロイができる無料クレジット $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 を有効にするには、
serviceusage.services.enable権限を含む Service Usage 管理者 IAM ロール(roles/serviceusage.serviceUsageAdmin)が必要です。詳しくは、ロールを付与する方法をご覧ください。- Google Cloud プロジェクトで Cloud Run 開発環境を設定します。
- サービスをデプロイするための適切な権限があり、使用するアカウントに Cloud Run 管理者(
roles/run.admin)とサービス アカウント ユーザー(roles/iam.serviceAccountUser)のロールが付与されていることを確認します。 - アカウントに Cloud Run 起動元(
roles/run.invoker)ロールを付与します。このロールにより、セルフホスト型 MCP サーバーから Cloud Run サービスにアクセスできます。 -
Google Cloud コンソールで、[IAM] ページに移動します。
[IAM] に移動 - プロジェクトを選択します。
- [ アクセスを許可] をクリックします。
-
[新しいプリンシパル] フィールドに、ユーザー ID を入力します。これは通常、Cloud Run サービスのデプロイに使用されるメールアドレスです。
- [ロールを選択] リストでロールを選択します。
- 追加のロールを付与するには、[ 別のロールを追加] をクリックして各ロールを追加します。
- [保存] をクリックします。
- PROJECT_ID: プロジェクトの ID。
- PRINCIPAL: ロールを付与するプリンシパルの ID。通常、プリンシパル ID の形式は
PRINCIPAL-TYPE:IDです。例:user:my-user@example.comPRINCIPALに使用できる形式の一覧については、プリンシパル 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-cloudrunuvツールを使用して 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 は、Python で MCP のサーバーとクライアントを迅速に構築するためのツールです。
加算や減算などの数学演算用の MCP サーバーを作成する手順は次のとおりです。
次のコマンドを実行して、
pyproject.tomlファイルに FastMCP と必要な OpenTelemetry 依存関係を追加します。uv add fastmcp==3.2.0 opentelemetry-api==1.40.0 opentelemetry-sdk==1.40.0 opentelemetry-exporter-otlp-proto-grpc==1.40.0 --no-syncotel_setup.pyファイルに次の OpenTelemetry セットアップ コードを追加します。server.pyファイルに次の数学 MCP サーバーのソースコードを追加します。uvツールを使用してserver.pyファイルを実行するため、Dockerfile に次のコードを追加します。
Cloud Run へのデプロイ
MCP サーバーは、コンテナ イメージ またはソースコード:としてデプロイできます。
コンテナ イメージ
コンテナ イメージとしてパッケージ化された 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_IDCloud Build を使用してコンテナ イメージをビルドし、Artifact Registry に push します。
gcloud builds submit --region=us-central1 --tag us-central1-docker.pkg.dev/PROJECT_ID/self-hosted-mcp-servers/mcp-server:latestMCP サーバーのコンテナ イメージを 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)を付与します。この Identity and Access Management のポリシー バインディングにより、ローカル MCP クライアントの認証に強力なセキュリティ メカニズムが使用されます。ローカルマシンで Cloud Run プロキシを実行して、セルフホスト MCP サーバーへの認証済みトンネルを作成します。
gcloud run services proxy mcp-server --region=us-central1Cloud Run プロキシがまだインストールされていない場合、このコマンドを実行すると、プロキシのダウンロードを求めるプロンプトが表示されます。プロンプトに従ってプロキシのダウンロードとインストールを行ってください。
Cloud Run は http://127.0.0.1:8080 へのすべてのトラフィックを認証し、リクエストをセルフホスト型 MCP サーバーに転送します。
セルフホスト型 MCP サーバーをテストする
セルフホスト MCP サーバーに接続してテストするため、FastMCP クライアントを使用して URL http://127.0.0.1:8080/mcp にアクセスします。
加算と減算のメカニズムをテストして呼び出す手順は次のとおりです。
テストサーバーを実行する前に、Cloud Run プロキシを実行します。
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) - モニタリング閲覧者 (
roles/monitoring.viewer) - Cloud トレース ユーザー (
roles/cloudtrace.user)
ロールの付与については、プロジェクト、フォルダ、組織へのアクセス権の管理をご覧ください。
必要な権限は、カスタムロールや他の事前定義ロールから取得することもできます。
テレメトリーを表示する
ログ、指標、トレースデータを表示する方法については、以下をご覧ください。
ログデータ
Google Cloud コンソールで、 [ログ エクスプローラ] ページに移動します。
検索バーを使用してこのページを検索する場合は、小見出しが [Logging] の結果を選択します。
[ログ エクスプローラ] ページの使用方法については、ログを表示して分析するをご覧ください。
指標データ
Google Cloud コンソールで leaderboard Metrics explorer のページに移動します。
検索バーを使用してこのページを検索する場合は、小見出しが [Monitoring] である結果を選択します。
[Metrics Explorer] ページの使用方法について詳しくは、Metrics Explorer でグラフを作成するをご覧ください。
トレース データ
Google Cloud コンソールで、
[Trace エクスプローラ] ページに移動します。
このページは、検索バーを使用して見つけることもできます。
次のスクリーンショットは、[Trace エクスプローラ] ページの [詳細] ペインを示しています。このペインには、tools/call オペレーションから生成されたトレース スパンが表示されます。
[Trace エクスプローラ] ページの使用方法の詳細については、トレースを検索して調査するをご覧ください。
次のステップ
Cloud Trace を使用して MCP 呼び出しを調査する方法を学習する。
テレメトリー データを表示、探索、分析するためのオプションの詳細をご覧ください。
Cloud Run で MCP サーバーをホストするの詳細を確認する。