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.
Prepara il progetto Python
I passaggi seguenti descrivono come configurare il progetto Python con il uv package manager.
Crea una cartella denominata
mcp-on-cloudrunper archiviare il codice sorgente per il deployment:mkdir mcp-on-cloudrun cd mcp-on-cloudrunCrea un progetto Python con lo strumento
uvper generare un filepyproject.toml:uv init --name "mcp-on-cloudrun" --description "Example of deploying an MCP server on Cloud Run" --bare --python 3.10Il comando
uv initcrea 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.pyper il codice sorgente del server MCPtest_server.pyper testare il server remoto- Un Dockerfile per il deployment in Cloud Run
touch server.py test_server.py DockerfileLa 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-syncAggiungi il seguente codice sorgente del server MCP matematico al file
server.py:Includi il seguente codice nel Dockerfile per utilizzare lo strumento
uvper 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_IDCrea 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:latestEsegui 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-central1Se 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 aggiunta 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.pye aggiungi il seguente codice:In un nuovo terminale, esegui il server di test:
uv run test_server.pyDovresti 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