본관은 광산(光山). 아버지는 김재두(金在斗)이다.
1891년(고종 28) 증광별시문과에 병과로 주1한 뒤 바로 부수찬(副修撰)이 되었다. 전적(典籍) · 부사과(副司果)를 거쳐 1894년에는 낭청(郎廳)에 임명되었다.
1896년 이후에는 외부참서관(外部參書官) · 교섭국장(交涉局長) · 동래감리 겸 동래부윤을 지냈다. 1899년 이후에는 학부학무국장(學部學務局長) · 법부사리국장(法部司理局長)을 거쳐 1906년에는 시종원부경(侍從院副卿)이 되고 칙임관 3등에 올랐다.
이어 궁내부특진관(宮內府特進官)을 거쳐 법부차관 · 궁내부협판(宮內部協辦) · 제실회계심사국장(帝室會計審査局長)을 역임하고 칙임관 2등에까지 이르렀다.
1907년 11월에는 대원왕대원비원침천봉시검찰당상(大院王大院妃園寢遷奉時檢察堂上)에 임명되어 서울 마포구 공덕동에 있는 흥선대원군의 묘를 이장하는 일을 주2, 그달말에는 전선사장(典膳司長)의 직책을 맡았다. 남긴 글로는 「경빈묘지문(慶嬪墓誌文)」이 있다.