McKennie says in a club statement, "It was an easy decision as I have constantly received incredible support from the fans. The management was also always behind me. I'm looking forward to everything that comes."
The 20-year-old Texas-born midfielder joined Schalke from FC Dallas in 2016. He impressed with the club's under-19s before making his Bundesliga debut on the final day of the 2016-17 season.
McKennie made 22 league appearances for the senior team in his next season, helping the side finish as runner-up and reach the semifinals of the German Cup, but Schalke fared badly last season, finishing 14th after flirting with relegation in the 18-team division. Still, McKennie made 24 Bundesliga appearances last season.
McKennie spent three years as a child in Kaiserslautern, where his father was stationed, and opted to return to Germany despite the offer of a homegrown player contract with FC Dallas.
The American has played 59 games for Schalke, scoring two goals. He has one goal in 11 appearances for the U.S.