·
3 commits
to master
since this release
Added
- (0.4) Finish mcp-client framework integration + a2a-mcp edition 2024
- (a2a-agents) MCP server over Streamable HTTP transport
- (0.4) Typed error details, task versioning, call interceptors, streaming wiring + doc audit
Changed
- (a2a-agents) Drop the stale ws_port config field
Documentation
- Doc-comment audit, add ROADMAP, retire stale planning docs
Feat
- (a2a-rs) Client Transport port + JSON-RPC 2.0 client + card negotiation
Refactor
- (a2a-rs) Split streaming & push out of storage adapters (Phase 4 final)
Added
- MCP server over Streamable HTTP —
run_mcp_servercan now serve a
TOML-configured agent over MCP's Streamable HTTP transport (rmcp's
StreamableHttpServiceon anaxumrouter) in addition to stdio. Configure it
via a new[features.mcp_server.http]section (McpHttpConfig:enabled,
host,port,path); whenhttp.enabledit takes precedence over stdio.
DNS-rebinding protection defaults to loopback-only and is tunable via
allowed_hosts/allowed_origins(emptyallowed_hostsdisablesHost
validation for proxy-fronted public binds). Enables the
transport-streamable-http-serverrmcp feature. Newmcp_http_agentexample
(examples/mcp_http_agent.{rs,toml}) plus an end-to-endinitialize-handshake
andHost-allow-list integration test (tests/mcp_http_test.rs). AgentBuilder::with_streaming/AgentRuntime::with_streaming— attach a
shared streaming backend sotasks/subscribeSSE streams observe the
broadcasts a handler emits (e.g. via theTaskStatusBroadcastmixin). Pass the
sameInMemoryStreamingHandleryour handler broadcasts to (clones share
their subscriber registry); the runtime injects it into the transport via
ConnectRpcAdapter::with_streaming_handlerand logs "📡 Streaming backend
wired into transport" when active.complex_agentexample (examples/complex_agent.rs+
examples/complex_agent.toml, behind--features mcp-server) — a kitchen-sink
"Research Assistant" that wires declarative TOML config, optional LLM
tool-calling (with a keyless, deterministic rule-based fallback), MCP tool
consumption viaMcpToA2ABridge(against an in-process tool server over
tokio::io::duplex), live SSE streaming of progress artifacts, and native A2A
task lifecycle through the broadcast mixin.
Fixed
- Streaming through the builder reached a no-op.
AgentRuntime::start_http
built its transport withConnectRpcAdapter::new(...), which defaults to a
NoopStreamingHandler— so broadcasts from a builder-constructed handler never
reachedtasks/subscribeSSE clients. They now do when the streaming backend
is supplied viawith_streaming(see Added).