#!/usr/bin/env bash # Starts the fat jar in HTTP mode and drives it with curl. Usage: scripts/curl-http.sh set -eu cd "$(dirname "$0")/.." PORT=18089 URL=http://127.0.0.1:$PORT/mcp OUT=output/06-fat-jar-curl.txt java -jar target/mcp-sdk-plain.jar http $PORT >/dev/null 2>&1 & PID=$! trap 'kill $PID 2>/dev/null || true' EXIT for i in $(seq 1 40); do curl -s -o /dev/null "http://127.0.0.1:$PORT/" && break; sleep 0.5; done H=(-H 'Content-Type: application/json' -H 'Accept: application/json, text/event-stream') { echo "\$ curl -i -X POST $URL (initialize)" RESP=$(curl -s -i "${H[@]}" -d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-06-18","capabilities":{},"clientInfo":{"name":"curl","version":"0"}}}' "$URL" | tr -d '\r') SID=$(echo "$RESP" | awk -F': ' 'tolower($1)=="mcp-session-id"{print $2}') echo "$RESP" | sed "s/$SID//" | grep -iv '^date:\|^server:' echo echo "\$ curl -X POST $URL -H 'Mcp-Session-Id: ' (tools/call word_stats)" curl -s "${H[@]}" -H "Mcp-Session-Id: $SID" -d '{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"word_stats","arguments":{"text":"one two three"}}}' "$URL" echo } > "$OUT" cat "$OUT"