Questo documento descrive i passaggi per instrumentare ed eseguire il deployment di un server Model Context Protocol (MCP) self-hosted, consentendo la raccolta della telemetria. L'esempio in questo documento crea un server MCP utilizzando FastMCP ed esegue il deployment del server MCP utilizzando Cloud Run. FastMCP include la strumentazione OpenTelemetry che raccoglie la telemetria da tutte le operazioni MCP.
Questo documento descrive i seguenti passaggi:
- Prepara il tuo progetto Python con il gestore di pacchetti
uv. - Crea un server MCP per le operazioni matematiche.
- Esegui il deployment in Cloud Run.
- Autentica il client MCP.
- Testa il server MCP autogestito.
- Visualizza i dati di telemetria.
Prima di iniziare
- Accedi al tuo account Google Cloud . Se non conosci Google Cloud, crea un account per valutare le prestazioni dei nostri prodotti in scenari reali. I nuovi clienti ricevono anche 300 $di crediti senza costi per l'esecuzione, il test e il deployment dei workload.
-
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.
Abilita le API Artifact Registry, Cloud Run, Cloud Build, Telemetry, Cloud Logging, Cloud Monitoring e Cloud Trace.
Ruoli richiesti per abilitare le API
Per abilitare le API, devi disporre del ruolo IAM Amministratore utilizzo dei servizi (
roles/serviceusage.serviceUsageAdmin), che include l'autorizzazioneserviceusage.services.enable. Scopri come concedere i ruoli.- 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 Cloud Run (
roles/run.admin) e Utente service account (roles/iam.serviceAccountUser) concessi al tuo account. - Concedi al tuo account il ruolo Cloud Run Invoker (
roles/run.invoker). Questo ruolo consente al server MCP autogestito 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 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_ID: l'identificatore del progetto.
- PRINCIPAL: un identificatore per l'entità a cui vuoi
concedere il ruolo. Gli identificatori principali in genere hanno il seguente formato:
PRINCIPAL-TYPE:ID. Ad esempio:user:my-user@example.com. Per un elenco completo dei formati che può averePRINCIPAL, consulta Identificatori delle entità. - ROLE: un ruolo IAM.
Se la tua organizzazione è soggetta a una norma di restrizione di dominio che limita le chiamate non autenticate per il tuo progetto, devi 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 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 MCP.otel_setup.pyper configurare OpenTelemetry.test_server.pyper testare il server autogestito.- Un Dockerfile per il deployment in Cloud Run.
touch server.py otel_setup.py test_server.py DockerfileLa directory del progetto deve contenere la seguente struttura:
├── mcp-on-cloudrun │ ├── pyproject.toml │ ├── otel_setup.py │ ├── server.py │ ├── test_server.py │ └── Dockerfile
Crea un server MCP per le operazioni matematiche
In questa sezione configuri 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 e le dipendenze OpenTelemetry richieste nel file
pyproject.toml:uv add fastmcp==3.2.0 opentelemetry-api==1.40.0 opentelemetry-sdk==1.40.0 opentelemetry-exporter-otlp-proto-grpc==1.40.0 --no-syncAggiungi il seguente codice di configurazione di OpenTelemetry nel file
otel_setup.py:Aggiungi 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 self-hosted-mcp-servers \ --repository-format=docker \ --location=us-central1 \ --description="Repository for self-hosted 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/self-hosted-mcp-servers/mcp-server:latestEsegui il deployment dell'immagine contenitore del server MCP su 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
Origine
Puoi eseguire il deployment dei server MCP self-hosted su 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 tuo server MCP autogestito deve autenticarsi.
Concedi il ruolo Cloud Run Invoker (
roles/run.invoker) al account di servizio. Questo binding dei criteri 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 autogestito 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 autogestito.
Testare il server MCP autogestito
Per testare e connetterti al tuo server MCP autogestito, utilizza il client FastMCP
e accedi 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
Visualizzare i dati di telemetria
Questa sezione descrive come visualizzare i dati di log, metriche e traccia generati dal server MCP self-hosted.
Prima di iniziare
Per ottenere le autorizzazioni necessarie per visualizzare i dati di log, metriche e tracce, chiedi all'amministratore di concederti i seguenti ruoli IAM nel progetto:
- Visualizzatore log (
roles/logging.viewer) - Monitoring Viewer (
roles/monitoring.viewer) - Utente Cloud Trace (
roles/cloudtrace.user)
Per saperne di più sulla concessione dei ruoli, consulta Gestisci l'accesso a progetti, cartelle e organizzazioni.
Potresti anche riuscire a ottenere le autorizzazioni richieste tramite i ruoli personalizzati o altri ruoli predefiniti.
Visualizzare la telemetria
Per scoprire come visualizzare i dati di log, metriche e traccia, consulta le seguenti risorse:
Dati di log
Nella console Google Cloud , vai alla pagina Esplora log:
Se utilizzi la barra di ricerca per trovare questa pagina, seleziona il risultato con il sottotitolo Logging.
Per saperne di più sull'utilizzo della pagina Esplora log, vedi Visualizzare e analizzare i log.
Dati delle metriche
Nella console Google Cloud , vai alla pagina leaderboard Esplora metriche:
Se utilizzi la barra di ricerca per trovare questa pagina, seleziona il risultato con il sottotitolo Monitoring.
Per ulteriori informazioni sull'utilizzo della pagina Esplora metriche, consulta Crea grafici con Esplora metriche.
Dati di Trace
Nella console Google Cloud , vai alla pagina
Esplora tracce:
Puoi trovare questa pagina anche utilizzando la barra di ricerca.
Lo screenshot seguente mostra il riquadro Dettagli nella pagina
Esplora trace, che mostra gli intervalli di trace generati
dalle operazioni tools/call:
Per saperne di più sull'utilizzo della pagina Esplora tracce, vedi Trovare ed esplorare le tracce.
Passaggi successivi
Scopri come analizzare le chiamate MCP utilizzando Cloud Trace.
Scopri di più sulle opzioni a tua disposizione per visualizzare, esplorare e analizzare i dati di telemetria.
Scopri di più sull'hosting dei server MCP su Cloud Run.
Scopri come utilizzare un server MCP per eseguire il deployment del codice su Cloud Run.