Summary
Despliega AnythingMCP como un contenedor sin servidor en Google Cloud Run con Cloud SQL para PostgreSQL. Gateway MCP escalable y de pago por uso.
¿Por qué Google Cloud Run?
Cloud Run te permite ejecutar contenedores sin gestionar servidores. Combinado con Cloud SQL para PostgreSQL, proporciona un despliegue escalable y de pago por uso. HTTPS se maneja automáticamente — no se necesita un proxy inverso.
Esto es más avanzado que los despliegues basados en VM. No puedes ejecutar setup.sh en Cloud Run, por lo que debes construir la imagen, subirla y configurar las variables de entorno manualmente.
Requisitos previos
- Una cuenta de GCP con facturación habilitada
- gcloud CLI instalado y autenticado
- Docker instalado 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
Configurar 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
Toma nota del nombre de conexión de la instancia (por ejemplo, project-id:europe-west1:anythingmcp-db).
Construir y subir la imagen
git clone https://github.com/HelpCode-ai/anythingmcp.git
cd anythingmcp
# Opción A: Construir 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
# Opción B: Construir con Cloud Build
gcloud builds submit --tag europe-west1-docker.pkg.dev/YOUR_PROJECT_ID/anythingmcp/app:latest
Generar secretos
Dado que setup.sh no puede ejecutarse en Cloud Run, genera secretos manualmente:
JWT_SECRET=$(openssl rand -hex 32)
ENCRYPTION_KEY=$(openssl rand -hex 16)
NEXTAUTH_SECRET=$(openssl rand -hex 32)
Desplegar en 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 arranques en frío. El proxy de Cloud SQL utiliza un socket Unix, por lo que localhost funciona en el DATABASE_URL.
Dominio personalizado (Opcional)
gcloud run domain-mappings create \
--service=anythingmcp \
--domain=mcp.example.com \
--region=europe-west1
Sigue las instrucciones de DNS en la salida. SSL se provisiona automáticamente.
Limitaciones
- Sin estado — Las instancias de Cloud Run son efímeras. Todos los datos deben estar en Cloud SQL.
- Arranques en frío — Usa
--min-instances=1para mitigar (costo pequeño). - Sin setup.sh — Toda la configuración es a través de variables de entorno en el momento del despliegue.
- Costos — Cloud Run cobra por solicitud + tiempo de vCPU. Cloud SQL tiene un costo mensual fijo.
Actualización
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
Las variables de entorno existentes y las conexiones de Cloud SQL se preservan a través de las nuevas implementaciones.
¿Te ha sido útil esta guía?