Context
DX-expert pre-merge review of #275 flagged a parity gap with the JS SDK:
@adcp/client/scripts/sync-schemas.ts reads ADCP_BASE_URL from env (defaults to https://adcontextprotocol.org), so CI / local dev can point sync at a fake CDN serving a fixture tarball.
adcp-client-python/scripts/sync_schemas.py hardcodes BUNDLE_BASE_URL = "https://adcontextprotocol.org/protocol" as a module constant. No way to redirect without editing source.
This bites whenever someone wants to:
- Run cross-SDK CI against a fixture server (e.g. validate that JS + Python sync produce equivalent local trees from the same tarball).
- Test
sync_schemas.py locally against a release tarball that hasn't deployed to production yet.
- Stand up an integration test that exercises the full sync pipeline without depending on the live CDN.
Proposal
Match the JS pattern: BUNDLE_BASE_URL = os.environ.get("ADCP_BASE_URL", "https://adcontextprotocol.org") + "/protocol".
Same env var name (ADCP_BASE_URL) so cross-SDK CI scripts can set it once.
Out of scope
- Other configuration drift between the two SDKs (separate triage)
- Adding integration tests that exercise the env override (would be nice, not required)
References
Context
DX-expert pre-merge review of #275 flagged a parity gap with the JS SDK:
@adcp/client/scripts/sync-schemas.tsreadsADCP_BASE_URLfrom env (defaults tohttps://adcontextprotocol.org), so CI / local dev can point sync at a fake CDN serving a fixture tarball.adcp-client-python/scripts/sync_schemas.pyhardcodesBUNDLE_BASE_URL = "https://adcontextprotocol.org/protocol"as a module constant. No way to redirect without editing source.This bites whenever someone wants to:
sync_schemas.pylocally against a release tarball that hasn't deployed to production yet.Proposal
Match the JS pattern:
BUNDLE_BASE_URL = os.environ.get("ADCP_BASE_URL", "https://adcontextprotocol.org") + "/protocol".Same env var name (
ADCP_BASE_URL) so cross-SDK CI scripts can set it once.Out of scope
References
ADCP_BASE_URL)scripts/sync_schemas.pyBUNDLE_BASE_URLconstant