Layered architecture

Top layer: users invoke agents over A2A. Middle: agents. Bottom: MCP servers exposing tools. Agents consume MCP; other agents consume this agent via A2A.

Advertisement

Adapter pattern

// Expose an MCP tool as an A2A skill
public class McpAsA2ASkill implements Skill {
  private final MCPClient mcp;
  public String call(Map args) {
    return mcp.callTool(toolName, args);
  }
}
Advertisement

Or vice versa

// Expose an A2A agent as an MCP tool
@MCPTool
public class A2AAgentAsTool {
  private final A2AClient a2a;
  public Object execute(Map args) {
    return a2a.sendTask(agentUrl, TextPart.of(args.toString()));
  }
}