Motivation
LangGraph currently supports MCP adapters via langchain-mcp-adapters, which allow external tools to be integrated as @tools.
However, in many cases external systems are not just tools but full agents β capable of reasoning, maintaining state, and returning structured results.
The emerging Agent-to-Agent (A2A) protocol provides a standard for communication between such agents. Supporting A2A natively in LangGraph would allow users to seamlessly add remote agents as first-class nodes/sub-graphs.
Problem
-
Today, connecting to a remote agent requires custom handoff implementations (handoffs guide) or custom commands.
-
This is not ergonomic, and doesnβt fully capture the semantics of stateful remote agents.
-
Users should be able to declare remote agents just as easily as they do with tools.
Proposed Solution
Introduce a new concept of RemoteAgentNode (similar to ToolNode), backed by an A2A adapter/client.
Prototype Architecture
-
RemoteAgent: Represents a remote agent endpoint. -
RemoteAgentNode: WrapsRemoteAgentfor integration into LangGraph execution. -
A2AClient: Handles transport and protocol translation.
Message Flow:
LangGraph (handoff)
β
RemoteAgentNode.run()
β
RemoteAgent.call()
β
A2AClient.send()
β
[A2A protocol transport: HTTP/WebSocket/gRPC/etc.]
β
Remote Agent
β
Response (state update)
β
RemoteAgentNode returns to LangGraph
To keep scope small, the first PR could implement:
-
RemoteAgentNodewith blocking handoff only-
Synchronously send state β wait for full response β return to LangGraph.
-
No streaming, concurrency, or advanced orchestration.
-
-
Minimal
A2AClientabstraction- Just use HTTP transport with JSON payloads (later pluggable for WebSocket/gRPC).
-
Simple Example Notebook
- One remote agent integrated into a LangGraph, demonstrating a blocking handoff.
This keeps the first PR low-risk, reviewable, and easy to merge.
Future PRs can then add streaming, concurrent orchestration, memory federation, etc.
Extensions
-
Streaming support: Pass remote agentβs token/thought stream back into LangGraph channels.
-
Memory federation: Allow sharing of selected history/state with remote agents.
-
Parallel orchestration: Enable multiple remote agents to run concurrently as graph branches.