McGregor is a city in Clayton County, Iowa, United States. The population was 871 at the 2010 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.