Skip to content

feat: A2A server support in serve() #175

Description

@bokelley

Problem

serve() only creates MCP servers via FastMCP. There is no way to run an ADCPHandler as an A2A agent. Salesagent (the largest Python AdCP server) has ~2300 lines of A2A server boilerplate that the SDK should provide.

Proposed solution

Add A2A transport support to serve():

serve(MyHandler(), name="my-agent", transport="a2a")

This would create an A2A-compatible HTTP server that routes incoming task requests to the appropriate ADCPHandler methods.

Context

  • prebid/salesagent has a battle-tested A2A implementation we can reference
  • The a2a-sdk dependency is already in our requirements
  • The ADCPHandler abstraction is transport-agnostic — handlers work with both MCP and A2A
  • Storyboards currently only test via MCP (see adcontextprotocol/adcp-client#TBD)

Ref: prebid/salesagent#1183, #174 review

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions