Add mcp-sdk-plain module: MCP server on the plain Java SDK 2.1.0 over stdio and Streamable HTTP, fat jar, wire transcripts and a Spring AI client

Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_017ic4b5oh78z7gcH6QkxafF
This commit is contained in:
Claude
2026-11-08 18:28:07 +00:00
parent 7c20ea1370
commit 58eaf4c2e1
29 changed files with 864 additions and 0 deletions
+23
View File
@@ -0,0 +1,23 @@
#!/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/<session-id>/" | grep -iv '^date:\|^server:'
echo
echo "\$ curl -X POST $URL -H 'Mcp-Session-Id: <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"