본관은 청풍(淸風). 자는 화일(華一). 서울 출신. 김학성(金學性)의 아들이다.
1864년 증광문과에 을과로 급제하였다. 1889년 전라도관찰사, 1891년 형조판서, 1892년 예조판서, 1893년 공조판서·경기도관찰사, 1894년 황해도관찰사를 지냈다.
1894년 7월 개화파정권에 의해 탄핵을 받아 면직되고 잠시 관직에서 물러나 있었다. 그러나 개화파정권이 아관파천에 의해 붕괴된 뒤 건양·광무연간에 다시 등용되었다.
중추원의관·의정부참정·궁내부특진관(宮內府特進官)·태의원경(太醫院卿)·장례원경(掌禮院卿)·시종원경(侍從院卿)·귀족원경 등을 역임하였다.
1898년 11월 만민공동회가 개최되고 있을 때, 한성부내 각처에서 민회를 빙자하여 소요를 일으키고 민간인을 구타하여 가옥을 파괴하는 자들이 있다고 하면서, 한성부판윤과 경무사를 견책할 것을 상주하기도 하였다.
1902년 5월에는 황제의 권위를 높이기 위해, 양경제도(兩京制度)를 둘 것을 제안하였으나 받아들여지지 않았다. 1903년 8월에는 북간도에 이주한 많은 백성들을 보호하기 위하여, 북간도에 보호관을 둘 것을 상주하여 고종의 허락을 얻어내었다.
그 결과 이범윤(李範允)이 북간도의 한인을 보호하는 관리로 처음 파견되었다.