Summary
Today adcp.server.serve(transport=...) takes either streamable-http (MCP) or a2a — adopters wanting both have to run two processes. JS hosts both on one Express/Hono app. Achieve parity for Python.
Design
- Build MCP app via
mcp_server.streamable_http_app()
- Build A2A app via
a2a_app.build()
- Mount both on a parent Starlette via
Mount("/mcp", mcp_app) + Mount("/", a2a_app)
- Careful auth/middleware composition across both prefixes — middleware must apply to both transports identically (signing verification, audit, registry lookup, tenant routing)
- New
transport="both" option (or similar; bikeshed during impl)
Cross-references
🤖 Generated with Claude Code
Summary
Today
adcp.server.serve(transport=...)takes eitherstreamable-http(MCP) ora2a— adopters wanting both have to run two processes. JS hosts both on one Express/Hono app. Achieve parity for Python.Design
mcp_server.streamable_http_app()a2a_app.build()Mount("/mcp", mcp_app)+Mount("/", a2a_app)transport="both"option (or similar; bikeshed during impl)Cross-references
🤖 Generated with Claude Code