#!/bin/bash
# Test script for MCP server resources and prompts

DB_PATH="${1:-../db/skraak.duckdb}"

if [ ! -f "$DB_PATH" ]; then
  echo "Error: Database not found at $DB_PATH" >&2
  echo "Usage: $0 [path-to-database]" >&2
  exit 1
fi

echo "=== Testing MCP Resources and Prompts ===" >&2
echo "Database: $DB_PATH" >&2
echo "" >&2

# Start the server and send test messages
{
  echo "=== 1. Initialize ===" >&2
  echo '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{},"clientInfo":{"name":"test-client","version":"1.0.0"}}}'
  sleep 0.2

  echo "" >&2
  echo "=== 2. List Resources ===" >&2
  echo '{"jsonrpc":"2.0","id":2,"method":"resources/list","params":{}}'
  sleep 0.2

  echo "" >&2
  echo "=== 3. List Resource Templates ===" >&2
  echo '{"jsonrpc":"2.0","id":3,"method":"resources/templates/list","params":{}}'
  sleep 0.2

  echo "" >&2
  echo "=== 4. Read Full Schema (first 50 lines only) ===" >&2
  echo '{"jsonrpc":"2.0","id":4,"method":"resources/read","params":{"uri":"schema://full"}}'
  sleep 0.2

  echo "" >&2
  echo "=== 5. Read Dataset Table Schema ===" >&2
  echo '{"jsonrpc":"2.0","id":5,"method":"resources/read","params":{"uri":"schema://table/dataset"}}'
  sleep 0.2

  echo "" >&2
  echo "=== 6. Read Location Table Schema ===" >&2
  echo '{"jsonrpc":"2.0","id":6,"method":"resources/read","params":{"uri":"schema://table/location"}}'
  sleep 0.2

  echo "" >&2
  echo "=== 7. Try Invalid Table (should error) ===" >&2
  echo '{"jsonrpc":"2.0","id":7,"method":"resources/read","params":{"uri":"schema://table/invalid_table"}}'
  sleep 0.2

  echo "" >&2
  echo "=== 8. List Prompts ===" >&2
  echo '{"jsonrpc":"2.0","id":8,"method":"prompts/list","params":{}}'
  sleep 0.2

  echo "" >&2
  echo "=== 9. Get query_active_datasets Prompt ===" >&2
  echo '{"jsonrpc":"2.0","id":9,"method":"prompts/get","params":{"name":"query_active_datasets"}}'
  sleep 0.2

  echo "" >&2
  echo "=== 10. Get explore_database_schema Prompt (focus: dataset) ===" >&2
  echo '{"jsonrpc":"2.0","id":10,"method":"prompts/get","params":{"name":"explore_database_schema","arguments":{"focus_area":"dataset"}}}'
  sleep 0.2

  echo "" >&2
  echo "=== 11. Get system_status_check Prompt ===" >&2
  echo '{"jsonrpc":"2.0","id":11,"method":"prompts/get","params":{"name":"system_status_check"}}'
  sleep 0.2

} | ../skraak_mcp "$DB_PATH" 2>/dev/null | jq '.'