Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 11 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,17 @@ and this project uses [Semantic Versioning](https://semver.org/spec/v2.0.0.html)

## [Unreleased]

## [0.6.0] - 2026-10-14

### Changed

- Upgrade the official MCP conformance runner to `0.2.0-alpha.12` and pin
the matching TypeScript fixture revision. Refresh packaged baselines from
verified runs against the updated runner and fixture.
- Apply the upstream runner's 30-second server-scenario deadline. Stalled
scenarios now report `scenario-timeout` findings. Regenerate caller-owned
baselines when adopting the upgraded runner.

## [0.5.1] - 2026-09-21

### Fixed
Expand Down
2 changes: 1 addition & 1 deletion Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[package]
name = "cf-integration"
version = "0.5.1"
version = "0.6.0"
edition = "2024"
rust-version = "1.97"
license = "Apache-2.0"
Expand Down
2 changes: 1 addition & 1 deletion docker/helpers.Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ RUN apt-get update \
&& apt-get install --yes --no-install-recommends ca-certificates \
&& rm -rf /var/lib/apt/lists/*
RUN npm install --global --ignore-scripts \
@modelcontextprotocol/conformance@0.2.0-alpha.11 \
@modelcontextprotocol/conformance@0.2.0-alpha.12 \
@modelcontextprotocol/inspector@2.2.0 \
&& npm cache clean --force
COPY --from=build /usr/local/bin/cf-integration /usr/local/bin/cf-integration
Expand Down
3 changes: 2 additions & 1 deletion docker/mcp-conformance-server.Dockerfile
Original file line number Diff line number Diff line change
@@ -1,13 +1,14 @@
FROM node:22-bookworm-slim

ARG MCP_CONFORMANCE_REVISION=c321dd32035556e6769d3724a8ee97d87c3faaac
ARG MCP_CONFORMANCE_REVISION=f44482ba17df816d3176962a11cdf36aec9bda00

RUN apt-get update \
&& apt-get install --yes --no-install-recommends ca-certificates curl git \
&& rm -rf /var/lib/apt/lists/*

WORKDIR /opt
RUN git clone https://github.com/modelcontextprotocol/conformance.git mcp-conformance \
&& git -C mcp-conformance fetch origin "${MCP_CONFORMANCE_REVISION}" \
&& git -C mcp-conformance checkout --detach "${MCP_CONFORMANCE_REVISION}"

WORKDIR /opt/mcp-conformance/examples/servers/typescript
Expand Down
4 changes: 2 additions & 2 deletions src/conformance/profile.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,12 @@

/// Published official CLI package used as the conformance client.
pub(crate) const OFFICIAL_CONFORMANCE_PACKAGE: &str =
"@modelcontextprotocol/conformance@0.2.0-alpha.11";
"@modelcontextprotocol/conformance@0.2.0-alpha.12";
/// Official repository containing the matching TypeScript fixture server.
pub(crate) const OFFICIAL_CONFORMANCE_REPOSITORY: &str =
"https://github.com/modelcontextprotocol/conformance";
/// Exact source revision behind the published CLI and TypeScript fixture.
pub(crate) const OFFICIAL_CONFORMANCE_REVISION: &str = "c321dd32035556e6769d3724a8ee97d87c3faaac";
pub(crate) const OFFICIAL_CONFORMANCE_REVISION: &str = "f44482ba17df816d3176962a11cdf36aec9bda00";
/// Default draft protocol revision exercised by official conformance commands.
pub(crate) const DEFAULT_MCP_SPEC_VERSION: &str = "2026-07-28";
/// Previous stable revision supported by the pinned official conformance package.
Expand Down
6 changes: 3 additions & 3 deletions src/conformance/results.rs
Original file line number Diff line number Diff line change
Expand Up @@ -195,9 +195,9 @@ pub(crate) fn is_trusted_official_fixture(fixture: &ConformanceFixtureMetadata)
&& fixture.server_id == OFFICIAL_CONFORMANCE_SERVER_ID
}

// Exact server catalogs emitted by @modelcontextprotocol/conformance@0.2.0-alpha.11.
// Keep these coupled to OFFICIAL_CONFORMANCE_PACKAGE and verify the pin with
// the ignored package-backed test before updating either.
// Exact server catalogs emitted by @modelcontextprotocol/conformance@0.2.0-alpha.12.
// Keep these coupled to OFFICIAL_CONFORMANCE_PACKAGE and verify each catalog
// against the published CLI before updating either.
const SERVER_SCENARIOS_2025_06_18: [&str; 27] = [
"server-initialize",
"server-session-lifecycle",
Expand Down
2 changes: 1 addition & 1 deletion src/conformance/results_tests.rs
Original file line number Diff line number Diff line change
Expand Up @@ -246,7 +246,7 @@ fn official_command_is_pinned_complete_and_ordered() {

assert_eq!(
OFFICIAL_CONFORMANCE_PACKAGE,
"@modelcontextprotocol/conformance@0.2.0-alpha.11"
"@modelcontextprotocol/conformance@0.2.0-alpha.12"
);
assert_eq!(DEFAULT_MCP_SPEC_VERSION, "2026-07-28");
assert_eq!(spec.program(), "conformance");
Expand Down
5 changes: 4 additions & 1 deletion src/infrastructure/compose_integration_tests.rs
Original file line number Diff line number Diff line change
Expand Up @@ -862,7 +862,7 @@ fn conformance_container_inputs_pin_the_runner_revision_and_protocol_fixture() {
assert!(dockerfile.contains("FROM node:22-bookworm-slim"));
assert!(
dockerfile
.contains("ARG MCP_CONFORMANCE_REVISION=c321dd32035556e6769d3724a8ee97d87c3faaac")
.contains("ARG MCP_CONFORMANCE_REVISION=f44482ba17df816d3176962a11cdf36aec9bda00")
);
assert!(dockerfile.contains(
"git clone https://github.com/modelcontextprotocol/conformance.git mcp-conformance"
Expand All @@ -871,6 +871,9 @@ fn conformance_container_inputs_pin_the_runner_revision_and_protocol_fixture() {
dockerfile
.contains("git -C mcp-conformance checkout --detach \"${MCP_CONFORMANCE_REVISION}\"")
);
assert!(
dockerfile.contains("git -C mcp-conformance fetch origin \"${MCP_CONFORMANCE_REVISION}\"")
);
assert!(dockerfile.contains("WORKDIR /opt/mcp-conformance/examples/servers/typescript"));
assert!(dockerfile.contains("npm ci"));
assert!(dockerfile.contains(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -67,10 +67,6 @@ findings:
check: wire-schema-valid
name: WireSchemaValid
status: FAILURE
- scenario: input-required-result-validate-input
check: wire-schema-valid
name: WireSchemaValid
status: FAILURE
- scenario: json-schema-2020-12
check: wire-schema-valid
name: WireSchemaValid
Expand Down Expand Up @@ -111,10 +107,6 @@ findings:
check: wire-schema-valid
name: WireSchemaValid
status: FAILURE
- scenario: sep-2164-resource-not-found
check: sep-2164-data-uri
name: ResourcesNotFoundDataUri
status: FAILURE
- scenario: sep-2164-resource-not-found
check: wire-schema-valid
name: WireSchemaValid
Expand Down
Original file line number Diff line number Diff line change
@@ -1,33 +1,65 @@
findings:
- scenario: input-required-result-unsupported-methods
check: sep-2322-not-on-unsupported-requests
name: NotOnUnsupportedRequests
status: FAILURE
- scenario: input-required-result-validate-input
check: sep-2322-validate-input-responses
name: ValidateInputResponses
status: WARNING
- scenario: sep-2164-resource-not-found
check: sep-2164-data-uri
name: ResourcesNotFoundDataUri
- scenario: completion-complete
check: wire-schema-valid
name: WireSchemaValid
status: FAILURE
- scenario: server-stateless
check: sep-2575-discover-capabilities-match-handlers
name: DiscoverCapabilitiesMatchHandlers
- scenario: prompts-get-embedded-resource
check: wire-schema-valid
name: WireSchemaValid
status: FAILURE
- scenario: server-stateless
check: sep-2575-http-server-error-jsonrpc-id
name: HttpServerErrorJsonrpcId
- scenario: prompts-get-simple
check: wire-schema-valid
name: WireSchemaValid
status: FAILURE
- scenario: server-stateless
check: sep-2575-http-server-meta-invalid-400
name: HttpServerMetaInvalid400
- scenario: prompts-get-with-args
check: wire-schema-valid
name: WireSchemaValid
status: FAILURE
- scenario: prompts-get-with-image
check: wire-schema-valid
name: WireSchemaValid
status: FAILURE
- scenario: resources-read-binary
check: wire-schema-valid
name: WireSchemaValid
status: FAILURE
- scenario: resources-read-text
check: wire-schema-valid
name: WireSchemaValid
status: FAILURE
- scenario: server-stateless
check: sep-2575-http-server-unsupported-version-400
name: HttpServerUnsupportedVersion400
check: sep-2575-discover-capabilities-match-handlers
name: DiscoverCapabilitiesMatchHandlers
status: FAILURE
- scenario: server-stateless
check: sep-2575-server-declares-prompts-in-discover
name: ServerDeclaresPromptsInDiscover
status: FAILURE
- scenario: tools-call-audio
check: wire-schema-valid
name: WireSchemaValid
status: FAILURE
- scenario: tools-call-embedded-resource
check: wire-schema-valid
name: WireSchemaValid
status: FAILURE
- scenario: tools-call-error
check: wire-schema-valid
name: WireSchemaValid
status: FAILURE
- scenario: tools-call-image
check: wire-schema-valid
name: WireSchemaValid
status: FAILURE
- scenario: tools-call-mixed-content
check: wire-schema-valid
name: WireSchemaValid
status: FAILURE
- scenario: tools-call-simple-text
check: wire-schema-valid
name: WireSchemaValid
status: FAILURE
- scenario: tools-call-with-progress
check: wire-schema-valid
name: WireSchemaValid
status: FAILURE
Loading
Loading