Skip to main content
Glama
deploy-gcp.yaml4.6 kB
name: Deploy to GCP Cloud Run on: push: branches: - main workflow_dispatch: inputs: environment: description: 'Deployment environment' required: true default: 'production' type: choice options: - production - staging env: PROJECT_ID: ${{ secrets.GCP_PROJECT_ID }} SERVICE_NAME: dataforseo-mcp-server REGION: us-central1 REGISTRY: us-central1-docker.pkg.dev jobs: build-and-deploy: name: Build and Deploy to Cloud Run runs-on: ubuntu-latest permissions: contents: read id-token: write steps: - name: Checkout code uses: actions/checkout@v4 - name: Authenticate to Google Cloud uses: google-github-actions/auth@v2 with: workload_identity_provider: ${{ secrets.WIF_PROVIDER }} service_account: ${{ secrets.WIF_SERVICE_ACCOUNT }} - name: Set up Cloud SDK uses: google-github-actions/setup-gcloud@v2 - name: Configure Docker for Artifact Registry run: | gcloud auth configure-docker ${{ env.REGISTRY }} --quiet - name: Build Docker image run: | docker build \ --tag ${{ env.REGISTRY }}/${{ env.PROJECT_ID }}/mcp-servers/${{ env.SERVICE_NAME }}:${{ github.sha }} \ --tag ${{ env.REGISTRY }}/${{ env.PROJECT_ID }}/mcp-servers/${{ env.SERVICE_NAME }}:latest \ . - name: Push Docker image to Artifact Registry run: | docker push ${{ env.REGISTRY }}/${{ env.PROJECT_ID }}/mcp-servers/${{ env.SERVICE_NAME }}:${{ github.sha }} docker push ${{ env.REGISTRY }}/${{ env.PROJECT_ID }}/mcp-servers/${{ env.SERVICE_NAME }}:latest - name: Deploy to Cloud Run run: | gcloud run deploy ${{ env.SERVICE_NAME }} \ --image ${{ env.REGISTRY }}/${{ env.PROJECT_ID }}/mcp-servers/${{ env.SERVICE_NAME }}:${{ github.sha }} \ --region ${{ env.REGION }} \ --platform managed \ --allow-unauthenticated \ --memory 1Gi \ --cpu 2 \ --min-instances 1 \ --max-instances 100 \ --timeout 300s \ --concurrency 80 \ --execution-environment gen2 \ --cpu-boost \ --service-account dataforseo-mcp@${{ env.PROJECT_ID }}.iam.gserviceaccount.com \ --set-secrets="DATAFORSEO_LOGIN=dataforseo-login:latest,DATAFORSEO_PASSWORD=dataforseo-password:latest,LOCALFALCON_API_KEY=localfalcon-api-key:latest" \ --set-env-vars="NODE_ENV=production,REQUEST_TIMEOUT=60000" - name: Get Service URL id: get-url run: | SERVICE_URL=$(gcloud run services describe ${{ env.SERVICE_NAME }} \ --region ${{ env.REGION }} \ --format='value(status.url)') echo "url=$SERVICE_URL" >> $GITHUB_OUTPUT echo "Service deployed to: $SERVICE_URL" - name: Test Deployment - Health Check run: | sleep 10 # Wait for service to be ready curl -f -s ${{ steps.get-url.outputs.url }}/health || exit 1 echo "Health check passed" - name: Test Deployment - Tools List run: | curl -f -s ${{ steps.get-url.outputs.url }}/tools | jq . || exit 1 echo "Tools list retrieved successfully" - name: Create deployment summary run: | echo "## Deployment Summary" >> $GITHUB_STEP_SUMMARY echo "" >> $GITHUB_STEP_SUMMARY echo "✅ **Service deployed successfully**" >> $GITHUB_STEP_SUMMARY echo "" >> $GITHUB_STEP_SUMMARY echo "- **Service URL**: ${{ steps.get-url.outputs.url }}" >> $GITHUB_STEP_SUMMARY echo "- **Image**: ${{ env.REGISTRY }}/${{ env.PROJECT_ID }}/mcp-servers/${{ env.SERVICE_NAME }}:${{ github.sha }}" >> $GITHUB_STEP_SUMMARY echo "- **Region**: ${{ env.REGION }}" >> $GITHUB_STEP_SUMMARY echo "- **Commit**: ${{ github.sha }}" >> $GITHUB_STEP_SUMMARY echo "" >> $GITHUB_STEP_SUMMARY echo "### Quick Links" >> $GITHUB_STEP_SUMMARY echo "- [Health Check](${{ steps.get-url.outputs.url }}/health)" >> $GITHUB_STEP_SUMMARY echo "- [Tools List](${{ steps.get-url.outputs.url }}/tools)" >> $GITHUB_STEP_SUMMARY - name: Notify on failure if: failure() run: | echo "Deployment failed. Check logs for details." gcloud run services logs read ${{ env.SERVICE_NAME }} \ --region ${{ env.REGION }} \ --limit 50

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Skobyn/dataforseo-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server