Skip to main content
Glama

Postgres MCP

by crystaldba
#!/bin/bash # Don't exit immediately so we can debug issues # set -e # Function to replace localhost in a string with the Docker host replace_localhost() { local input_str="$1" local docker_host="" # Try to determine Docker host address if ping -c 1 -w 1 host.docker.internal >/dev/null 2>&1; then docker_host="host.docker.internal" echo "Docker Desktop detected: Using host.docker.internal for localhost" >&2 elif ping -c 1 -w 1 172.17.0.1 >/dev/null 2>&1; then docker_host="172.17.0.1" echo "Docker on Linux detected: Using 172.17.0.1 for localhost" >&2 else echo "WARNING: Cannot determine Docker host IP. Using original address." >&2 return 1 fi # Replace localhost with Docker host if [[ -n "$docker_host" ]]; then local new_str="${input_str/localhost/$docker_host}" echo " Remapping: $input_str --> $new_str" >&2 echo "$new_str" return 0 fi # No replacement made echo "$input_str" return 1 } # Create a new array for the processed arguments processed_args=() processed_args+=("$1") shift 1 # Process remaining command-line arguments for postgres:// or postgresql:// URLs that contain localhost for arg in "$@"; do if [[ "$arg" == *"postgres"*"://"*"localhost"* ]]; then echo "Found localhost in database connection: $arg" >&2 new_arg=$(replace_localhost "$arg") if [[ $? -eq 0 ]]; then processed_args+=("$new_arg") else processed_args+=("$arg") fi else processed_args+=("$arg") fi done # Check and replace localhost in DATABASE_URI if it exists if [[ -n "$DATABASE_URI" && "$DATABASE_URI" == *"postgres"*"://"*"localhost"* ]]; then echo "Found localhost in DATABASE_URI: $DATABASE_URI" >&2 new_uri=$(replace_localhost "$DATABASE_URI") if [[ $? -eq 0 ]]; then export DATABASE_URI="$new_uri" fi fi # Check if SSE transport is specified and --sse-host is not already set has_sse=false has_sse_host=false for arg in "${processed_args[@]}"; do if [[ "$arg" == "--transport" ]]; then # Check next argument for "sse" for next_arg in "${processed_args[@]}"; do if [[ "$next_arg" == "sse" ]]; then has_sse=true break fi done elif [[ "$arg" == "--transport=sse" ]]; then has_sse=true elif [[ "$arg" == "--sse-host"* ]]; then has_sse_host=true fi done # Add --sse-host if needed if [[ "$has_sse" == true ]] && [[ "$has_sse_host" == false ]]; then echo "SSE transport detected, adding --sse-host=0.0.0.0" >&2 processed_args+=("--sse-host=0.0.0.0") fi echo "----------------" >&2 echo "Executing command:" >&2 echo "${processed_args[@]}" >&2 echo "----------------" >&2 # Execute the command with the processed arguments "${processed_args[@]}" # Capture exit code from the Python process exit_code=$? # If the Python process failed, print additional debug info if [ $exit_code -ne 0 ]; then echo "ERROR: Command failed with exit code $exit_code" >&2 echo "Command was: ${processed_args[@]}" >&2 fi # Return the exit code from the Python process exit $exit_code

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/crystaldba/postgres-mcp'

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