Skip to main content
Glama
docker-run.sh3.64 kB
#!/bin/bash # docker-run.sh - Run Docker container for Attio MCP Server # Usage: ./docker-run.sh [options] set -e # Constants IMAGE_NAME="attio-mcp-server" IMAGE_TAG="latest" CONTAINER_NAME="attio-mcp-server" PORT=3000 ENV_FILE=".env" # Parse command line arguments while (( "$#" )); do case "$1" in -t|--tag) if [ -n "$2" ] && [ ${2:0:1} != "-" ]; then IMAGE_TAG=$2 shift 2 else echo "Error: Argument for $1 is missing" >&2 exit 1 fi ;; -n|--name) if [ -n "$2" ] && [ ${2:0:1} != "-" ]; then CONTAINER_NAME=$2 shift 2 else echo "Error: Argument for $1 is missing" >&2 exit 1 fi ;; -p|--port) if [ -n "$2" ] && [ ${2:0:1} != "-" ]; then PORT=$2 shift 2 else echo "Error: Argument for $1 is missing" >&2 exit 1 fi ;; -e|--env-file) if [ -n "$2" ] && [ ${2:0:1} != "-" ]; then ENV_FILE=$2 shift 2 else echo "Error: Argument for $1 is missing" >&2 exit 1 fi ;; -h|--help) echo "Usage: ./docker-run.sh [options]" echo "Options:" echo " -t, --tag Image tag (default: latest)" echo " -n, --name Container name (default: attio-mcp-server)" echo " -p, --port Port to expose (default: 3000)" echo " -e, --env-file Environment file (default: .env)" echo " -h, --help Show this help message" exit 0 ;; *) echo "Error: Unsupported option $1" >&2 exit 1 ;; esac done # Validate environment if ! docker image inspect "${IMAGE_NAME}:${IMAGE_TAG}" &> /dev/null; then echo "Error: Docker image ${IMAGE_NAME}:${IMAGE_TAG} not found" >&2 echo "Please build the image first using docker-build.sh" >&2 exit 1 fi # Check if env file exists if [ ! -f "$ENV_FILE" ]; then echo "Warning: Environment file $ENV_FILE not found" >&2 echo "Creating example .env file..." cat > "$ENV_FILE" << EOF # Attio API credentials (Required) ATTIO_API_KEY= # Server configuration (Optional) PORT=3000 LOG_LEVEL=info NODE_ENV=production EOF echo "Created $ENV_FILE file with example values" echo "Please edit $ENV_FILE and add your Attio API key before running the container" exit 1 fi # Validate API key existence if ! grep -q "ATTIO_API_KEY=\S" "$ENV_FILE"; then echo "Error: ATTIO_API_KEY not set in $ENV_FILE" >&2 echo "Please add your Attio API key to $ENV_FILE" >&2 exit 1 fi # Check if container already exists and remove it if docker ps -a --format '{{.Names}}' | grep -q "^${CONTAINER_NAME}$"; then echo "Container ${CONTAINER_NAME} already exists, removing..." docker rm -f "${CONTAINER_NAME}" || { echo "Error: Failed to remove existing container ${CONTAINER_NAME}" >&2 exit 1 } fi # Run the Docker container echo "Starting Docker container: ${CONTAINER_NAME} from image ${IMAGE_NAME}:${IMAGE_TAG}" echo "Exposing port: ${PORT}" echo "Using environment file: ${ENV_FILE}" docker run -d \ --name "${CONTAINER_NAME}" \ -p "${PORT}:${PORT}" \ --env-file "${ENV_FILE}" \ --restart unless-stopped \ --health-cmd "curl -f http://localhost:${PORT}/health || exit 1" \ --health-interval=30s \ --health-timeout=10s \ --health-retries=3 \ "${IMAGE_NAME}:${IMAGE_TAG}" || { echo "Error: Failed to start container" >&2 exit 1 } echo "Container ${CONTAINER_NAME} started successfully" echo "Health check will monitor the container status" echo "To view logs: docker logs -f ${CONTAINER_NAME}" echo "To stop container: docker stop ${CONTAINER_NAME}"

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/kesslerio/attio-mcp-server'

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