클로드 RAG용 MCP 만들기: 크롤링 + 임베딩 + 앙상블 서치로 검색까지!

소개

정적 웹 도큐먼트를 자동으로 수집하고, 클로드(Claude)나 GPT 같은 LLM에게 질문했을 때 더 똑똑하게 답할 수 있도록 돕는 MCP(Multi-tool Control Panel)를 만들고 싶었어요. 그래서 크롤링부터 임베딩, 벡터 DB 저장, 그리고 앙상블 검색까지 한 번에 처리할 수 있는 도구를 직접 구성해봤습니다 💡

진행 방법

사용한 도구는 다음과 같아요:

  • 🧠 FastMCP: 툴을 만들고 제어하기 쉽게 도와주는 프레임워크

  • 🔍 BeautifulSoup: HTML에서 텍스트를 추출할 때 사용

  • 🧱 ChromaDB: 로컬 벡터 DB 저장소

  • 🤖 OpenAI Embedding API: 텍스트를 임베딩 벡터로 변환

흐름

  1. URL을 입력하면 크롤링을 시작해요 (BFS 방식, 같은 도메인 내 제한)

  2. HTML을 텍스트로 정제하고, 작은 청크 단위로 나눠요

  3. OpenAI를 통해 임베딩하고, ChromaDB에 저장해요

  4. 검색할 때는 시맨틱 + 키워드 앙상블 방식으로 결과를 보여줘요 👀

프롬프트 / 코드 일부 예시:

text_splitter = RecursiveCharacterTextSplitter(
    separators=["\n\n", "\n", " ", ".", ",", "\u200b", "\uff0c", "\u3001", "\uff0e", "\u3002", ""],
    chunk_size=800,
    chunk_overlap=100
)
한국 Google 검색 페이지의 스크린 샷
한국어 응용 프로그램의 스크린 샷

결과와 배운 점

  • 처음엔 바이브 코딩으로 막 진행했는데…

    • 크롤링이 너무 많이 되면서 에러가 발생했어요 😅

    • 그래서 max_depth, max_pages 같은 제한을 강제로 걸어서 해결했습니다

  • MCP는 의외로 툴 등록이 정말 쉽고 직관적이어서 만족!

  • 클로드에게 연결해 RAG 시스템 만들기에 딱 좋았어요

  • 코딩 도우미로는 GPT-o3 가 가장 정갈한 코드 결과를 줬어요. 딥리서치했던 사용법과도 잘 맞았고요 🙌

도움 받은 글 (옵션)

  • FastMCP 관련 공식 문서 및 블로그 정리들


나만의 RAG 시스템, 생각보다 어렵지 않아요!

크롤링 범위만 조심하면, 여러분도 금방 만들 수 있어요 🛠️

4

👉 이 게시글도 읽어보세요