본관은 광산(光山). 자는 수보(守甫), 호는 만구와(晩求窩). 김반(金槃)의 증손으로, 할아버지는 증 영의정 김익겸(金益謙)이고, 아버지는 영돈녕부사 광성부원군(光城府院君) 김만기(金萬基)이며, 어머니는 한유량(韓有良)의 딸이다. 인경왕후(仁敬王后)의 오빠이다.
1680년 별시 문과에 병과로 급제하고, 사관이 되어 『현종실록(顯宗實錄)』찬수에 참여하였다. 이어 정언(正言)·헌납(獻納)·교리(校理)·응교(應敎)·집의(執義) 등을 역임하였다. 1684년 경상감사가 되었으며 이어 승지가 되었다.
1689년 기사환국에 의하여 남인정권이 들어서자 김석주(金錫胄)와 함께 가혹한 수법으로 남인을 숙청하였다는 탄핵을 받고 제주도에 위리안치되었다. 1694년 갑술환국으로 서인이 집권하게 되자 풀려나 호조판서에 기용되고, 곧 경기도관찰사가 되었으나 부임하지 않았다.
이듬해 도승지·전라도관찰사 등을 거쳐서 1696년 강화부유수(江華府留守)·세자가례부사(世子嘉禮副使) 등을 역임하였다. 이어 형조·공조·호조의 판서를 역임한 뒤 1700년 지돈녕부사·어영대장·수어사 등을 거쳐, 이듬해 우참찬·좌참찬, 1702년 판의금부사(判義禁府事)에 이르렀다. 시호는 경헌(景獻)이다.