문제의 정의: 개발자-투자자의 트레이드오프
한국투자증권으로부터 MCP(Model Context Protocol) 프로젝트 의뢰를 받았을 때, 우리가 해결해야 했던 문제는 다음 2가지의 요구사항이었다.
첫번째 요구사항은 ‘개발과정의 비효율성 개선’이었다. 코딩 능력을 가진 투자자들은 복잡한 API 문서를 매번 참조하고, 매개변수를 일일이 설정하는 과정에 상당한 시간을 소모하고 있었다. 한국투자증권의 OpenAPI는 총 336개의 API로 구성되어 있으며, 각각 고유한 매개변수 구조를 가진다. 하나의 간단한 시세 조회조차 종목코드, 시장구분, 환경구분 등 다양한 매개변수를 정확히 설정해야만 가능했다.
두번째 요구사항은 ‘투자 전략 집중을 위한 리소스 재분배’이었다. 단순한 API 호출 편의성을 넘어서, 투자 아이디어를 즉시 구현하고 검증할 수 있는 환경이 필요했다. 기존 방식에서는 하나의 투자 전략을 테스트하려면 데이터 수집, 전처리, 분석 로직 구현 등 여러 단계를 순차적으로 거쳐야 했다. 이 과정에서 실제 투자 로직보다 데이터 핸들링에 더 많은 시간을 소모하게 되어, 기술적 구현보다는 투자 전략 자체에 집중할 수 있는 개발 환경이 요구되었다.
이 두 요구사항에 따라 우리는 자연어 인터페이스를 통해 정확한 API 호출을 가능하게 하는 시스템을 설계해야 했다. 이는 단순히 기존 도구들을 연결하는 문제가 아니라, 언어 모델의 추론 능력과 금융 API의 엄격함을 조화시키는 새로운 아키텍처를 요구했다.
기술적 접근법: MCP 아키텍처의 선택
우리가 선택한 해결책은 Model Context Protocol을 기반으로 한 통합 시스템이었다. 이 선택의 배경에는 몇 가지 핵심적인 기술적 고려사항이 있었다.
직접 연결의 한계: 언어 모델을 직접 API와 연결하는 방식은 매개변수 해석 오류, 응답 데이터 파싱 실패, 예외 상황 처리 부재 등의 문제를 야기했다. 특히 한국투자증권 API의 경우, 종목코드 체계(6자리 숫자), 시장구분코드(J, NX, UN 등), 계좌번호 형식 등이 정확히 매칭되지 않으면 전혀 다른 결과를 반환하거나 오류를 발생시켰다.
MCP의 구조적 장점: MCP는 언어 모델과 외부 시스템 사이에 표준화된 통신 프로토콜을 제공한다. 이를 통해 우리는 다음과 같은 계층적 구조를 구현할 수 있었다.
- 자연어 해석 계층: 사용자의 자연어 요청을 분석하고 의도를 파악
- 매개변수 변환 계층: 추출된 의도를 API 호출에 필요한 정확한 매개변수로 변환
- API 호출 계층: 한국투자증권 OpenAPI와의 실제 통신 수행
- 응답 처리 계층: API 응답을 사용자 친화적 형태로 가공
이러한 계층화는 각 단계에서의 오류 처리와 검증을 가능하게 했으며, 시스템의 신뢰성을 향상시켰다.
핵심 도전과제와 해결 방안
1. 종목 검색의 환각 문제 해결
LLM을 금융 API와 연동할 때 가장 치명적인 문제 중 하나는 종목코드 환각(Hallucination) 현상이었다. 이는 LLM이 알고 있는 지식의 한계와 추론 방식의 특성에서 비롯된다.
문제의 본질: LLM에 종목 검색을 요청하면, 삼성전자, SK하이닉스 등 우량주에 대해서는 정확한 종목코드(005930, 000660)를 제공한다. 하지만 중소형주나 비인기 종목의 경우, LLM은 실제 존재하지 않는 임의의 종목코드를 생성한다. 사용자 관점에서는 명백한 오류이지만, LLM 관점에서는 기존 지식과 사용자 컨텍스트를 바탕으로 가장 합리적인 근사치를 제공한 것이다.
예를 들어, "카카오뱅크 주가 알려줘"라는 요청에 대해 LLM이 '323410'이라는 존재하지 않는 종목코드를 생성할 수 있다. 이는 LLM이 효율성을 위해 선택한 처리 방식이지만, 실제 API 호출에서는 오류나 잘못된 데이터 반환으로 이어진다.
해결 방안: 3단계 검증 시스템
- LLM 추론 단계: "삼성 주가 알려줘"라는 프롬프트가 입력되면, LLM이 보유한 지식 또는 대화 컨텍스트를 바탕으로 해당 종목을 추론한다.
- MCP 검증 단계: LLM이 추론한 종목명을 MCP의 종목코드 검색 시스템에 전달한다. 이 시스템은 한국투자증권의 실제 종목 데이터베이스와 연동하여 정확한 종목코드를 찾는다. 만약 정확히 일치하는 종목이 없다면, 유사한 종목들의 목록을 반환한다.
- API 실행 단계: MCP 서버로부터 검증된 정확한 종목코드를 받은 LLM은 이를 사용하여 실제 API를 호출한다.
2. 복합 쿼리 처리
실제 투자자들의 요청은 단순한 단일 정보 조회를 넘어서는 경우가 많다. "삼성전자와 SK하이닉스의 현재가, 거래량, PER을 비교해서 표로 보여줘"와 같은 복합적 요청이 그 예이다.
이를 해결하기 위해 우리는 쿼리 분해 및 재조립 시스템을 활용했다.
- 쿼리 파싱: 복합 요청을 개별적 API 호출로 분해
- 데이터 통합: 각 API 응답을 하나의 일관된 형태로 결합
코딩 속도 개선과 사용자 경험
개발 생산성 향상과 코딩 시간 단축
MCP 시스템의 핵심 가치는 개발자들의 코딩 시간을 획기적으로 단축시키는 것이었다. 기존 방식과 비교했을 때, 실제 개발 시간 단축 효과는 다음과 같다:
API 문서 러닝커브 완화: 기존에는 336개 API 중 필요한 API를 찾고, 각 매개변수의 의미와 형식을 파악하는 데 많은 시간이 소요되었다. MCP 시스템에서는 자연어 요청만으로 이 과정이 생략된다.
매개변수 설정 자동화: "삼성전자 현재가 조회"라는 요청이 자동으로 다음 매개변수들로 변환된다:
- fid_cond_mrkt_div_code: "J" (KRX 시장)
- fid_input_iscd: "005930" (삼성전자 종목코드)
- env_dv: "real" (실거래 환경)
기존에는 이런 매개변수들을 매번 문서에서 찾아 설정해야 했지만, 이제는 시스템이 자동으로 처리한다.
프로토타이핑 속도 향상: 새로운 투자 아이디어를 테스트하기 위한 데이터 수집 코드 작성이 기존 대비 대폭 단축되었다. "코스피200 종목 중 PER 10 이하인 종목들"이라는 복잡한 조건도 즉시 결과를 얻을 수 있어, 아이디어 검증 주기가 크게 빨라졌다.
결과적으로, 이를 사용함으로써 개발자들은 기술적 구현보다는 투자 로직과 전략 개발에 더 많은 시간을 투자할 수 있게 되었다. 실제 측정 결과, 평균적인 투자 전략 백테스팅 코드 개발 시간이 눈에 띄게 개선되었다.
사용자 인터페이스 설계
MCP 시스템의 사용자 인터페이스는 AI 도구 환경 내에서 자연어 대화 형태로 제공된다. 하지만 단순한 질의응답을 넘어서, 투자자들의 실제 워크플로우를 지원하는 것이 중요했다.
점진적 정보 공개: 복잡한 금융 데이터를 한 번에 모두 제시하는 대신, 사용자의 요청에 따라 점진적으로 상세 정보를 제공하는 방식을 채택했다. 예를 들어, 종목 조회 시 먼저 기본 정보(현재가, 등락률)를 제공하고, 사용자가 추가 정보를 요청할 때 상세 데이터(호가, 거래량, 기술적 지표 등)를 제공한다.
컨텍스트 유지: 대화 과정에서 이전에 조회한 종목이나 설정한 조건들을 기억하여, 반복적인 입력을 줄이고 자연스러운 대화 흐름을 유지한다.
활용 예제
전략을 구상하고 싶은 투자자
"코스피200 구성종목 중 PER 15 이하, ROE 10% 이상인 종목들을 거래량 순으로 정렬해서 보여줘"
이런 요청은 기존 방식으로는 다음과 같은 복잡한 과정을 거쳐야 했다:
- 코스피200 구성종목 리스트 API 호출
- 각 종목별 재무 정보 API 호출
- 조건 필터링 로직 구현
- 거래량 데이터 추가 수집
- 정렬 및 표시
MCP 시스템에서는 이 모든 과정이 자연어 한 문장으로 처리된다. 시스템은 요청을 분석하고, 필요한 API 호출들을 병렬로 실행하며, 결과를 정리하여 표 형태로 제시한다.
알고리즘 트레이더
실시간 호가창 모니터링과 매매 신호 생성을 위한 코드 생성 요청:
"KOSDAQ 바이오 종목들의 호가 스프레드가 3% 이상 벌어지면 알림을 주는 코드를 만들어줘"
시스템은 이를 다음과 같이 처리한다:
- KOSDAQ 바이오 업종 종목 리스트 조회
- 실시간 호가 API 연결 방법 제시
- 스프레드 계산 로직이 포함된 Python 코드 생성
- 알림 시스템 구현 예제 제공
단일 자연어 요청으로 데이터 조회부터 실행 가능한 코드 생성까지 전체 워크플로우가 자동화되어, 개발자는 즉시 실제 트레이딩 환경에 적용할 수 있다
결론: 새로운 패러다임의 시작
한국투자증권 MCP 프로젝트를 통해 우리가 증명한 것은 자연어와 정확한 API 호출이 상호배타적이지 않다는 점이다. 적절한 아키텍처와 신중한 설계를 통해, 개발자의 편의성과 투자 전략에 대한 집중할 수 있는 환경을 모두 확보할 수 있었다.
더 중요한 것은 이 프로젝트가 보여준 새로운 상호작용 패러다임이다. 투자자들은 더 이상 복잡한 API 문서를 숙지하거나 매개변수를 외울 필요가 없다. 대신 자신의 투자 아이디어와 분석 요구사항을 자연어로 표현하면, 시스템이 이를 정확한 데이터 조회로 변환해준다.
이는 단순한 도구의 개선을 넘어서, 개발 지식을 가진 투자자들이 기술적 구현보다는 투자 전략과 분석에 더 많은 시간을 투자할 수 있게 하는 근본적 변화이다. 앞으로 이런 접근법이 금융 기술 분야에서 새로운 표준이 될 것이라 확신한다.
[한국투자증권 OpenAPI 사이트]
https://apiportal.koreainvestment.com/intro
[한국투자증권 OpenAPI 사이트 내 MCP 관련 페이지]
https://apiportal.koreainvestment.com/tools-mcp
https://apiportal.koreainvestment.com/tools-sample
[한국투자증권 Github]
https://github.com/koreainvestment/open-trading-api
[Gihtub MCP가이드]
https://github.com/koreainvestment/open-trading-api/tree/main/MCP
[Gihtub LLM Sample]
https://github.com/koreainvestment/open-trading-api/tree/main/examples_llm
[Smithery 코딩도우미MCP 설치 페이지]
https://smithery.ai/server/@KISOpenAPI/kis-code-assistant-mcp