McGregor is a city in Clayton County, Iowa, United States. The population was 742 at the time of the 2020 census. McGregor is located on the Mississippi River across from Prairie du Chien, Wisconsin. Pike's Peak State Park is located just south of the city. Just to the north of McGregor is the city of Marquette. The community of McGregor Heights lies in the southern parts of the city limits.