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=1per 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.