Skip to main content
Glama
run_tests.sh2.47 kB
#!/usr/bin/env bash set -euo pipefail usage() { cat <<'USAGE' Usage: run-tools.sh <test-dir> Runs: npx mcp-server-tester tools <test-dir>/tool-tests.yaml --server-config <test-dir>/apollo-mcp-server-config.json Notes: - <test-dir> is resolved relative to this script's directory (not the caller's cwd), so calling: foo/bar/run-tools.sh local-directory uses: foo/bar/local-directory/tool-tests.yaml - If ../../target/release/apollo-mcp-server (relative to this script) doesn't exist, it is built from the repo root (../../) with: cargo build --release USAGE exit 1 } [[ "${1:-}" == "-h" || "${1:-}" == "--help" || $# -eq 0 ]] && usage RAW_DIR_ARG="${1%/}" SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd ) # If absolute path, use it as-is; otherwise, resolve relative to the script dir. if [[ "$RAW_DIR_ARG" = /* ]]; then TEST_DIR="$RAW_DIR_ARG" else TEST_DIR="$(cd -P -- "$SCRIPT_DIR/$RAW_DIR_ARG" && pwd)" fi TEST_DIR="${1%/}" # strip trailing slash if present TESTS="$TEST_DIR/tool-tests.yaml" MCP_CONFIG="$TEST_DIR/config.yaml" # Sanity checks [[ -f "$TESTS" ]] || { echo "✗ Missing file: $TESTS"; exit 2; } [[ -f "$MCP_CONFIG" ]] || { echo "✗ Missing file: $MCP_CONFIG"; exit 2; } REPO_ROOT="$(cd "$SCRIPT_DIR/../.." && pwd)" BIN_PATH="$REPO_ROOT/target/release/apollo-mcp-server" if [[ ! -x "$BIN_PATH" ]]; then echo "ℹ️ Binary not found at: $BIN_PATH" echo "➡️ Building release binary from: $REPO_ROOT" (cd "$REPO_ROOT" && cargo build --release) # Re-check after build if [[ ! -x "$BIN_PATH" ]]; then echo "✗ Build succeeded but binary not found/executable at: $BIN_PATH" exit 3 fi fi # Template → generated server-config TEMPLATE_PATH="${SERVER_CONFIG_TEMPLATE:-"$SCRIPT_DIR/server-config.template.json"}" [[ -f "$TEMPLATE_PATH" ]] || { echo "✗ Missing server-config template: $TEMPLATE_PATH"; exit 4; } TMP_DIR="$(mktemp -d)" cleanup() { rm -rf "$TMP_DIR"; } trap cleanup EXIT INT TERM # cleanup before exiting GEN_CONFIG="$TMP_DIR/server-config.generated.json" # Safe replacement for <test-dir> with absolute path (handles /, &, and |) safe_dir="${TEST_DIR//\\/\\\\}" safe_dir="${safe_dir//&/\\&}" safe_dir="${safe_dir//|/\\|}" # Replace the literal token "<test-dir>" everywhere sed "s|<test-dir>|$safe_dir|g" "$TEMPLATE_PATH" > "$GEN_CONFIG" # Run the command npx -y mcp-server-tester@1.4.0 tools "$TESTS" --server-config "$GEN_CONFIG"

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/apollographql/apollo-mcp-server'

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