DEVELOPMENT NOTE / Ask Wiki

MCP로 검색 기능 개방

목표

  • 웹 UI에 한정된 위키 검색을 표준 프로토콜로 재사용
  • 클라이언트별 전용 연동 없이 AI 도구에서 검색·답변 호출

구조

  • search_wiki: LLM 생성 없이 근거 청크만 반환
  • ask_wiki: 검색·생성·출처 반환을 포함한 전체 RAG
  • /api/ask와 MCP가 같은 AskService를 공유하는 단일 오케스트레이션 경로

문제와 해결

  • 전역 ToolCallback 수집 과정에서 발생한 ChatModel 순환 의존성
  • AskService 지연 주입으로 기동 시점 빈 그래프 분리
  • 단위 테스트가 놓친 문제를 전체 Spring 컨텍스트 부팅으로 검출

검증 방법

  • 전체 Spring 컨텍스트 부팅 테스트로 MCP 도구 등록 과정의 순환 의존성 재현 여부 확인
  • Claude Code에서 search_wikiask_wiki를 각각 호출해 검색 전용 응답과 답변·출처 응답을 구분
  • 같은 질문을 /api/ask와 MCP로 호출해 두 경로가 같은 AskService 결과를 반환하는지 대조

결과

  • Claude Code에서 Ask Wiki MCP 도구 연결과 호출 성공
  • stdio↔SSE 브리지 필요, 비대화형 승인 제약, Streamable HTTP 미지원이라는 연결 한계 확인

Claude Code의 Ask Wiki MCP 호출 화면