Repository navigation
What's changed
Version 0.4.0 updates mcp-openapi-proxy to the MCP Python SDK 2.x and the 2026-07-28 protocol while preserving compatibility with legacy stdio clients that use initialize.
- Native stateless Streamable HTTP (MCP_TRANSPORT=streamable-http): self-contained requests at /mcp, without Mcp-Session-Id or sticky sessions.
- Protocol discovery and caching: server/discover support, plus ttlMs and cacheScope on list/read results.
- Cross-instance operation handles: simple-mode list_functions exposes handles that call_function can use without sharing process-local state.
- Operational improvements: /healthz for native HTTP, request-method logging without argument bodies or tokens, configurable server identity and optional shared request-state signing.
- Tool annotations: read-only, idempotence and destructive-operation hints derived from OpenAPI operations.
Breaking changes and migration
MCP SDK 2.x is required (mcp[cli]>=2.0.0,<3). Projects that must remain on the 1.x SDK should stay on the documented 0.3.4 compatibility line (mcp-openapi-proxy~=0.3.4 with mcp>=1.2.0,<2).
SDK integrations and wrappers may need changes: FastMCP's internal import path changed; resource URIs are strings; Python model attributes use snake_case; and low-level handlers use constructor on_* registration instead of Server.request_handlers. Custom dispatcher_handler wrappers must be installed before run_server().
For remote HTTP, prefer native stateless Streamable HTTP instead of a stateful supergateway wrapper; remove session affinity. Put appropriate TLS and authentication controls in front of externally accessible instances.
Migration guide: Migrating to 0.4.0
Detailed changes: Changelog
This GitHub Release points to the existing annotated v0.4.0 tag. No source changes or release assets were built or uploaded for this publication.