Questo tutorial mostra come creare ed eseguire il deployment di un server Model Context Protocol (MCP) remoto su Cloud Run utilizzando il trasporto HTTP in streaming. Con il trasporto HTTP in streaming, il server MCP funziona come un processo indipendente in grado di gestire più connessioni client.
Obiettivi
In questo tutorial, imparerai a:
Costi
In questo documento vengono utilizzati i seguenti componenti fatturabili di Google Cloud:
Per generare una stima dei costi in base all'utilizzo previsto,
utilizza il calcolatore prezzi.
Prima di iniziare
- 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.
-
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.
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the Artifact Registry, Cloud Run Admin API, and Cloud Build APIs.
- Configura l'ambiente di sviluppo Cloud Run nel tuo progetto Google Cloud .
- Assicurati di disporre delle autorizzazioni appropriate per il deployment dei servizi e dei ruoli Amministratore di Cloud Run (
roles/run.admin
) e Utente service account (roles/iam.serviceAccountUser
) concessi al tuo account. - Concedi al tuo account il ruolo Invocatore Cloud Run (
roles/run.invoker
). Questo ruolo consente al server MCP remoto di accedere al servizio Cloud Run. -
Nella console Google Cloud , vai alla pagina IAM.
Vai a IAM - Seleziona il progetto.
- Fai clic su Concedi l'accesso.
-
Nel campo Nuove entità, inserisci il tuo identificatore dell'utente. In genere si tratta dell'indirizzo email dell'Account Google utilizzato per il deployment del servizio Cloud Run.
- Nell'elenco Seleziona un ruolo, seleziona un ruolo.
- Per concedere altri ruoli, fai clic su Aggiungi un altro ruolo e aggiungi ogni ruolo aggiuntivo.
- Fai clic su Salva.
- PROJECT_NUMBER: il tuo Google Cloud numero di progetto.
- PROJECT_ID: il tuo ID progetto Google Cloud .
- PRINCIPAL: l'indirizzo email dell'account a cui stai concedendo il ruolo.
- ROLE: il ruolo che stai aggiungendo all'account deployer.
Se il tuo progetto è soggetto a un criterio dell'organizzazione con restrizioni di dominio che limitano le chiamate non autenticate, dovrai accedere al servizio di cui è stato eseguito il deployment come descritto in Testare i servizi privati.
- Installa Uv, un gestore di pacchetti e progetti Python.
Scopri come concedere i ruoli
Console
gcloud
Per concedere i ruoli IAM richiesti al tuo account nel tuo progetto:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member=PRINCIPAL \ --role=ROLE
Sostituisci:
Prepara il progetto Python
I seguenti passaggi descrivono come configurare il progetto Python con il uv
package manager.
Crea una cartella denominata
mcp-on-cloudrun
per archiviare il codice sorgente per il deployment:mkdir mcp-on-cloudrun cd mcp-on-cloudrun
Crea un progetto Python con lo strumento
uv
per generare un filepyproject.toml
:uv init --name "mcp-on-cloudrun" --description "Example of deploying an MCP server on Cloud Run" --bare --python 3.10
Il comando
uv init
crea il seguente filepyproject.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 = []
Crea i seguenti nuovi file aggiuntivi:
server.py
per il codice sorgente del server MCPtest_server.py
per testare il server remoto- Un Dockerfile per il deployment in Cloud Run
touch server.py test_server.py Dockerfile
La directory del progetto deve contenere la seguente struttura:
├── mcp-on-cloudrun │ ├── pyproject.toml │ ├── server.py │ ├── test_server.py │ └── Dockerfile
Crea un server MCP per le operazioni matematiche
Per fornire un contesto prezioso per migliorare l'utilizzo dei LLM con MCP, configura un server MCP matematico con FastMCP. FastMCP offre un modo rapido per creare server e client MCP con Python.
Segui questi passaggi per creare un server MCP per operazioni matematiche come addizione e sottrazione.
Esegui questo comando per aggiungere FastMCP come dipendenza nel file
pyproject.toml
:uv add fastmcp==2.8.0 --no-sync
Aggiungi il seguente codice sorgente del server MCP matematico al file
server.py
:Includi il seguente codice nel Dockerfile per utilizzare lo strumento
uv
per eseguire il fileserver.py
:
Esegui il deployment in Cloud Run
Puoi eseguire il deployment del server MCP come immagine container o come codice sorgente:
Immagine container
Per eseguire il deployment di un server MCP incluso in un'immagine container, segui queste istruzioni.
Crea un repository Artifact Registry per archiviare l'immagine container:
gcloud artifacts repositories create remote-mcp-servers \ --repository-format=docker \ --location=us-central1 \ --description="Repository for remote MCP servers" \ --project=PROJECT_ID
Crea l'immagine container ed eseguine il push su Artifact Registry con Cloud Build:
gcloud builds submit --region=us-central1 --tag us-central1-docker.pkg.dev/PROJECT_ID/remote-mcp-servers/mcp-server:latest
Esegui il deployment dell'immagine container del server MCP su 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
Origine
Puoi eseguire il deployment dei server MCP remoti in Cloud Run dalle relative origini.
Esegui il deployment dall'origine eseguendo questo comando:
gcloud run deploy mcp-server --no-allow-unauthenticated --region=us-central1 --source .
Autenticare il client MCP
Se hai eseguito il deployment del servizio con il flag --no-allow-unauthenticated
, qualsiasi client MCP
che si connette al server MCP remoto deve autenticarsi.
Concedi il ruolo Cloud Run Invoker (
roles/run.invoker
) al account di servizio. Questo binding dei criteri di Identity and Access Management garantisce che venga utilizzato un meccanismo di sicurezza efficace per autenticare il client MCP locale.Esegui il proxy Cloud Run per creare un tunnel autenticato al server MCP remoto sulla tua macchina locale:
gcloud run services proxy mcp-server --region=us-central1
Se il proxy Cloud Run non è ancora installato, questo comando ti chiede di scaricarlo. Segui le istruzioni per scaricare e installare il proxy.
Cloud Run autentica tutto il traffico verso http://127.0.0.1:8080
e inoltra
le richieste al server MCP remoto.
Testare il server MCP remoto
Testa e connettiti al server MCP remoto utilizzando il client FastMCP e accedendo
all'URL http://127.0.0.1:8080/mcp
.
Per testare e richiamare il meccanismo di addizione e sottrazione, segui questi passaggi:
Prima di eseguire il server di test, esegui il proxy Cloud Run.
Crea un file di test denominato
test_server.py
e aggiungi il seguente codice:In un nuovo terminale, esegui il server di test:
uv run test_server.py
Dovresti vedere l'output seguente:
🛠️ Tool found: add 🛠️ Tool found: subtract 🪛 Calling add tool for 1 + 2 ✅ Result: 3 🪛 Calling subtract tool for 10 - 3 ✅ Result: 7
Esegui la pulizia
Per evitare costi aggiuntivi al tuo account Google Cloud , elimina tutte le risorse che hai implementato con questo tutorial.
Elimina il progetto
Se hai creato un nuovo progetto per questo tutorial, eliminalo. Se hai utilizzato un progetto esistente e devi conservarlo senza le modifiche che hai aggiunto in questo tutorial, elimina le risorse che hai creato per il tutorial.
Il modo più semplice per eliminare la fatturazione è eliminare il progetto creato per il tutorial.
Per eliminare il progetto:
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.
Eliminare le risorse del tutorial
Elimina il servizio Cloud Run di cui hai eseguito il deployment in questo tutorial. I servizi Cloud Run non comportano costi finché non ricevono richieste.
Per eliminare il servizio Cloud Run, esegui questo comando:
gcloud run services delete SERVICE-NAME
Sostituisci SERVICE-NAME con il nome del servizio.
Puoi anche eliminare i servizi Cloud Run dalla consoleGoogle Cloud .
Rimuovi la configurazione della regione predefinita
gcloud
che hai aggiunto durante la configurazione del tutorial:gcloud config unset run/region
Rimuovi la configurazione del progetto:
gcloud config unset project