A 503 Service Unavailable means the AWS Application Load Balancer has zero healthy tasks in the ECS Target Group. The container is either crashing on startup or failing health checks.
ECS streams stdout/stderr to CloudWatch. Look here first for startup crashes.
- Open AWS Console -> CloudWatch -> Log Groups.
- Open
/ecs/<environment_name>-earthdata-mcp-server. - Check the most recent Log Stream for exceptions.
- Common Error:
ModuleNotFoundErrorusually means a new Python directory is missing from theCOPYblock inMcpServerDockerfile.
- Common Error:
If logs are empty, the container might be dying from infrastructure limits.
- Open AWS Console -> Amazon ECS -> Clusters ->
<env>-earthdata-mcp-cluster. - Click the service -> Tasks tab -> filter by Stopped.
- Click the latest stopped task and check the Stopped reason and Container Exit Code:
- Exit Code 137 (OOM): Task ran out of memory. Increase
var.mcp_server_memory. - Exit Code 1: Application crashed. Re-check logs.
- Failed ELB health checks: App started but
/mcp/healthdidn't return 200.
- Exit Code 137 (OOM): Task ran out of memory. Increase
If tasks are "Running" but you still see a 503, health checks are failing.
- Open AWS Console -> EC2 -> Target Groups.
- Select the
mcp-prefixed group. - Under Targets, hover over Status details for Unhealthy targets:
- Health checks failed: App started, but
/mcp/healthtimed out or returned an error. - Connection refused: App isn't listening on port 8080.
- Health checks failed: App started, but
Run the image locally to isolate Docker issues from AWS environment issues.
docker build -t mcp-server-local -f McpServerDockerfile .
docker run -p 8080:8080 -e ENVIRONMENT_NAME=dev mcp-server-localTest the health endpoint:
curl -v http://localhost:8080/mcp/health