Skip to main content
Glama
entrypoint.sh4.24 kB
#!/bin/sh set -e # Default command logic: # 1. Use CMD environment variable if set (allows via docker run -e CMD=...) # 2. Else use first argument (allows via docker run image command ...) # 3. Default to searxng-mcp (set in Dockerfile CMD, so $1 is usually this if no args) COMMAND="${CMD:-$1}" # If we are using the default from Dockerfile ($1) or an explicit argument, we shift it off # If we are using ENV CMD, we still expect $1 to be the default "searxng-mcp" or empty, so shifting is generally safe if we assume standard usage. # However, to be safe, if we are using ENV CMD, we might not want to consume $1 if $1 is actually flags meant for the command. # But Docker CMD handling means if we pass args, they replace CMD. # So if we use -e CMD=a2a, and run `docker run ...`, $1 IS "searxng-mcp". So we MUST shift. # If user runs `docker run -e CMD=a2a image --flag`, then $1 is "--flag". # Then COMMAND is a2a. # If we shift, we lose --flag. This is BAD. # improved logic: # If CMD env is set, use it. # Check if $1 is "searxng-mcp" (the default). If so, shift it. # If $1 is NOT "searxng-mcp" (e.g. it's "--flag" or another command): # If CMD env was set, we assume $1 are args FOR that command? # Or if $1 is a command, it conflicts? # Let's assume -e CMD is used purely when NO args are passed (relying on default CMD). if [ -n "$CMD" ]; then # Env var set. # If $1 is the default Dockerfile CMD, remove it. if [ "$1" = "searxng-mcp" ]; then shift 1 fi else # Env var not set. Use $1. COMMAND="$1" shift 1 fi if [ "$COMMAND" = "searxng-mcp" ]; then exec searxng-mcp \ --transport "${TRANSPORT}" \ --host "${HOST}" \ --port "${PORT}" \ --auth-type "${AUTH_TYPE}" \ $( [ -n "${TOKEN_JWKS_URI}" ] && echo "--token-jwks-uri ${TOKEN_JWKS_URI}" ) \ $( [ -n "${TOKEN_ISSUER}" ] && echo "--token-issuer ${TOKEN_ISSUER}" ) \ $( [ -n "${TOKEN_AUDIENCE}" ] && echo "--token-audience ${TOKEN_AUDIENCE}" ) \ $( [ -n "${OAUTH_UPSTREAM_AUTH_ENDPOINT}" ] && echo "--oauth-upstream-auth-endpoint ${OAUTH_UPSTREAM_AUTH_ENDPOINT}" ) \ $( [ -n "${OAUTH_UPSTREAM_TOKEN_ENDPOINT}" ] && echo "--oauth-upstream-token-endpoint ${OAUTH_UPSTREAM_TOKEN_ENDPOINT}" ) \ $( [ -n "${OAUTH_UPSTREAM_CLIENT_ID}" ] && echo "--oauth-upstream-client-id ${OAUTH_UPSTREAM_CLIENT_ID}" ) \ $( [ -n "${OAUTH_UPSTREAM_CLIENT_SECRET}" ] && echo "--oauth-upstream-client-secret ${OAUTH_UPSTREAM_CLIENT_SECRET}" ) \ $( [ -n "${OAUTH_BASE_URL}" ] && echo "--oauth-base-url ${OAUTH_BASE_URL}" ) \ $( [ -n "${OIDC_CONFIG_URL}" ] && echo "--oidc-config-url ${OIDC_CONFIG_URL}" ) \ $( [ -n "${OIDC_CLIENT_ID}" ] && echo "--oidc-client-id ${OIDC_CLIENT_ID}" ) \ $( [ -n "${OIDC_CLIENT_SECRET}" ] && echo "--oidc-client-secret ${OIDC_CLIENT_SECRET}" ) \ $( [ -n "${OIDC_BASE_URL}" ] && echo "--oidc-base-url ${OIDC_BASE_URL}" ) \ $( [ -n "${REMOTE_AUTH_SERVERS}" ] && echo "--remote-auth-servers ${REMOTE_AUTH_SERVERS}" ) \ $( [ -n "${REMOTE_BASE_URL}" ] && echo "--remote-base-url ${REMOTE_BASE_URL}" ) \ $( [ -n "${ALLOWED_CLIENT_REDIRECT_URIS}" ] && echo "--allowed-client-redirect-uris ${ALLOWED_CLIENT_REDIRECT_URIS}" ) \ $( [ -n "${EUNOMIA_TYPE}" ] && echo "--eunomia-type ${EUNOMIA_TYPE}" ) \ $( [ -n "${EUNOMIA_POLICY_FILE}" ] && echo "--eunomia-policy-file ${EUNOMIA_POLICY_FILE}" ) \ $( [ -n "${EUNOMIA_REMOTE_URL}" ] && echo "--eunomia-remote-url ${EUNOMIA_REMOTE_URL}" ) \ "$@" elif [ "$COMMAND" = "searxng-a2a" ]; then # shift 1 # Already shifted exec searxng-a2a \ --host "${HOST}" \ --port "${PORT}" \ $( [ -n "${PROVIDER}" ] && echo "--provider ${PROVIDER}" ) \ $( [ -n "${MODEL_ID}" ] && echo "--model-id ${MODEL_ID}" ) \ $( [ -n "${BASE_URL}" ] && echo "--base-url ${BASE_URL}" ) \ $( [ -n "${API_KEY}" ] && echo "--api-key ${API_KEY}" ) \ $( [ -n "${MCP_URL}" ] && echo "--mcp-url ${MCP_URL}" ) \ $( [ -n "${ALLOWED_TOOLS}" ] && echo "--allowed-tools ${ALLOWED_TOOLS}" ) \ "$@" elif [ "$COMMAND" = "searxng" ]; then # shift 1 # Already shifted exec searxng "$@" else # Allow running arbitrary commands exec "$COMMAND" "$@" fi

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/Knuckles-Team/searxng-mcp'

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