본관은 연안(延安). 대사헌 김로(金鏴)의 손자이며 병조판서 김시연(金始淵)의 아들이다.
1859년(철종 10) 증광문과(增廣文科)에 병과로 급제한 뒤 1861년 한림소시(翰林召試)에 선발되어 출사(出仕)하였다. 그 뒤 고종조에 들어와 사헌부대사간·성균관대사성 등 간쟁(諫爭)·문한(文翰)의 직을 두루 거친 뒤 1887년 이조참판에 올랐다.
그리고 그 해의 동지부사(冬至副使)가 되어 정사(正使) 조병세(趙秉世)와 함께 청나라에 다녀왔다. 또한, 광무연간에는 황주(黃州)·안악(安岳) 등지의 군수와 황해도·충청남도의 관찰사 등 주로 외관을 거친 다음 궁내부특진관·봉상사제조·예식원장례경(禮式院掌禮卿)을 역임하였다.