Skip to content

Commit 3889838

Browse files
committed
ci: run server conformance suite on PRs
1 parent 03ec8b5 commit 3889838

1 file changed

Lines changed: 63 additions & 0 deletions

File tree

.github/workflows/conformance.yml

Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
name: Conformance
2+
3+
on:
4+
push:
5+
branches: [main]
6+
pull_request:
7+
branches: [main]
8+
workflow_dispatch:
9+
10+
concurrency:
11+
group: conformance-${{ github.ref }}
12+
cancel-in-progress: true
13+
14+
env:
15+
# Pinned for reproducible runs; bump deliberately when the suite updates.
16+
CONFORMANCE_VERSION: "0.1.16"
17+
18+
jobs:
19+
server:
20+
runs-on: ubuntu-latest
21+
permissions:
22+
contents: read
23+
steps:
24+
- uses: actions/checkout@v7
25+
26+
- name: Install Rust toolchain
27+
uses: dtolnay/rust-toolchain@stable
28+
29+
- uses: Swatinem/rust-cache@v2
30+
31+
- name: Build conformance server
32+
run: cargo build -p mcp-conformance --bin conformance-server
33+
34+
- name: Start conformance server
35+
run: |
36+
PORT=8001 ./target/debug/conformance-server &
37+
echo $! > server.pid
38+
for _ in $(seq 1 30); do
39+
if curl -s -o /dev/null http://127.0.0.1:8001/mcp; then
40+
exit 0
41+
fi
42+
sleep 1
43+
done
44+
echo "conformance server did not become ready" >&2
45+
exit 1
46+
47+
- name: Run server conformance suite
48+
run: |
49+
npx -y "@modelcontextprotocol/conformance@${CONFORMANCE_VERSION}" server \
50+
--url http://127.0.0.1:8001/mcp \
51+
--spec-version 2025-11-25 \
52+
-o conformance-results
53+
54+
- name: Stop conformance server
55+
if: always()
56+
run: kill "$(cat server.pid)" 2>/dev/null || true
57+
58+
- name: Upload results
59+
if: always()
60+
uses: actions/upload-artifact@v7
61+
with:
62+
name: conformance-server-results
63+
path: conformance-results

0 commit comments

Comments
 (0)