Repository navigation
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 the official conformance suite, a tool that the GitHub runners already have, or @grpc/grpc-js with @grpc/proto-loader. The CI job installs these two packages from npm at pinned versions. The repository has no third-party code, except the licensed test fixtures in test/fixtures/.
Applies to: zig-sdk 0.1.0. The RSA and X25519MLKEM768 tests and the results of the authorization extensions apply to zig-sdk 0.2.0. The tests of AEGIS, record padding, the CA names, RSA-PSS keys, OCSP staples and the HelloRetryRequest cookie apply to the same release. The unscored scenarios in CI, the authorization server scenarios, the typed gRPC binding and WebSocket apply to the same release. The scripted HTTP/2 peer with a dynamic HPACK table applies to zig-sdk 0.4.0.
| 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
|
@modelcontextprotocol/conformance 0.2.0-alpha.11, the authorization command |
The 2 authorization server scenarios against the authorization server of the SDK | CI job conformance, see Conformance
|
| 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, the AEGIS suites included. X25519MLKEM768 negotiates. The client removes the record padding of the SDK server. | zig build test |
openssl s_client |
Chain verification, ALPN, a HelloRetryRequest with X448:P-384. An RSA 2048 server with each RSA-PSS hash, and the refusal of an offer with only PKCS#1 v1.5 schemes. An id-RSASSA-PSS server key with each rsa_pss_pss hash. The cookie of a HelloRetryRequest and record padding. The CA names in both directions, and a stapled OCSP response. |
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. Record padding and the chain for the CA names of the server. id-RSASSA-PSS keys on both sides, and a stapled OCSP response. |
zig build test when OpenSSL is installed, not LibreSSL |
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 |
| 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
|
@grpc/grpc-js 1.14.5 with @grpc/proto-loader 0.8.1 (.github/interop/grpc_typed_peer.mjs) |
All eight RPCs of the typed service with the vendored proto files, the error trailers, and elicitation, sampling and roots in multi round-trip calls | CI job grpc-interop
|
| 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
|
- 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 HTTP/2 tests of the SDK use a scripted peer that adds entries to its table, also after a size error of the decoder.
- The hybrid key exchange has interop tests with OpenSSL only when OpenSSL 3.5 or later is installed. Older runners skip them. The test with the Zig standard library client always runs.
- 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
curlon macOS runners has no TLS 1.3, so the HTTPS test withcurldoes not run there. - The official conformance suite has no stdio server mode. The stdio tests of the SDK start the
stdio_serverexample as a child process and use the SDK client. - VS Code and other hosts of revision 2025-11-25 cannot use a zig-sdk server directly. They start with
initialize, and the server answers with-32601. The bridge of zig-bridge-sdk serves these hosts. See VS Code on its wiki.
zig-sdk uses the Apache License 2.0. The wiki uses the project profile of ASD-STE100 Simplified Technical English. The Bibliography lists the sources.
zig-sdk
- Home
- Getting Started
- Concepts
- Server Guide
- Client Guide
- Transports
- Transport stdio
- Transport Streamable HTTP
- Transport gRPC
- Transport Unix Socket
- Transport WebSocket
- TLS and Certificates
- Deploy Reverse Proxy
- Authorization
- Authorization Server
- JSON Schema Support
- Resource Templates
- Tasks Extension
- Skills Extension
- Apps Extension
- Conformance
- Examples
- API Reference
- Interoperability
- Threat Model
- Limits and Security
- Deprecated Features
- Roadmap
- Release Notes
- Versioning
- Contributing
- FAQ
Style and words