Skip to content

feat: add swift-sdk to the built-in SDK matrix - #432

Open
shoemoney wants to merge 1 commit into
modelcontextprotocol:mainfrom
shoemoney:feat/swift-sdk-conformance
Open

feat: add swift-sdk to the built-in SDK matrix#432
shoemoney wants to merge 1 commit into
modelcontextprotocol:mainfrom
shoemoney:feat/swift-sdk-conformance

Conversation

@shoemoney

@shoemoney shoemoney commented Aug 1, 2026

Copy link
Copy Markdown

KNOWN_SDKS covers seven SDKs but not swift-sdk, even though its conformance fixtures already exist upstream — Sources/MCPConformance/{Client,Server}, exposed as the mcp-everything-client and mcp-everything-server products and driven by scripts/run-conformance.sh. This registers it.

Two details worth calling out:

  • SwiftPM writes binaries to a per-triple directory (.build/arm64-apple-macosx/debug) but also maintains a .build/debug symlink to it, so ./.build/debug/mcp-everything-client stays portable across host architectures.
  • The server defaults to port 3001; --port 3000 pins it to the convention the other entries use.

I also swapped the "unknown SDK" fixture in the tests from swift-sdk to kotlin-sdk, since swift-sdk is no longer unknown.

Verified locally on macOS 26 / arm64, Swift 6.2.4, using the config's own build command (no --skip-build):

client --suite core   216 passed,  0 failed   baseline check passed
server                 67 passed,  2 failed
repo test suite        29 passed,  0 failed   tsc --noEmit clean

One thing I want to flag rather than paper over. swift-sdk's checked-in conformance-baseline.yml is currently just client: [], and its own script runs the client with --suite core. Against the wider default suite the client surfaces 22 failures that aren't in that baseline — auth (DPoP, WIF, iss handling, offline-access), HTTP header scenarios, and two JSON-Schema scenarios. Those look like genuinely unimplemented features rather than harness problems, so I did not try to hide them behind a broadened baseline. Happy to either land this as-is and let the matrix show the real state, or hold it until a baseline update lands upstream — your call on which you prefer.

Of the two server failures, resources-list is a real spec bug in the fixture rather than a harness issue: the everything-server returns the resource template test://template/{id} from resources/list, where templates belong in resources/templates/list, and {id} fails the spec's format: "uri" check. I've opened a separate PR against swift-sdk for it: modelcontextprotocol/swift-sdk#269. The remaining failure is elicitation-sep1330-enums.

Registers modelcontextprotocol/swift-sdk, whose conformance fixtures already
exist upstream (Sources/MCPConformance/{Client,Server}, exposed as the
mcp-everything-client and mcp-everything-server products) but had no entry here.

SwiftPM writes binaries to a per-triple directory and maintains a .build/debug
symlink to it, so the fixture paths stay portable across host architectures.
The server defaults to port 3001; --port pins it to the 3000 convention the
other entries use.

Verified locally on macOS 26 / arm64 with Swift 6.2.4:

  client --suite core   216 passed, 0 failed  (baseline check passed)
  server                 67 passed, 2 failed

Also swaps the 'unknown SDK' fixture in the tests from swift-sdk to kotlin-sdk,
since swift-sdk is no longer unknown.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant