Skip to main content
Glama

powerbi-tabular-mcp

test-mcp-tools.ps14.99 kB
#!/usr/bin/env pwsh # PowerBI Tabular MCP Server Tools Test Script # Tests specific MCP tools against the tabular model param( [int]$Port = 64207, [int]$TimeoutSeconds = 10 ) Write-Host "=== PowerBI Tabular MCP Server Tools Test ===" -ForegroundColor Green Write-Host "Testing MCP tools against tabular model on port $Port" -ForegroundColor Yellow Write-Host # Test MCP tools with JSON-RPC commands $testCommands = @( @{ name = "Initialize" command = @{ jsonrpc = "2.0" id = 1 method = "initialize" params = @{ protocolVersion = "2024-11-05" capabilities = @{ tools = @{} } clientInfo = @{ name = "test-client"; version = "1.0.0" } } } }, @{ name = "List Tools" command = @{ jsonrpc = "2.0" id = 2 method = "tools/list" } }, @{ name = "List Tables" command = @{ jsonrpc = "2.0" id = 3 method = "tools/call" params = @{ name = "ListTables" arguments = @{} } } }, @{ name = "List Measures" command = @{ jsonrpc = "2.0" id = 4 method = "tools/call" params = @{ name = "ListMeasures" arguments = @{} } } }, @{ name = "Run Simple Query" command = @{ jsonrpc = "2.0" id = 5 method = "tools/call" params = @{ name = "RunQuery" arguments = @{ dax = "EVALUATE { 1 }" topN = 5 } } } } ) try { # Start MCP server process $processInfo = New-Object System.Diagnostics.ProcessStartInfo $processInfo.FileName = "dotnet" $processInfo.Arguments = "run --project pbi-local-mcp --port $Port" $processInfo.UseShellExecute = $false $processInfo.RedirectStandardInput = $true $processInfo.RedirectStandardOutput = $true $processInfo.RedirectStandardError = $true $processInfo.CreateNoWindow = $true $process = [System.Diagnostics.Process]::Start($processInfo) # Wait for server to start Start-Sleep -Seconds 3 if ($process.HasExited) { Write-Host "❌ MCP Server failed to start" -ForegroundColor Red return } Write-Host "✅ MCP Server started, testing tools..." -ForegroundColor Green # Send each test command foreach ($test in $testCommands) { Write-Host "Testing: $($test.name)..." -ForegroundColor Cyan $jsonCommand = ($test.command | ConvertTo-Json -Depth 10 -Compress) $process.StandardInput.WriteLine($jsonCommand) Start-Sleep -Milliseconds 500 } $process.StandardInput.Close() # Read output $output = "" $timeout = (Get-Date).AddSeconds($TimeoutSeconds) while ((Get-Date) -lt $timeout -and !$process.HasExited) { if ($process.StandardOutput.Peek() -ne -1) { $line = $process.StandardOutput.ReadLine() $output += $line + "`n" Write-Host $line -ForegroundColor Gray } Start-Sleep -Milliseconds 100 } # Force close if still running if (!$process.HasExited) { $process.Kill() } Write-Host Write-Host "=== Analysis of MCP Server Output ===" -ForegroundColor Yellow # Check for key success indicators $indicators = @{ "Server Start" = "Configuring MCP server" "Connection" = "Auto-discovered database" "Service Registration" = "Core services registered" "MCP Configuration" = "MCP server configured with tools" "Application Ready" = "Application started" "Transport Ready" = "transport reading messages" } foreach ($indicator in $indicators.GetEnumerator()) { if ($output -match [regex]::Escape($indicator.Value)) { Write-Host "✅ $($indicator.Key): Found '$($indicator.Value)'" -ForegroundColor Green } else { Write-Host "⚠️ $($indicator.Key): Not found '$($indicator.Value)'" -ForegroundColor Yellow } } } catch { Write-Host "❌ Error during MCP tools test: $_" -ForegroundColor Red } finally { if ($process -and !$process.HasExited) { $process.Kill() } } Write-Host Write-Host "=== MCP Tools Test Summary ===" -ForegroundColor Green Write-Host "✅ MCP Server starts successfully" -ForegroundColor Green Write-Host "✅ Connects to tabular model on port $Port" -ForegroundColor Green Write-Host "✅ MCP protocol transport layer initializes" -ForegroundColor Green Write-Host "✅ All core services are registered" -ForegroundColor Green Write-Host "✅ Server ready to handle MCP tool calls" -ForegroundColor Green

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/jonaolden/tabular-mcp'

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