Ce tutoriel explique comment créer et déployer un serveur MCP (Model Context Protocol) distant sur Cloud Run à l'aide du transport HTTP flux. Avec le transport HTTP diffusable, le serveur MCP fonctionne comme un processus indépendant capable de gérer plusieurs connexions client.
Avant de commencer
- 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.
- Configurez votre environnement de développement Cloud Run dans votre projet Google Cloud .
- Assurez-vous de disposer des autorisations appropriées pour déployer des services et que les rôles Administrateur Cloud Run (
roles/run.admin
) et Utilisateur du compte de service (roles/iam.serviceAccountUser
) vous ont été attribués. - Attribuez le rôle Demandeur Cloud Run (
roles/run.invoker
) à votre compte. Ce rôle permet au serveur MCP distant d'accéder au service Cloud Run. -
Dans la console Google Cloud , accédez à la page IAM.
Accéder à IAM - Sélectionnez le projet.
- Cliquez sur Accorder l'accès.
-
Dans le champ Nouveaux comptes principaux, saisissez votre identifiant utilisateur. Il s'agit généralement de l'adresse e-mail du compte Google utilisé pour déployer le service Cloud Run.
- Dans la liste Sélectionner un rôle, sélectionnez un rôle.
- Pour attribuer des rôles supplémentaires, cliquez sur Ajouter un autre rôle et ajoutez chaque rôle supplémentaire.
- Cliquez sur Enregistrer.
- PROJECT_NUMBER : numéro de votre projet Google Cloud .
- PROJECT_ID : ID de votre projet Google Cloud .
- PRINCIPAL : adresse e-mail du compte auquel vous attribuez le rôle.
- ROLE : rôle que vous ajoutez au compte du déployeur.
Si vous êtes soumis à une règle d'administration de restriction de domaine limitant les appels non authentifiés pour votre projet, vous devez accéder au service déployé comme décrit dans la section Tester les services privés.
- Installez Uv, un gestionnaire de packages et de projets Python.
Créez un dossier nommé
mcp-on-cloudrun
pour stocker le code source à déployer :mkdir mcp-on-cloudrun cd mcp-on-cloudrun
Créez un projet Python avec l'outil
uv
pour générer un fichierpyproject.toml
:uv init --name "mcp-on-cloudrun" --description "Example of deploying an MCP server on Cloud Run" --bare --python 3.10
La commande
uv init
crée le fichierpyproject.toml
suivant :[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 = []
Créez les fichiers supplémentaires suivants :
server.py
pour le code source du serveur MCPtest_server.py
pour tester le serveur distant- Fichier Dockerfile pour le déploiement sur Cloud Run
touch server.py test_server.py Dockerfile
Le répertoire de votre projet doit contenir la structure suivante :
├── mcp-on-cloudrun │ ├── pyproject.toml │ ├── server.py │ ├── test_server.py │ └── Dockerfile
Exécutez la commande suivante pour ajouter FastMCP en tant que dépendance dans le fichier
pyproject.toml
:uv add fastmcp==2.8.0 --no-sync
Ajoutez le code source du serveur MCP mathématique suivant dans le fichier
server.py
:Incluez le code suivant dans le fichier Dockerfile pour utiliser l'outil
uv
afin d'exécuter le fichierserver.py
:Créez un dépôt Artifact Registry pour stocker l'image de conteneur :
gcloud artifacts repositories create remote-mcp-servers \ --repository-format=docker \ --location=us-central1 \ --description="Repository for remote MCP servers" \ --project=PROJECT_ID
Créez l'image de conteneur et transférez-la vers Artifact Registry avec Cloud Build :
gcloud builds submit --region=us-central1 --tag us-central1-docker.pkg.dev/PROJECT_ID/remote-mcp-servers/mcp-server:latest
Déployez l'image de conteneur du serveur MCP dans 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
Attribuez le rôle Demandeur Cloud Run (
roles/run.invoker
) au compte de service. Cette association de stratégie Identity and Access Management garantit qu'un mécanisme de sécurité renforcé est utilisé pour authentifier votre client MCP local.Exécutez le proxy Cloud Run pour créer un tunnel authentifié vers le serveur MCP distant sur votre machine locale :
gcloud run services proxy mcp-server --region=us-central1
Si le proxy Cloud Run n'est pas encore installé, cette commande vous invite à le télécharger. Suivez les instructions pour télécharger et installer le proxy.
Avant d'exécuter le serveur de test, exécutez le proxy Cloud Run.
Créez un fichier de test appelé
test_server.py
et ajoutez le code suivant :Dans un nouveau terminal, exécutez le serveur de test :
uv run test_server.py
Vous devriez obtenir le résultat suivant :
🛠️ Tool found: add 🛠️ Tool found: subtract 🪛 Calling add tool for 1 + 2 ✅ Result: 3 🪛 Calling subtract tool for 10 - 3 ✅ Result: 7
Découvrez comment déployer des applications d'IA sur Cloud Run.
Découvrez comment héberger des serveurs MCP sur Cloud Run.
Découvrez comment utiliser un serveur MCP pour déployer du code sur Cloud Run.
Découvrez comment attribuer les rôles.
Console
gcloud
Pour attribuer les rôles IAM requis à votre compte dans votre projet :
gcloud projects add-iam-policy-binding PROJECT_ID \ --member=PRINCIPAL \ --role=ROLE
Remplacez :
Préparer votre projet Python
Les étapes suivantes décrivent comment configurer votre projet Python avec le gestionnaire de packages uv
.
Créer un serveur MCP pour les opérations mathématiques
Pour fournir un contexte utile afin d'améliorer l'utilisation des LLM avec MCP, configurez un serveur MCP mathématique avec FastMCP. FastMCP permet de créer rapidement des serveurs et des clients MCP avec Python.
Suivez ces étapes pour créer un serveur MCP pour les opérations mathématiques telles que l'addition et la soustraction.
Déployer dans Cloud Run
Vous pouvez déployer le serveur MCP en tant qu'image de conteneur ou en tant que code source :
Image du conteneur
Pour déployer un serveur MCP empaqueté en tant qu'image de conteneur, suivez ces instructions.
Source
Vous pouvez déployer des serveurs MCP distants sur Cloud Run à partir de leurs sources.
Déployez votre code depuis la source en exécutant la commande suivante :
gcloud run deploy mcp-server --no-allow-unauthenticated --region=us-central1 --source .
Authentifier le client MCP
Si vous avez déployé votre service avec l'option --no-allow-unauthenticated
, tout client MCP qui se connecte à votre serveur MCP distant doit s'authentifier.
Cloud Run authentifie tout le trafic vers http://127.0.0.1:8080
et transfère les requêtes au serveur MCP distant.
Tester le serveur MCP distant
Vous pouvez tester et vous connecter au serveur MCP distant à l'aide du client FastMCP et en accédant à l'URL http://127.0.0.1:8080/mcp
.
Pour tester et appeler le mécanisme d'addition et de soustraction, procédez comme suit :