このチュートリアルでは、ストリーミング可能な HTTP トランスポートを使用して、Cloud Run にリモート Model Context Protocol(MCP)サーバーを構築してデプロイする方法について説明します。ストリーミング可能な HTTP トランスポートを使用すると、MCP サーバーは複数のクライアント接続を処理できる独立したプロセスとして動作します。
始める前に
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure 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.
-
Make sure that billing is enabled for your Google Cloud project.
- 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 サービスのデプロイに使用される Google アカウントのメールアドレスです。
- [ロールを選択] リストでロールを選択します。
- 追加のロールを付与するには、[ 別のロールを追加] をクリックして各ロールを追加します。
- [保存] をクリックします。
- PROJECT_NUMBER: Google Cloud プロジェクト番号。
- PROJECT_ID: 実際の Google Cloud プロジェクト ID。
- PRINCIPAL: ロールを付与するアカウントのメールアドレス。
- ROLE: デプロイするアカウントに追加するロール。
ドメイン制限の組織のポリシーでプロジェクトの未認証呼び出しが制限されている場合は、限定公開サービスのテストの説明に従って、デプロイされたサービスにアクセスする必要があります。
- Python パッケージとプロジェクト マネージャーである Uv をインストールします。
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.10
uv 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 = []
次の新しいファイルを追加で作成します。
- MCP サーバーのソースコードの
server.py
test_server.py
: リモート サーバーをテストします。- Cloud Run にデプロイするための Dockerfile
touch server.py test_server.py Dockerfile
プロジェクト ディレクトリには次の構造が含まれている必要があります。
├── mcp-on-cloudrun │ ├── pyproject.toml │ ├── server.py │ ├── test_server.py │ └── Dockerfile
- MCP サーバーのソースコードの
次のコマンドを実行して、
pyproject.toml
ファイルに FastMCP を依存関係として追加します。uv add fastmcp==2.8.0 --no-sync
server.py
ファイルに次の数学 MCP サーバーのソースコードを追加します。uv
ツールを使用してserver.py
ファイルを実行するには、Dockerfile に次のコードを追加します。コンテナ イメージを保存する Artifact Registry リポジトリを作成します。
gcloud artifacts repositories create remote-mcp-servers \ --repository-format=docker \ --location=us-central1 \ --description="Repository for remote MCP servers" \ --project=PROJECT_ID
Cloud Build を使用してコンテナ イメージをビルドし、Artifact Registry に push します。
gcloud builds submit --region=us-central1 --tag us-central1-docker.pkg.dev/PROJECT_ID/remote-mcp-servers/mcp-server:latest
MCP サーバーのコンテナ イメージを Cloud Run にデプロイします。
gcloud run deploy mcp-server \ --image us-central1-docker.pkg.dev/PROJECT_ID/remote-mcp-servers/mcp-server:latest \ --region=us-central1 \ --no-allow-unauthenticated
サービス アカウントに Cloud Run 起動元(
roles/run.invoker
)ロールを付与します。この Identity and Access Management ポリシー バインディングにより、ローカル MCP クライアントの認証に強力なセキュリティ メカニズムが使用されます。Cloud Run プロキシを実行して、ローカルマシンでリモート MCP サーバーへの認証済みトンネルを作成します。
gcloud run services proxy mcp-server --region=us-central1
Cloud Run プロキシがまだインストールされていない場合は、このコマンドを実行すると、プロキシのダウンロードを求めるプロンプトが表示されます。プロンプトに沿ってプロキシをダウンロードしてインストールします。
テストサーバーを実行する前に、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
Cloud Run への AI アプリケーションのデプロイについて詳細を確認する。
Cloud Run で MCP サーバーをホストする方法を確認する。
ロールの付与方法を確認する
コンソール
gcloud
プロジェクトで自分のアカウントに必要な IAM ロールを付与するには:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member=PRINCIPAL \ --role=ROLE
次のように置き換えます。
Python プロジェクトを準備する
次の手順では、uv
パッケージ マネージャーを使用して Python プロジェクトを設定する方法について説明します。
算術演算用の MCP サーバーを作成する
MCP で LLM の使用を改善するための重要なコンテキストを提供するには、FastMCP を使用して数学 MCP サーバーを設定します。FastMCP は、Python で MCP サーバーとクライアントを迅速に構築するためのツールです。
加算や減算などの数学演算用の MCP サーバーを作成する手順は次のとおりです。
Cloud Run へのデプロイ
MCP サーバーは、コンテナ イメージまたはソースコードとしてデプロイできます。
コンテナ イメージ
コンテナ イメージとしてパッケージ化された MCP サーバーをデプロイするには、次の手順を行います。
ソース
リモート MCP サーバーは、ソースから Cloud Run にデプロイできます。
次のコマンドを実行して、ソースからデプロイします。
gcloud run deploy mcp-server --no-allow-unauthenticated --region=us-central1 --source .
MCP クライアントを認証する
--no-allow-unauthenticated
フラグを使用してサービスをデプロイした場合、リモート MCP サーバーに接続する MCP クライアントは認証を受ける必要があります。
Cloud Run は http://127.0.0.1:8080
へのすべてのトラフィックを認証し、リクエストをリモート MCP サーバーに転送します。
リモート MCP サーバーをテストする
FastMCP クライアントを使用して http://127.0.0.1:8080/mcp
の URL にアクセスし、リモート MCP サーバーをテストして接続します。
加算と減算のメカニズムをテストして呼び出す手順は次のとおりです。