본관은 안동(安東). 자는 평여(平如). 아버지는 김병유(金炳孺)이며, 안동김씨의 세도정치를 배경으로 대사헌과 판서 및 좌의정을 지낸 김병학(金炳學)에게 입양되었다.
1882년(고종 19) 경과별시문과에 병과로 급제하였다. 1885년 선교관(宣敎官)이 되었고, 1888년 이조참의를 거쳐 그해 10월 대사성이 되었다.
이듬해에 좌승지가 되었고, 1893년 대사헌, 1895년 전선사장(典膳司長)·회계원장 등에 임명되었다. 1898년 궁내부특진관을 거쳐 그 해 7월 친위제1연대장(親衛第一聯隊長), 이듬해에 시위(侍衛)제1연대장을 지냈다.
1902년에는 특명전권공사 칙임관 3등에 임명되어 일본·영국·벨기에 주차전권공사(駐箚全權公使)를 차례로 지냈다. 1904년 육군참장(陸軍參將)으로 승진하였고, 그 해 9월 군부군무국장, 이듬해 군제의정관(軍制議定官)을 지내고, 그 해 5월 군부협판으로 임명되었다.
1907년에는 육군연성학교장(陸軍硏成學校長)이 되고 칙임관 2등에 올랐으며, 1910년 8월에는 정2품으로 품계가 오르고 규장각제학이 되었다.