Skip to main content
Glama
TEST_PHASE_1-6_NOW.ps16.87 kB
# ============================================ # Tableau MCP Server - Phase 1-6 Verification # ============================================ # Comprehensive test of all phases # Date: November 19, 2025 # ============================================ $ErrorActionPreference = "Continue" # Configuration $SERVICE_URL = "https://tableau-mcp-staging-bh375nkujq-ts.a.run.app" $API_KEY = "1rJ8DviFGb97OZ3Uu4HxwWXhNoEPVCj0" Write-Host "" Write-Host "============================================" -ForegroundColor Blue Write-Host "Tableau MCP Phase 1-6 Test (November 19, 2025)" -ForegroundColor Blue Write-Host "============================================" -ForegroundColor Blue Write-Host "" $TestResults = @{ TotalTests = 0 Passed = 0 Failed = 0 Details = @() } function Test-Endpoint { param( [string]$Name, [string]$Url, [hashtable]$Headers = @{}, [int]$ExpectedStatus = 200 ) $TestResults.TotalTests++ Write-Host "Testing: $Name... " -NoNewline try { $response = Invoke-WebRequest -Uri $Url -Headers $Headers -Method Get -UseBasicParsing -ErrorAction SilentlyContinue $actualStatus = $response.StatusCode } catch { $actualStatus = $_.Exception.Response.StatusCode.value__ } if ($actualStatus -eq $ExpectedStatus) { Write-Host "✓ PASS" -ForegroundColor Green $TestResults.Passed++ $TestResults.Details += @{ Test = $Name Status = "PASS" Expected = $ExpectedStatus Actual = $actualStatus } return $true } else { Write-Host "✗ FAIL (Expected: $ExpectedStatus, Got: $actualStatus)" -ForegroundColor Red $TestResults.Failed++ $TestResults.Details += @{ Test = $Name Status = "FAIL" Expected = $ExpectedStatus Actual = $actualStatus } return $false } } Write-Host "Phase 1-2: Project Setup & Tableau Client" -ForegroundColor Yellow Write-Host "Testing compiled TypeScript files..." -ForegroundColor Gray Test-Endpoint -Name "Service Deployment" -Url "$SERVICE_URL/health" Write-Host "" Write-Host "Phase 3: MCP Server Core" -ForegroundColor Yellow Write-Host "Testing MCP server endpoints..." -ForegroundColor Gray Test-Endpoint -Name "Health Endpoint" -Url "$SERVICE_URL/health" Test-Endpoint -Name "Authentication (No Key - Should Fail)" -Url "$SERVICE_URL/sse" -ExpectedStatus 401 Test-Endpoint -Name "Authentication (With Key)" -Url "$SERVICE_URL/sse" -Headers @{"X-API-Key" = $API_KEY} Write-Host "" Write-Host "Phase 4-5: MCP Tools" -ForegroundColor Yellow Write-Host "Testing MCP SSE connection..." -ForegroundColor Gray # Test SSE connection try { $headers = @{"X-API-Key" = $API_KEY} $response = Invoke-WebRequest -Uri "$SERVICE_URL/sse" -Headers $headers -Method Get -UseBasicParsing -TimeoutSec 5 -ErrorAction Stop if ($response.Content -match "event: endpoint") { Write-Host "✓ MCP SSE Connection Established" -ForegroundColor Green $TestResults.Passed++ $TestResults.TotalTests++ # Extract session ID if ($response.Content -match "sessionId=([a-f0-9-]+)") { $sessionId = $Matches[1] Write-Host " Session ID: $sessionId" -ForegroundColor Gray } } else { Write-Host "✗ MCP SSE Connection Failed" -ForegroundColor Red $TestResults.Failed++ $TestResults.TotalTests++ } } catch { Write-Host "✗ MCP SSE Connection Failed: $($_.Exception.Message)" -ForegroundColor Red $TestResults.Failed++ $TestResults.TotalTests++ } Write-Host "" Write-Host "Phase 6: Cloud Run Deployment" -ForegroundColor Yellow Write-Host "Testing Cloud Run service status..." -ForegroundColor Gray # Get service details try { $serviceInfo = gcloud run services describe tableau-mcp-staging --region=australia-southeast1 --format=json 2>$null | ConvertFrom-Json Write-Host "✓ Service Name: $($serviceInfo.metadata.name)" -ForegroundColor Green Write-Host " Region: $($serviceInfo.metadata.labels.cloud_location)" -ForegroundColor Gray Write-Host " Status: $($serviceInfo.status.conditions[0].status)" -ForegroundColor Gray Write-Host " URL: $($serviceInfo.status.url)" -ForegroundColor Gray Write-Host " Latest Revision: $($serviceInfo.status.latestReadyRevisionName)" -ForegroundColor Gray $TestResults.Passed++ $TestResults.TotalTests++ } catch { Write-Host "✗ Failed to retrieve service info" -ForegroundColor Red $TestResults.Failed++ $TestResults.TotalTests++ } Write-Host "" # Summary Write-Host "============================================" -ForegroundColor Blue Write-Host "TEST SUMMARY" -ForegroundColor Blue Write-Host "============================================" -ForegroundColor Blue Write-Host "Total Tests: $($TestResults.TotalTests)" Write-Host "Passed: $($TestResults.Passed)" -ForegroundColor Green Write-Host "Failed: $($TestResults.Failed)" -ForegroundColor $(if ($TestResults.Failed -gt 0) { "Red" } else { "Green" }) Write-Host "" if ($TestResults.Failed -eq 0) { Write-Host "✅ ALL PHASES 1-6 VERIFIED AND WORKING!" -ForegroundColor Green Write-Host "" Write-Host "Service Details:" -ForegroundColor Yellow Write-Host " Service URL: $SERVICE_URL" Write-Host " MCP Endpoint: $SERVICE_URL/sse" Write-Host " API Key: $API_KEY" Write-Host "" Write-Host "Available Tools (9 total):" -ForegroundColor Yellow Write-Host " Core Tools (Phase 4):" -ForegroundColor Gray Write-Host " 1. tableau_list_workbooks" Write-Host " 2. tableau_list_views" Write-Host " 3. tableau_query_view" Write-Host " 4. tableau_refresh_extract" Write-Host " 5. tableau_search_content" Write-Host " 6. tableau_get_metadata" Write-Host " Advanced Tools (Phase 5):" -ForegroundColor Gray Write-Host " 7. tableau_get_dashboard_filters" Write-Host " 8. tableau_export_dashboard_pdf" Write-Host " 9. tableau_export_dashboard_pptx" Write-Host "" Write-Host "✅ READY FOR PHASE 7: Cursor Integration!" -ForegroundColor Green Write-Host "" Write-Host "Next Step:" -ForegroundColor Yellow Write-Host " Create: C:\Users\MomentumMedia\.cursor\agile\shared-tools\mcp\tableau.json" Write-Host " Then restart Cursor to load the MCP server" Write-Host "" exit 0 } else { Write-Host "❌ SOME TESTS FAILED" -ForegroundColor Red Write-Host "" Write-Host "Failed Tests:" -ForegroundColor Yellow foreach ($detail in $TestResults.Details | Where-Object { $_.Status -eq "FAIL" }) { Write-Host " - $($detail.Test) (Expected: $($detail.Expected), Got: $($detail.Actual))" -ForegroundColor Red } Write-Host "" exit 1 }

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/russelenriquez-agile/tableau-mcp-project'

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