このドキュメントでは、自己ホスト型の Model Context Protocol(MCP)サーバーを計測してデプロイし、テレメトリーを収集する手順について説明します。このドキュメントの 例では、FastMCP を使用して MCP サーバーを構築し、Cloud Run を使用して MCP サーバーを デプロイします。FastMCP には、すべての MCP オペレーションからテレメトリーを収集する OpenTelemetry 計測機能が組み込まれています。
このドキュメントでは、次の手順について説明します。
- Python プロジェクトを
uvパッケージ マネージャー で準備します。 - 算術演算用の MCP サーバーを作成します。
- Cloud Run にデプロイします。
- MCP クライアントを認証します。
- 自己ホスト型の MCP サーバーをテストします。
- テレメトリー データを表示します。
始める前に
- アカウントにログインします。 Google Cloud を初めて使用する場合は、 アカウントを作成して、実際のシナリオで Google プロダクトのパフォーマンスを評価してください。 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 を有効にするには、
serviceusage.services.enable権限を含む Service Usage 管理者 IAM ロール(roles/serviceusage.serviceUsageAdmin)が必要です。詳しくは、ロールを付与する方法をご覧ください。- プロジェクトで Cloud Run 開発環境を設定します Google Cloud 。
- サービスをデプロイするための適切な権限があり、使用するアカウントに Cloud Run 管理者(
roles/run.admin)とサービス アカウント ユーザー(roles/iam.serviceAccountUser)のロールが付与されていることを確認します。 - アカウントに Cloud Run
起動元(
roles/run.invoker) ロールを付与します。このロールにより、自己ホスト型の MCP サーバーから Cloud Run サービスにアクセスできます。 -
コンソールで、[IAM] ページに移動します。 Google Cloud
[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 を依存関係として追加します。uv add fastmcp==2.13.1 --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] の結果を選択します。
[ログ エクスプローラ] ページの使用方法については、 ログを表示して分析するをご覧ください。
指標データ
コンソールで、 leaderboard [**Metrics Explorer**] ページに移動します。 Google Cloud
検索バーを使用してこのページを検索する場合は、小見出しが [Monitoring] である結果を選択します。
[Metrics Explorer] ページの使用方法については、 Metrics Explorer でグラフを作成するをご覧ください。
トレース データ
コンソールで、
[
Trace エクスプローラ]
ページに移動します。 Google Cloud ![]()
このページは、検索バーを使用して見つけることもできます。
次のスクリーンショットは、[Trace エクスプローラ] ページの [詳細] ペインを示しています。このペインには、tools/call オペレーションから生成されたトレース スパンが表示されます。
[Trace エクスプローラ] ページの使用方法については、 トレースを検索して調査するをご覧ください。
次のステップ
テレメトリー データを表示、調査、分析するためのオプションの詳細を確認する。
Cloud Run で MCP サーバーをホストする方法の詳細を確認する。