* feat: add python-sdk as a built-in SDK runner target Wire modelcontextprotocol/python-sdk into the `conformance sdk` runner alongside typescript-sdk and go-sdk, using the SDK's existing conformance fixtures for both client and server modes. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * feat: target python-sdk v1.x on spec 2025-11-25 Convert the built-in python-sdk entry from v2/main to python-sdk-v1, mirroring typescript-sdk-v1: clone the v1.x branch, default specVersion to 2025-11-25 so draft-only scenarios/checks are excluded, and point at the SDK's own expected-failures baseline. v2/main is mid-refactor and noisy; v1.x is the stable published line. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * feat: default sdk-runner server mode to the `active` suite Server runs previously fell through to the underlying `server` command's default; make it explicit and consistent with tiering, which runs the `active` suite (excludes pending/draft). Avoids surfacing intentionally -deferred `pending` scenarios (e.g. json-schema-2020-12, server-sse -polling) as failures. Runner-wide default for all SDKs; callers can still override with --suite. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
86 lines
3.4 KiB
TypeScript
86 lines
3.4 KiB
TypeScript
import type { SdkConfig } from './config';
|
|
|
|
/**
|
|
* Built-in conformance configs for official SDKs, keyed by repo name.
|
|
*
|
|
* These live here (not in the SDK repos) so adding an SDK to the matrix
|
|
* doesn't require a coordinated cross-repo PR. Any field can be overridden
|
|
* per-invocation via the CLI flags (--build-cmd / --client-cmd / etc.).
|
|
*/
|
|
export const KNOWN_SDKS: Record<string, SdkConfig> = {
|
|
// v2 — the monorepo on `main` (pnpm). Default ref is `main`.
|
|
'typescript-sdk': {
|
|
build: 'pnpm install && pnpm run build:all',
|
|
client: {
|
|
command: 'npx tsx test/conformance/src/everythingClient.ts'
|
|
},
|
|
server: {
|
|
command: 'npx tsx test/conformance/src/everythingServer.ts',
|
|
url: 'http://localhost:3000/mcp'
|
|
},
|
|
expectedFailures: 'test/conformance/expected-failures.yaml'
|
|
},
|
|
// v1.x — the published npm line. Same fixtures as v2; differs only in the
|
|
// build (npm, not pnpm) and the baseline filename. Clones the typescript-sdk
|
|
// repo, defaulting to the `v1.x` branch. Targets the latest dated spec, so
|
|
// draft-only scenarios and checks are excluded by default.
|
|
'typescript-sdk-v1': {
|
|
repo: 'typescript-sdk',
|
|
defaultRef: 'v1.x',
|
|
specVersion: '2025-11-25',
|
|
build: 'npm ci && npm run build',
|
|
client: {
|
|
command: 'npx tsx test/conformance/src/everythingClient.ts'
|
|
},
|
|
server: {
|
|
command: 'npx tsx test/conformance/src/everythingServer.ts',
|
|
url: 'http://localhost:3000/mcp'
|
|
},
|
|
expectedFailures: 'test/conformance/conformance-baseline.yml'
|
|
},
|
|
'go-sdk': {
|
|
build: 'go build -o ./.conformance-server ./examples/server/conformance',
|
|
// Upstream go-sdk has no client conformance fixture yet (see go-sdk#859).
|
|
server: {
|
|
command: './.conformance-server -http=:3000',
|
|
url: 'http://localhost:3000'
|
|
}
|
|
},
|
|
// v1.x — the stable, published line of the python-sdk, analogous to
|
|
// typescript-sdk-v1 (v2/main is mid-refactor and noisy). Clones the
|
|
// python-sdk repo, defaulting to the `v1.x` branch, and targets the latest
|
|
// dated spec so draft-only scenarios/checks are excluded by default. uv
|
|
// workspace: the `mcp` (client) and `mcp-everything-server` (server) packages
|
|
// are both members, so one `uv sync --all-packages` covers both modes.
|
|
// Fixtures live in the python-sdk repo (.github/actions/conformance/ and
|
|
// examples/servers/everything-server). `--port 3000` matches the url and the
|
|
// 3000 convention used above; the server's own default is 3001.
|
|
'python-sdk-v1': {
|
|
repo: 'python-sdk',
|
|
defaultRef: 'v1.x',
|
|
specVersion: '2025-11-25',
|
|
build: 'uv sync --frozen --all-extras --all-packages',
|
|
client: {
|
|
command: 'uv run --frozen python .github/actions/conformance/client.py'
|
|
},
|
|
server: {
|
|
command: 'uv run --frozen mcp-everything-server --port 3000',
|
|
url: 'http://localhost:3000/mcp'
|
|
},
|
|
expectedFailures: '.github/actions/conformance/expected-failures.yml'
|
|
}
|
|
};
|
|
|
|
/**
|
|
* Look up a built-in config by SDK name. Accepts bare names (typescript-sdk),
|
|
* owner/repo (modelcontextprotocol/typescript-sdk), or a checkout path
|
|
* basename — only the final path segment is used as the key.
|
|
*/
|
|
export function lookupBuiltinConfig(name: string): SdkConfig | null {
|
|
const key = name.split('/').pop() ?? name;
|
|
return KNOWN_SDKS[key] ?? null;
|
|
}
|
|
|
|
export function knownSdkNames(): string[] {
|
|
return Object.keys(KNOWN_SDKS);
|
|
}
|