Skip to content

Interoperability

Christian Presley edited this page Oct 1, 2026 · 11 revisions

Interoperability

This page lists the foreign programs that the tests of the SDK use as peers, and where each test runs. Every foreign program is either the official conformance suite or a tool that the GitHub runners already have. The repository has no third-party code.

Applies to: zig-sdk 0.1.0. The RSA and X25519MLKEM768 tests and the results of the authorization extensions apply to the zig-sdk release after 0.1.0.

Protocol

Peer What is checked Where
@modelcontextprotocol/conformance 0.2.0-alpha.11 37 scored server scenarios and 32 scored client scenarios. The 20 unscored scenarios run one at a time: the Tasks extension, the pending server scenarios, the authorization extensions and the JSON Schema preservation scenario. CI job conformance, see Conformance

TLS

Peer What is checked Where
Zig standard library TLS client Handshake and echo with each key type except Ed25519, RSA 2048 and RSA 3072 included, and each cipher suite. X25519MLKEM768 negotiates. zig build test
openssl s_client Chain verification, ALPN, a HelloRetryRequest with X448:P-384, TLS 1.2 refusal. An RSA 2048 server with each RSA-PSS hash, and the refusal of an offer with only PKCS#1 v1.5 schemes. zig build test when OpenSSL is installed, not LibreSSL
openssl s_client 3.5 or later X25519MLKEM768 with an RSA 3072 server, in the first flight and after a HelloRetryRequest zig build test when OpenSSL 3.5 or later is installed
openssl s_server The SDK client verifies the chain and negotiates ALPN zig build test when OpenSSL is installed
openssl s_server 3.5 or later The SDK client with an RSA 3072 server: RSA-PSS with SHA-384 and SHA-512, and X25519MLKEM768 in the first flight and after a HelloRetryRequest zig build test when OpenSSL 3.5 or later is installed
curl A JSON and an SSE request over HTTPS zig build test when a curl with TLS 1.3 is installed

gRPC

Peer What is checked Where
Node http2 module (.github/interop/h2_peer.mjs) Discovery, tools/list, the error trailers and a listen stream with gRPC framing CI job grpc-interop
curl --http2-prior-knowledge One raw call to server/discover CI job grpc-interop

WebSocket

Peer What is checked Where
The global WebSocket client of Node 22 (.github/interop/ws_peer.mjs) The subprotocol mcp, discovery, tools/list, a tool call with progress, an error and the close handshake against the everything server with --ws-port CI job websocket-interop
curl The server refuses an upgrade without the subprotocol mcp with status 400 CI job websocket-interop

Known gaps

  • No test against a gRPC implementation with a dynamic HPACK table on the peer side. The SDK decoder supports it. The encoder never uses it.
  • The hybrid key exchange has interop tests only with OpenSSL 3.5 or later. Older runners skip them.
  • The official suite has no scenarios for the Skills and Apps extensions. The unit tests use the examples of the specifications.
  • The Unix socket transport has no foreign peer in the tests. The tests use the SDK client and the SDK server.
  • The curl on macOS runners has no TLS 1.3, so the HTTPS test with curl does not run there.
  • The official conformance suite has no stdio server mode. The stdio tests of the SDK start the stdio_server example as a child process and use the SDK client.

Clone this wiki locally