This guide walks you through deploying the dev-workflow MCP server to Google Cloud Compute Engine using Docker and PostgreSQL.
- Google Cloud Platform account with a Compute Engine instance running
- SSH access to your GCP instance
- Git installed locally and on GCP instance
- Basic familiarity with Docker and SSH
The deployment consists of two Docker containers:
- MCP Server: Node.js application running the dev-workflow MCP server
- PostgreSQL: Database for persistent workflow state storage
Communication between your local MCP client and the cloud server happens via SSH tunneling.
ssh your-username@YOUR_GCP_IPFrom your local machine, copy the setup script to your GCP instance:
scp scripts/setup-gcp-instance.sh your-username@YOUR_GCP_IP:~/
ssh your-username@YOUR_GCP_IP 'bash ~/setup-gcp-instance.sh'This script will:
- Install Docker and Docker Compose
- Install Git
- Create the application directory
Note: You may need to log out and back in for Docker group permissions to take effect.
On your GCP instance:
cd ~/dev-workflow-mcp-server
git clone https://github.com/programinglive/dev-workflow-mcp-server.git .Create a .env file from the production template:
cp .env.production .env
nano .envUpdate the following values:
POSTGRES_PASSWORD: Set a strong, unique passwordDEV_WORKFLOW_DB_URL: Update with the same passwordDEV_WORKFLOW_USER_ID: (Optional) Set your username
Example .env:
DEV_WORKFLOW_DB_TYPE=postgres
DEV_WORKFLOW_DB_URL=postgres://devworkflow:MySecureP@ssw0rd@postgres:5432/devworkflow
POSTGRES_PASSWORD=MySecureP@ssw0rd
DEV_WORKFLOW_USER_ID=dhika
NODE_ENV=productiondocker-compose up -dCheck that both containers are running:
docker-compose psYou should see:
NAME STATUS
dev-workflow-mcp Up
dev-workflow-postgres Up (healthy)
View logs:
docker-compose logs -f mcp-serverUpdate your local MCP client configuration to connect via SSH.
Edit C:\Users\DHIKA\.gemini\antigravity\mcp_config.json:
{
"mcpServers": {
"dev-workflow": {
"command": "ssh",
"args": [
"-i", "C:\\Users\\DHIKA\\.ssh\\id_rsa",
"your-username@34.50.121.142",
"docker", "exec", "-i", "dev-workflow-mcp", "node", "/app/index.js"
]
}
}
}Edit your MCP config file:
{
"mcpServers": {
"dev-workflow": {
"command": "ssh",
"args": [
"-i", "/home/user/.ssh/id_rsa",
"your-username@34.50.121.142",
"docker", "exec", "-i", "dev-workflow-mcp", "node", "/app/index.js"
]
}
}
}Important: Replace:
your-usernamewith your actual GCP username34.50.121.142with your actual GCP external IP- SSH key path with your actual key location
From your local machine:
ssh your-username@34.50.121.142 'docker exec -i dev-workflow-mcp node /app/index.js call get_workflow_status'You should see the workflow status output.
Restart your MCP client (e.g., Claude Desktop) and try using a dev-workflow command like start_task.
Use the deployment script from your local machine:
# Set environment variables
export GCP_USER=your-username
export GCP_HOST=34.50.121.142
export GCP_SSH_KEY=~/.ssh/id_rsa
# Run deployment
bash scripts/deploy-gcp.shOn your GCP instance:
cd ~/dev-workflow-mcp-server
git pull origin main
docker-compose down
docker-compose build --no-cache
docker-compose up -ddocker exec dev-workflow-postgres pg_dump -U devworkflow devworkflow > backup.sqlcat backup.sql | docker exec -i dev-workflow-postgres psql -U devworkflow devworkflowdocker exec -it dev-workflow-postgres psql -U devworkflow devworkflowCommon commands:
\dt- List tables\d table_name- Describe tableSELECT * FROM workflow_state;- View workflow data
Check logs:
docker-compose logs mcp-server
docker-compose logs postgresVerify PostgreSQL is healthy:
docker-compose ps
docker exec dev-workflow-postgres pg_isready -U devworkflowTest basic SSH:
ssh -v your-username@YOUR_GCP_IPCheck SSH key permissions:
chmod 600 ~/.ssh/id_rsa- Verify SSH works:
ssh your-username@YOUR_GCP_IP 'echo test' - Test Docker exec:
ssh your-username@YOUR_GCP_IP 'docker ps' - Check MCP server:
ssh your-username@YOUR_GCP_IP 'docker logs dev-workflow-mcp'
- Change Default Passwords: Always use strong, unique passwords in
.env - Firewall Configuration: Only expose necessary ports (SSH port 22)
- SSH Key Authentication: Disable password authentication, use SSH keys only
- Regular Updates: Keep Docker images and system packages updated
- Backup Regularly: Schedule automated database backups
docker statsEdit docker-compose.yml to add PostgreSQL tuning:
postgres:
environment:
POSTGRES_SHARED_BUFFERS: 256MB
POSTGRES_EFFECTIVE_CACHE_SIZE: 1GBTo completely remove the deployment:
cd ~/dev-workflow-mcp-server
docker-compose down -v # -v removes volumes (deletes data!)
cd ~
rm -rf dev-workflow-mcp-serverFor issues or questions:
- GitHub Issues: https://github.com/programinglive/dev-workflow-mcp-server/issues
- Documentation: https://devworkflow.programinglive.com/