diff --git a/tests/e2e_mcp_test.sh b/tests/e2e_mcp_test.sh index 6c95743..678affc 100755 --- a/tests/e2e_mcp_test.sh +++ b/tests/e2e_mcp_test.sh @@ -13,9 +13,8 @@ MCP_SERVER_URL="http://${MCP_SERVER_HOST}:${MCP_SERVER_PORT}" # --- Cleanup Function --- cleanup() { echo "--- Cleaning up ---" - if [ -n "$mcp_server_pid" ]; then - kill "$mcp_server_pid" || true - fi + [ -n "${mcp_proxy_pid:-}" ] && kill "$mcp_proxy_pid" || true + [ -n "${mcp_server_pid:-}" ] && kill "$mcp_server_pid" || true pkill -f kom_mcp || true sleep 1 # Give the OS time to release the port netstat -tuln | grep ":${MCP_SERVER_PORT}" || true # Check if port is still in use @@ -29,15 +28,28 @@ echo "--- Setting up test environment ---" echo ">> Initializing test database..." "${PROJECT_ROOT_DIR}/db/scripts/create-test-db.sh" "$TEST_DB_NAME" +# Optional environment bootstrap (developer machine) +if [ -f "$HOME/dev/main/src/env.sh" ]; then + # shellcheck source=/dev/null + . "$HOME/dev/main/src/env.sh" +fi + echo ">> Harvesting embeddings..." export DB_URL="dbname=${TEST_DB_NAME} user=kompanion host=/var/run/postgresql" EMBED_NAMESPACE="dev_knowledge" python3 "${PROJECT_ROOT_DIR}/tools/ingest_dir.py" "${PROJECT_ROOT_DIR}/tests/test_data" "dev_knowledge" -echo ">> Starting MCP server..." +echo ">> Starting MCP server (preferring stdio + mcp-proxy if available)..." sleep 2 -timeout 10 $MCP_SERVER_EXECUTABLE --backend sse --address "${MCP_SERVER_HOST}:${MCP_SERVER_PORT}" < /dev/null > /dev/null 2>&1 & -mcp_server_pid=$! -mcp_server_pid=$! +if command -v mcp-proxy >/dev/null 2>&1; then + setsid $MCP_SERVER_EXECUTABLE --backend stdio < /dev/null > /dev/null 2>&1 & + mcp_server_pid=$! + sleep 1 + setsid mcp-proxy --target stdio://127.0.0.1 --listen "${MCP_SERVER_HOST}:${MCP_SERVER_PORT}" < /dev/null > /dev/null 2>&1 & + mcp_proxy_pid=$! +else + timeout 10 $MCP_SERVER_EXECUTABLE --backend sse --address "${MCP_SERVER_HOST}:${MCP_SERVER_PORT}" < /dev/null > /dev/null 2>&1 & + mcp_server_pid=$! +fi sleep 5 ps -ef | grep kom_mcp