Garcia made his professional debut with the Boise Hawks, going 0–4 with a 6.37 ERA in 35+1⁄3 innings. He played 2017 with Boise and the Asheville Tourists, posting a 2–6 record and 3.39 ERA in 16 games (12 starts).
He split the 2018 season between the Lancaster JetHawks and Hartford Yard Goats, pitching to a 13–9 record and 2.96 ERA over 27 games (26 starts).[5] Garcia was an MILB.com Organization All Star, and both a mid-season and post-season California League All Star.[6]
Garcia opened the 2019 season with Hartford before being promoted to the Albuquerque Isotopes on June 20.[7][8] Combined between the two levels, in 2019 he went 10–6 with a 4.24 ERA over 129+1⁄3 innings in 26 starts in which he struck out 138 batters.[9]
On August 27, 2019, the Rockies selected Garcia's contract and promoted him to the major leagues.[10] He made his debut that night versus the Boston Red Sox, allowing six runs in five innings pitched.[11] He pitched a total of six innings for the Rockies in 2019.[9]
San Francisco Giants
On November 5, 2019, Garcia was claimed off waivers by the San Francisco Giants.[12] He was non-tendered on December 2, 2019, and became a free agent.[13] Garcia later re-signed with the Giants on a minor league deal in the offseason.[14] In 2020, Garcia registered a 5.40 ERA with 7 strikeouts in 10 innings of work.[15] On December 2, Garcia was nontendered by the Giants. On December 3, Garcia re-signed with the Giants on a minor league contract. On March 24, 2021, it was announced that Garcia would require Tommy John surgery and miss the 2021 season as a result.[16] On March 27, Garcia underwent the procedure. On November 7, Garcia elected free agency.
Baltimore Orioles
On November 10, 2021, Garcia signed a minor league contract with the Baltimore Orioles organization.[17] He was assigned to the Triple-A Norfolk Tides to begin the year.
On June 13, 2022, Garcia was selected to the 40-man roster to replace Keegan Akin, who could not travel to Toronto for a series against the Blue Jays due to his vaccination status.[18] In two games, he allowed one run on three hits with a strikeout in three innings pitched. He was removed from the 40-man roster and returned to Triple-A on June 17.[19]
On July 10, Garcia was selected back to the major league roster. In 6 games for Baltimore, he registered a 4.50 ERA with 2 strikeouts in 8.0 innings of work. On September 11, Garcia was designated for assignment following the waiver claim of Cam Gallagher. On September 13, he cleared waivers and was sent outright to Triple–A Norfolk.[20]
Oakland Athletics
On November 11, 2022, Garcia signed a minor league deal with the Oakland Athletics. He began the 2023 season with the Triple-A Las Vegas Aviators, making 9 appearances and logging a 2.03 ERA with 19 strikeouts and 2 saves in 13.1 innings pitched. On May 4, 2023, Garcia had his contract selected to the active roster.[21] In 7 games for Oakland, he struggled to an 8.31 ERA with 6 strikeouts in 8+2⁄3 innings pitched. On July 7, he was designated for assignment following the promotion of Cody Thomas.[22] He cleared waivers and was sent outright to Triple–A on July 10.[23] However, the next day, Garcia rejected the assignment in lieu of free agency.[24]
Washington Nationals
On July 12, 2023, Garcia signed a minor league contract with the Washington Nationals organization.[25] After two scoreless appearances for the Triple–A Rochester Red Wings, the Nationals selected Garcia to the major league roster on July 19.[26] He allowed 4 runs on 6 hits and 4 strikeouts in 3 innings of work across 3 appearances for the Nationals. After spending a month on the injured list with biceps tendinitis, Garcia was activated and subsequently released on September 1.[27] On September 3, Garcia re–signed with the Nationals organization on a two–year, minor league contract.[28] He elected free agency following the season on November 4.[29]
New York Mets
On November 6, 2024, Garcia signed a minor league contract with the New York Mets.[30]