|
| 1 | +--- |
| 2 | +name: run-conformance-from-branch |
| 3 | +description: Run MCP conformance tests in the C# SDK against a conformance branch (including forks) instead of the published npm version, then restore pinned dependencies. |
| 4 | +compatibility: Requires npm, node, and dotnet SDK. Uses the csharp-sdk repo package.json/package-lock.json and tests/ModelContextProtocol.AspNetCore.Tests. |
| 5 | +--- |
| 6 | + |
| 7 | +# Run Conformance From Branch |
| 8 | + |
| 9 | +Run C# SDK conformance tests against an unpublished `modelcontextprotocol/conformance` branch (including branches in forks). |
| 10 | + |
| 11 | +## Use Cases |
| 12 | + |
| 13 | +- Validate a conformance PR before it is published to npm |
| 14 | +- Validate C# SDK behavior against a fork with custom scenario changes |
| 15 | +- Reproduce failures caused by conformance changes |
| 16 | + |
| 17 | +## Safety / Repo Hygiene |
| 18 | + |
| 19 | +1. Start from a clean git state. |
| 20 | +2. Commit or stash local changes first. |
| 21 | +3. Restore pinned dependencies when done (`git checkout -- package.json package-lock.json` + `npm ci`). |
| 22 | + |
| 23 | +## Inputs |
| 24 | + |
| 25 | +- **Source type**: `upstream-branch` or `fork-branch` |
| 26 | +- **Source locator**: |
| 27 | + - Upstream branch: `modelcontextprotocol/conformance#<branch>` |
| 28 | + - Fork branch: `<owner>/conformance#<branch>` |
| 29 | +- **Scenario** (optional): e.g. `auth/scope-step-up` |
| 30 | + |
| 31 | +## Workflows |
| 32 | + |
| 33 | +### A) Install directly from GitHub branch (upstream or fork) |
| 34 | + |
| 35 | +From `csharp-sdk` root: |
| 36 | + |
| 37 | +```bash |
| 38 | +npm install --no-save @modelcontextprotocol/conformance@github:<owner>/conformance#<branch> |
| 39 | +``` |
| 40 | + |
| 41 | +Examples: |
| 42 | + |
| 43 | +```bash |
| 44 | +npm install --no-save @modelcontextprotocol/conformance@github:modelcontextprotocol/conformance#main |
| 45 | +npm install --no-save @modelcontextprotocol/conformance@github:myuser/conformance#sep-2350-check |
| 46 | +``` |
| 47 | + |
| 48 | +## Run Tests |
| 49 | + |
| 50 | +### Run client conformance tests with dotnet test filter: |
| 51 | + |
| 52 | +```bash |
| 53 | +dotnet test tests/ModelContextProtocol.AspNetCore.Tests/ModelContextProtocol.AspNetCore.Tests.csproj -f net10.0 --filter "FullyQualifiedName~ClientConformanceTests" |
| 54 | +``` |
| 55 | + |
| 56 | +### Run server conformance tests with dotnet test filter: |
| 57 | + |
| 58 | +```bash |
| 59 | +dotnet test tests/ModelContextProtocol.AspNetCore.Tests/ModelContextProtocol.AspNetCore.Tests.csproj -f net10.0 --filter "FullyQualifiedName~ServerConformanceTests" |
| 60 | +``` |
| 61 | + |
| 62 | +## Reporting |
| 63 | + |
| 64 | +Always report: |
| 65 | + |
| 66 | +1. Installed conformance source (`npm ls @modelcontextprotocol/conformance --depth=0`) |
| 67 | +2. Scenario results (pass/fail/warnings) |
| 68 | +3. Any new check IDs observed (for traceability) |
| 69 | + |
| 70 | +## Cleanup / Restore |
| 71 | + |
| 72 | +Return repo to pinned dependency state: |
| 73 | + |
| 74 | +```bash |
| 75 | +npm ci |
| 76 | +``` |
0 commit comments