MCP 챗봇 PRD
배경 (Background)
주식 앱의 종목 조회·관심종목·목표가 알림·주문 기능이 각각 독립적인 REST API와 화면으로 분산돼 있어, 사용자가 흐름을 이어가려면 여러 탭을 오가야 한다. 시장 뉴스·공시는 앱 내에서 조회할 수 없어 별도 검색이 필요하다. 이를 해결하기 위해 모든 기능을 Spring AI MCP Tool로 통합하고, 자연어 채팅 한 곳에서 처리할 수 있는 챗봇 인터페이스를 제공한다.
목표
Spring AI를 이용해 기존 주식 앱의 모든 기능(종목 조회·검색, 관심종목, 목표가 알림, 주식 주문·정정·취소, 보유 종목·거래 내역)을 MCP Tool로 노출하고, Claude를 백엔드 LLM으로 사용하는 자연어 챗봇 인터페이스를 제공한다. 웹 검색(Tavily)을 병행해 복잡한 시장 컨텍스트(뉴스·공시 등)에도 대응한다.
사용자 문제와 해결 방안
| 사용자 문제 | 해결 방안 |
|---|---|
| 기능이 탭·화면에 분산돼 있어 흐름 파악이 어렵다 | 자연어 채팅으로 모든 기능을 단일 인터페이스에서 처리 |
| 종목 정보 + 뉴스 + 주문을 별도 앱에서 해야 한다 | 챗봇 한 곳에서 Tool 호출 + 웹 서치로 맥락 종합 |
| 주문 사이클(검색→가격확인→주문→이력)이 여러 화면에 걸쳐 있다 | 대화 흐름으로 주문 사이클 완결 |
| 시장 뉴스·공시를 별도 검색해야 한다 | 웹 서치 Tool 자동 호출로 최신 정보 통합 |
요구사항
필수(Must Have)
| ID | 요구사항 | 우선순위 |
|---|---|---|
| R-01 | Spring AI MCP Server를 백엔드에 추가한다 (SSE 트랜스포트). | Must Have |
| R-02 | 종목 조회·검색·시세 Tool을 MCP로 노출한다. | Must Have |
| R-03 | 관심종목 추가·삭제·조회 Tool을 MCP로 노출한다. | Must Have |
| R-04 | 목표가 알림 생성·삭제·조회 Tool을 MCP로 노출한다. | Must Have |
| R-05 | 주식 주문(매수·매도)·정정·취소·계좌 조회 Tool을 MCP로 노출한다 (주문 구현 완료 이후 활성화). | Must Have |
| R-06 | Tavily 웹 서치 Tool을 LLM이 자동 호출해 최신 뉴스·정보를 보강한다. | Must Have |
| R-07 | Chat REST API (POST /api/chat/message)를 제공한다. | Must Have |
| R-08 | FE 챗봇 UI — 메시지 입력·스트리밍 응답 표시. | Must Have |
선택(Nice to Have)
| ID | 요구사항 | 우선순위 |
|---|---|---|
| N-01 | Claude Desktop 등 외부 MCP 클라이언트에서도 연결 가능. | Nice to Have |
| N-02 | 대화 히스토리를 세션 메모리(인메모리)로 유지해 문맥 연속성 제공. | Nice to Have |
| N-03 | 뉴스 시그널·종목 추천 Tool 연동. | Nice to Have |
사용자 시나리오
시나리오 1 — 종목 뉴스 조회 후 관심종목 추가
사용자가 채팅창에 “삼성전자 최신 뉴스 알려줘”를 입력한다. 챗봇이 Brave MCP를 통해 최신 기사를 검색한 뒤 요약을 스트리밍으로 반환한다. 이어서 “관심종목에 추가해줘”를 입력하면 WatchlistMcpTools가 호출돼 즉시 추가된다.
시나리오 2 — 자연어 주문 사이클
사용자가 “삼성전자 현재가 확인하고 10주 시장가 매수해줘”를 입력한다. 챗봇이 StockMcpTools.getStockPrices로 현재가를 조회하고, 확인 메시지를 스트리밍한 뒤 OrderMcpTools를 통해 매수 주문을 실행한다.
경쟁사·동일 제품군 비교
| 항목 | 본 도구 | 토스앱 AI | 증권사 HTS |
|---|---|---|---|
| 자연어 주문 | ✅ | 일부 | ✗ |
| 기존 기능 Tool 통합 | ✅ | ✗ | ✗ |
| 웹 서치 맥락 통합 | ✅ | ✗ | ✗ |
| 외부 MCP 클라이언트 연동 | ✅(SSE) | ✗ | ✗ |
제약 및 전제
- 주문·계좌 구현 완료 전까지 주문 Tool은 비활성 상태로 존재.
- LLM: Anthropic Claude (기존 프로젝트 사용 중).
- 웹 서치: Tavily API Key 필요.
- 인증: 현재 단일 사용자 앱으로 인증 없음.
수락 기준
| 기준 | 측정 방법 |
|---|---|
| Tool 호출 성공 | 챗봇에서 “삼성전자 주가” 입력 시 종목 조회 Tool 호출 후 응답 |
| 웹 서치 통합 | ”삼성전자 최신 뉴스” 입력 시 Tavily Tool 호출 후 최신 기사 요약 반환 |
| 주문 흐름 | ”삼성전자 10주 시장가 매수” 입력 시 주문 Tool 호출 확인 |
| FE UI | 챗 입력·스트리밍 응답·대화 기록 표시 정상 동작 |
범위 외
- 멀티 사용자 인증·권한 관리
- 대화 히스토리 DB 영속화
- 실시간 호가·체결 스트리밍 (SSE는 챗봇 응답 용도로만 사용)
- 모바일 앱 챗봇 UI