blob: d43095cd28e9dc68ad4e77cf9a5abc7f1aecad5b (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
[CmdletBinding()]
param(
[Parameter(Mandatory)] [uri]$Url,
[string[]]$Scenario = @("server-stateless", "tools-list", "json-schema-2020-12", "server-sse-multiple-streams", "dns-rebinding-protection", "caching", "http-header-validation"),
[string]$EvidenceDirectory = "artifacts/evidence/mcp-2026-07-28/conformance-production"
)
$ErrorActionPreference = "Stop"
if (-not $Url.IsLoopback) { throw "Conformance target must be loopback." }
$repository = (Resolve-Path (Join-Path $PSScriptRoot "..")).Path
$runnerDirectory = Join-Path $repository "build/conformance-runner"
$packageJson = Join-Path $runnerDirectory "node_modules/@modelcontextprotocol/conformance/package.json"
if (-not (Test-Path -LiteralPath $packageJson)) { throw "Offline runner is absent. Run scripts/Acquire-McpConformance.ps1 first." }
$metadata = Get-Content -Raw -LiteralPath $packageJson | ConvertFrom-Json
if ($metadata.version -ne "0.2.0-alpha.11") { throw "Unexpected conformance version: $($metadata.version)" }
$cli = Join-Path (Split-Path $packageJson) $metadata.bin.conformance
$evidence = [IO.Path]::GetFullPath($EvidenceDirectory, $repository)
New-Item -ItemType Directory -Force -Path $evidence | Out-Null
$failures = 0
foreach ($name in $Scenario) {
$output = Join-Path $evidence $name
& node $cli server --url $Url.AbsoluteUri --scenario $name --spec-version 2026-07-28 --output-dir $output --verbose 2>&1 |
Tee-Object -FilePath (Join-Path $evidence "$name.txt")
if ($LASTEXITCODE -ne 0) { $failures++ }
}
if ($failures -ne 0) { throw "$failures conformance scenario(s) failed; no expected-failure baseline is permitted." }
|