We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/russelenriquez-agile/tableau-mcp-project'
If you have feedback or need assistance with the MCP directory API, please join our Discord server
name: Deploy to Production
on:
push:
branches:
- main
env:
GCP_PROJECT_ID: ${{ secrets.GCP_PROJECT_ID }}
GCP_REGION: ${{ secrets.GCP_REGION }}
SERVICE_NAME: tableau-mcp-production
IMAGE_NAME: tableau-mcp
jobs:
deploy:
name: Deploy to Cloud Run Production
runs-on: ubuntu-latest
environment: production
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Authenticate to Google Cloud
uses: google-github-actions/auth@v2
with:
credentials_json: ${{ secrets.GCP_SA_KEY }}
- name: Set up Cloud SDK
uses: google-github-actions/setup-gcloud@v2
with:
project_id: ${{ secrets.GCP_PROJECT_ID }}
- name: Configure Docker for GCR
run: |
gcloud auth configure-docker
- name: Build Docker image
run: |
docker build \
-t gcr.io/${{ env.GCP_PROJECT_ID }}/${{ env.IMAGE_NAME }}:production-${{ github.sha }} \
-t gcr.io/${{ env.GCP_PROJECT_ID }}/${{ env.IMAGE_NAME }}:production-latest \
.
- name: Push Docker image to GCR
run: |
docker push gcr.io/${{ env.GCP_PROJECT_ID }}/${{ env.IMAGE_NAME }}:production-${{ github.sha }}
docker push gcr.io/${{ env.GCP_PROJECT_ID }}/${{ env.IMAGE_NAME }}:production-latest
- name: Deploy to Cloud Run
run: |
gcloud run services update ${{ env.SERVICE_NAME }} \
--image gcr.io/${{ env.GCP_PROJECT_ID }}/${{ env.IMAGE_NAME }}:production-${{ github.sha }} \
--region ${{ env.GCP_REGION }} \
--platform managed
- name: Get service URL
id: get-url
run: |
SERVICE_URL=$(gcloud run services describe ${{ env.SERVICE_NAME }} \
--region ${{ env.GCP_REGION }} \
--format 'value(status.url)')
echo "SERVICE_URL=$SERVICE_URL" >> $GITHUB_OUTPUT
echo "Service URL: $SERVICE_URL"
- name: Run smoke tests
env:
SERVICE_URL: ${{ steps.get-url.outputs.SERVICE_URL }}
run: |
echo "Testing health endpoint..."
HTTP_STATUS=$(curl -s -o /dev/null -w "%{http_code}" ${SERVICE_URL}/health)
if [ $HTTP_STATUS -eq 200 ]; then
echo "✅ Health check passed"
else
echo "❌ Health check failed with status: $HTTP_STATUS"
exit 1
fi
echo "Testing alive endpoint..."
HTTP_STATUS=$(curl -s -o /dev/null -w "%{http_code}" ${SERVICE_URL}/alive)
if [ $HTTP_STATUS -eq 200 ]; then
echo "✅ Alive check passed"
else
echo "❌ Alive check failed with status: $HTTP_STATUS"
exit 1
fi
echo "Testing ready endpoint..."
HTTP_STATUS=$(curl -s -o /dev/null -w "%{http_code}" ${SERVICE_URL}/ready)
if [ $HTTP_STATUS -eq 200 ]; then
echo "✅ Ready check passed"
else
echo "❌ Ready check failed with status: $HTTP_STATUS"
exit 1
fi
- name: Deployment summary
run: |
echo "## 🎉 Production Deployment Successful" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
echo "**Service**: ${{ env.SERVICE_NAME }}" >> $GITHUB_STEP_SUMMARY
echo "**Image**: gcr.io/${{ env.GCP_PROJECT_ID }}/${{ env.IMAGE_NAME }}:production-${{ github.sha }}" >> $GITHUB_STEP_SUMMARY
echo "**URL**: ${{ steps.get-url.outputs.SERVICE_URL }}" >> $GITHUB_STEP_SUMMARY
echo "**Commit**: ${{ github.sha }}" >> $GITHUB_STEP_SUMMARY
echo "**Branch**: ${{ github.ref_name }}" >> $GITHUB_STEP_SUMMARY