The 20-man MLS roster that will face Michael Bradley and Serie A club Roma in the All-Star Game on July 31 at Sporting Park in Kansas City, Kan.:

Goalkeepers: Raul Fernandez (FC Dallas), Nick Rimando (Real Salt Lake).

Defenders: Omar Gonzalez (Los Angeles Galaxy), Matt Besler (Sporting Kansas City), Aurelien Collin (Sporting Kansas City), Corey Ashe (Houston Dynamo), Tony Beltran (Real Salt Lake), DeAndre Yedlin (Seattle Sounders)*.

Midfielders: Brad Davis (Houston Dynamo), Will Johnson (Portland Timbers), Mike Magee (Chicago Fire), Graham Zusi (Sporting KC), Kyle Beckerman (Real Salt Lake), Patrice Bernier (Montreal Impact), Tim Cahill (New York Red Bulls)*.

Forwards: Marco Di Vaio (Montreal Impact), Robbie Keane (Los Angeles Galaxy), Camilo Sanvezzo (Vancouver Whitecaps), Thierry Henry (New York Red Bulls), Chris Wondolowski (San Jose Earthquakes).

*Commissioner’s picks

Notable omissions: Philadelphia’s Jack McInerney (10 goals), Philadelphia’s Sebastien Le Toux (league-high nine assists).

The final list was supposed to include 18 players, but the league decided to add two.

Sporting KC Coach Peter Vermes made the final selections, based in part on competitive and strategic reasons, from a pool of 32 “all-stars.” Although 12 honorees will not attend, they do retain all-star status and, accordingly, receive corresponding bonuses. (The inactive list will be revealed on the day of the match.)

With the game more than two weeks away, though, roster changes are inevitable because of injury or fatigue.

McInerney appears to be the top alternate in case Keane, who is nursing an injury, is unable to compete. Some U.S. players who might appear in the CONCACAF Gold Cup final on July 28 could end up opting out.