Вихованець академії маріупольського «Іллічівця».
Дебютував у складі «Іллічівця» в Прем'єр-лізі України 5 квітня 2015 року в поєдинку з донецьким «Шахтарем» у віці 16 років 6 місяців і одного дня.
30 травня 2015 року також граючи за «Іллічівець» забив свій перший гол в УПЛ у матчі з донецьким «Олімпіком», ставши лише третім футболістом, який забив у чемпіонатах України в 16-річному віці.
У червні 2015 року поповнив лави ФК «Динамо» (Київ).
Дебютував за «біло-синіх» у чемпіонаті України U19 1 серпня 2015 року в домашній поразці від «Олександрії» (0:1).
Вже в наступному матчі 9 серпня 2015 року забив свій перший динамівський гол за U19, відзначившись у гостьовій грі з ужгородською «Говерлою» (1:4).
Чемпіон України серед команд U19 у сезоні 2015/16 (25 зустрічей, сім голів).
30 квітня 2016 року провів свою прем'єрну гру за «Динамо» U21, взявши участь у розгромі донецького «Шахтаря» (4:0), а 26 серпня того ж року відзначився дебютним забитим м'ячем у молодіжному чемпіонаті в домашній зустрічі з полтавською «Ворсклою» (3:0).
Свою першу гру в турнірах під егідою УЄФА зіграв 20 жовтня 2015 року в Юнацькій лізі УЄФА в якій динамівці поступилися лондонському «Челсі» (0:2).
18 листопада 2017 дебютував за першу команду «Динамо» в матчі Прем'єр-ліги проти кропивницької «Зірки», вийшовши на заміну на 90-й хвилині замість Жуніора Мораеса. У наступному матчі відбувся дебют в Лізі Європи, коли Микола вийшов на заміну в матчі проти «Скендербеу».
Дебютним голом відзначився в ворота «Маріуполя», в тому ж матчі віддав гольову передачу.
Ставши основним гравцем «Динамо», Шапаренко попервах демонстрував яскраву гру, приймав сміливі рішення та відрізнявся нестандартним мисленням на полі. Але з часом почало здаватися, що Микола збавив оберти, адже він не завжди потрапляв до основного складу а часом навіть грав за молодіжну команду. Та з приходом тренера Мірчі Луческу 22-річний півзахисник проявив нові грані свого таланту та знову засяяв на повну силу, досягши помітного прогресу. Останнім часом Микола став грати в інший футбол, осмислений, розумний і завжди націлений на атаку.
У сезоні 2020/2021 років динамівець був незамінним на полі, провівши вдвічі більше матчів, ніж попереднього року. При цьому він досить часто асистував партнерам та забивав сам, вдало розпоряджаючись м’ячем на своїй позиції, ставши лідером у середині поля. Він, як ніхто, вміє розігнати атаку з глибини поля, проявити індивідуальну майстерність та прийняти правильне рішення у складній ситуації.
У березні 2021-го року провів свій 100-й матч за «Динамо» проти іспанського «Вілярреала» у Лізі Європи.
Багаторазово визнавався уболівальниками та експертами найкращим гравцем команди за підсумками місяця, окремих матчів та турів VBET Ліги. Крім того, став найкращим футболістом 2021 року за підсумками опитування в офіційному Telegram-каналі ФК «Динамо» (Київ).
Поєдинок 3-го туру VBET Ліги, в якому «Динамо» приймало на своєму полі харківський «Металіст 1925» у грудні 2023 року та перемогло з рахунком 4:2, став для Миколи 100-м матчем у складі «Динамо» в чемпіонаті України.
Чемпіон України 2020/21, володар Кубка України сезону 2019/20 і 2020/21, а також володар Суперкубка України 2018, 2019 та 2020 років.
На початку жовтня 2020-го року підписав новий контракт із «Динамо». Нова угода розрахована до 2025-го року.
З 2015 року виступав за юнацькі збірні України різних вікових категорій. З 2018 року захищав кольори молодіжної збірної України. 31 травня 2018 року дебютував у складі національної збірної України в товариському матчі проти Марокко.
У складі збірної України взяв участь у чемпіонаті Європи 2020-го року та увійшов до числа найкращих гравців по відбору м’яча, посівши п’яте місце у загальному рейтингу.
Виступав на Євро-2024 та став найкращим гравцем матчу 2-го туру групового етапу між збірними України та Словаччини.