Skip to content

Commit 8eb8d70

Browse files
committed
Bump conformance referee to da56f663 and reconcile baselines
The last published referee (0.2.0-alpha.9) still enforces the pre-#3002 shape, so implementing the reshape at the old pin fails three checks. Conformance main@da56f663 includes #403 (checks flipped to the final revision) and #406 (per-check expected-failures granularity); the sha256- verified tarball pin mechanism is unchanged. All server scenarios pass with zero baseline entries. The bump window adds client auth scenarios for features the OAuth client does not implement (DPoP per SEP-1932, and the jwt-bearer grant); those are baselined per-check so their passing checks stay live. Riding the same window: requiredCapabilities error data moves from the old array shape to the schema's object shape (referee #376), and the everything-server capability gate reads client_capabilities so it works for clients that omit the now-optional clientInfo.
1 parent f18da95 commit 8eb8d70

3 files changed

Lines changed: 30 additions & 11 deletions

File tree

.github/actions/conformance/expected-failures.yml

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,24 @@
1010
# scenarios start passing and MUST be removed from this list (the runner fails
1111
# on stale entries), so the baseline burns down per milestone.
1212

13-
client: []
13+
client:
14+
# SEP-1932 (DPoP): the SDK's OAuth client does not implement DPoP proofs.
15+
# These scenarios are new in the da56f663 referee pin. The entries are
16+
# per-check (conformance #406) because both scenarios pass their
17+
# non-DPoP checks (discovery, token acquisition, request flow) live.
18+
- auth/dpop:sep-1932-client-token-request-proof
19+
- auth/dpop:sep-1932-client-dpop-auth-scheme
20+
- auth/dpop:sep-1932-client-fresh-proof
21+
- auth/dpop-nonce:sep-1932-client-token-request-proof
22+
- auth/dpop-nonce:sep-1932-client-dpop-auth-scheme
23+
- auth/dpop-nonce:sep-1932-client-fresh-proof
24+
- auth/dpop-nonce:sep-1932-client-as-nonce
25+
- auth/dpop-nonce:sep-1932-client-rs-nonce
26+
# Workload identity federation: the OAuth client does not implement the
27+
# urn:ietf:params:oauth:grant-type:jwt-bearer grant (it answers with
28+
# authorization_code). Also new in the da56f663 referee pin; per-check for
29+
# the same reason.
30+
- auth/wif-jwt-bearer:wif-grant-type
1431

1532
server:
1633
# SEP-2663 (io.modelcontextprotocol/tasks): the SDK does not implement the

.github/workflows/conformance.yml

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -19,17 +19,19 @@ env:
1919
# Bump deliberately and reconcile both
2020
# .github/actions/conformance/expected-failures*.yml files in the same change.
2121
#
22-
# Temporarily pinned to the pkg.pr.new build of conformance main@4944b268
23-
# (0.2.0-alpha.8, which includes #372: fail checks whose prerequisite is
24-
# missing instead of skipping them) — alpha.8 is not published to npm yet.
25-
# Pinned by commit SHA so the tarball cannot move under us;
22+
# Temporarily pinned to the pkg.pr.new build of conformance main@da56f663,
23+
# which includes #403 (sep-2575 checks flipped to the post-spec-#3002 shape:
24+
# clientInfo optional on requests, serverInfo in result _meta instead of the
25+
# discover body) and #406 (per-check expected-failures granularity) — the
26+
# last published npm release (0.2.0-alpha.9) still enforces the pre-#3002
27+
# shape. Pinned by commit SHA so the tarball cannot move under us;
2628
# CONFORMANCE_PKG_SHA256 pins the bytes and the fetch-and-verify step below
2729
# downloads, checks the digest, and repoints CONFORMANCE_PKG at the
2830
# verified local copy. Repin to the next published @modelcontextprotocol/
29-
# conformance release (>=0.2.0-alpha.8) once it ships, then drop
31+
# conformance release (>=0.2.0-alpha.10) once it ships, then drop
3032
# CONFORMANCE_PKG_SHA256 and the fetch-and-verify steps.
31-
CONFORMANCE_PKG: "https://pkg.pr.new/@modelcontextprotocol/conformance@4944b268"
32-
CONFORMANCE_PKG_SHA256: "0f70c035782d319d72ab427653c5275db5c50429d59fae0241a645b33aeda1a7"
33+
CONFORMANCE_PKG: "https://pkg.pr.new/@modelcontextprotocol/conformance@da56f663"
34+
CONFORMANCE_PKG_SHA256: "bbc94678033071df4bc9851ce2054f9dff918f4501661d1d60e2d09d8c515e6d"
3335

3436
jobs:
3537
server-conformance:

examples/servers/everything-server/mcp_everything_server/server.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -357,13 +357,13 @@ async def test_missing_capability(ctx: Context) -> str:
357357
``CallToolResult.isError``) so the conformance harness observes a protocol-level
358358
error response with ``data.requiredCapabilities``.
359359
"""
360-
client_params = ctx.session.client_params
361-
sampling_declared = client_params is not None and client_params.capabilities.sampling is not None
360+
capabilities = ctx.session.client_capabilities
361+
sampling_declared = capabilities is not None and capabilities.sampling is not None
362362
if not sampling_declared:
363363
raise MCPError(
364364
code=MISSING_REQUIRED_CLIENT_CAPABILITY,
365365
message="This tool requires the client 'sampling' capability",
366-
data={"requiredCapabilities": ["sampling"]},
366+
data={"requiredCapabilities": {"sampling": {}}},
367367
)
368368
return "Client declared sampling capability; proceeding."
369369

0 commit comments

Comments
 (0)