Back to Guides

Distribuire AnythingMCP su Google Cloud Run

Distribuisci AnythingMCP come container serverless su Google Cloud Run con Cloud SQL per PostgreSQL. Gateway MCP scalabile con pagamento a consumo.

Perché Google Cloud Run?

Cloud Run consente di eseguire container senza gestire server. Combinato con Cloud SQL per PostgreSQL, offre una distribuzione scalabile con pagamento a consumo. HTTPS viene gestito automaticamente — nessun reverse proxy necessario.

Questa opzione è più avanzata rispetto alle distribuzioni basate su VM. Non è possibile eseguire setup.sh su Cloud Run, quindi è necessario compilare l'immagine, caricarla e configurare le variabili d'ambiente manualmente.

Prerequisiti

  • Un account GCP con fatturazione abilitata
  • gcloud CLI installato e autenticato
  • Docker installato localmente
gcloud config set project YOUR_PROJECT_ID
gcloud config set run/region europe-west1

gcloud services enable \
  run.googleapis.com \
  sqladmin.googleapis.com \
  artifactregistry.googleapis.com \
  cloudbuild.googleapis.com

Configurare Cloud SQL

gcloud sql instances create anythingmcp-db \
  --database-version=POSTGRES_16 \
  --tier=db-f1-micro \
  --region=europe-west1

gcloud sql databases create anythingmcp --instance=anythingmcp-db

gcloud sql users create amcp \
  --instance=anythingmcp-db \
  --password=YOUR_DB_PASSWORD

Annota il nome della connessione dell'istanza (es. project-id:europe-west1:anythingmcp-db).

Compilare e caricare l'immagine

git clone https://github.com/HelpCode-ai/anythingmcp.git
cd anythingmcp

# Opzione A: Compilare localmente
docker build -t europe-west1-docker.pkg.dev/YOUR_PROJECT_ID/anythingmcp/app:latest .
docker push europe-west1-docker.pkg.dev/YOUR_PROJECT_ID/anythingmcp/app:latest

# Opzione B: Compilare con Cloud Build
gcloud builds submit --tag europe-west1-docker.pkg.dev/YOUR_PROJECT_ID/anythingmcp/app:latest

Generare i segreti

Poiché setup.sh non può essere eseguito su Cloud Run, genera i segreti manualmente:

JWT_SECRET=$(openssl rand -hex 32)
ENCRYPTION_KEY=$(openssl rand -hex 16)
NEXTAUTH_SECRET=$(openssl rand -hex 32)

Distribuire su Cloud Run

gcloud run deploy anythingmcp \
  --image=europe-west1-docker.pkg.dev/YOUR_PROJECT_ID/anythingmcp/app:latest \
  --allow-unauthenticated \
  --port=4000 \
  --min-instances=1 \
  --max-instances=5 \
  --memory=512Mi \
  --cpu=1 \
  --set-env-vars="NODE_ENV=production" \
  --set-env-vars="DATABASE_URL=postgresql://amcp:YOUR_DB_PASSWORD@localhost:5432/anythingmcp" \
  --set-env-vars="JWT_SECRET=$JWT_SECRET" \
  --set-env-vars="ENCRYPTION_KEY=$ENCRYPTION_KEY" \
  --set-env-vars="NEXTAUTH_SECRET=$NEXTAUTH_SECRET" \
  --set-env-vars="MCP_AUTH_MODE=oauth2" \
  --add-cloudsql-instances=YOUR_PROJECT_ID:europe-west1:anythingmcp-db

--min-instances=1 evita gli avvii a freddo. Il proxy Cloud SQL utilizza un socket Unix, quindi localhost funziona nel DATABASE_URL.

Dominio personalizzato (opzionale)

gcloud run domain-mappings create \
  --service=anythingmcp \
  --domain=mcp.example.com \
  --region=europe-west1

Segui le istruzioni DNS nell'output. Il certificato SSL viene fornito automaticamente.

Limitazioni

  • Stateless — Le istanze di Cloud Run sono effimere. Tutti i dati devono risiedere in Cloud SQL.
  • Avvii a freddo — Usa --min-instances=1 per mitigare (costo contenuto).
  • Nessun setup.sh — Tutta la configurazione avviene tramite variabili d'ambiente al momento della distribuzione.
  • Costi — Cloud Run addebita per richiesta + tempo vCPU. Cloud SQL ha un costo mensile fisso.

Aggiornamento

git pull
docker build -t europe-west1-docker.pkg.dev/YOUR_PROJECT_ID/anythingmcp/app:latest .
docker push europe-west1-docker.pkg.dev/YOUR_PROJECT_ID/anythingmcp/app:latest
gcloud run deploy anythingmcp \
  --image=europe-west1-docker.pkg.dev/YOUR_PROJECT_ID/anythingmcp/app:latest \
  --region=europe-west1

Le variabili d'ambiente esistenti e le connessioni Cloud SQL vengono preservate tra le ridistribuzioni.