소개
정적 웹 도큐먼트를 자동으로 수집하고, 클로드(Claude)나 GPT 같은 LLM에게 질문했을 때 더 똑똑하게 답할 수 있도록 돕는 MCP(Multi-tool Control Panel)를 만들고 싶었어요. 그래서 크롤링부터 임베딩, 벡터 DB 저장, 그리고 앙상블 검색까지 한 번에 처리할 수 있는 도구를 직접 구성해봤습니다 💡
진행 방법
사용한 도구는 다음과 같아요:
🧠 FastMCP: 툴을 만들고 제어하기 쉽게 도와주는 프레임워크
🔍 BeautifulSoup: HTML에서 텍스트를 추출할 때 사용
🧱 ChromaDB: 로컬 벡터 DB 저장소
🤖 OpenAI Embedding API: 텍스트를 임베딩 벡터로 변환
흐름
URL을 입력하면 크롤링을 시작해요 (BFS 방식, 같은 도메인 내 제한)
HTML을 텍스트로 정제하고, 작은 청크 단위로 나눠요
OpenAI를 통해 임베딩하고, ChromaDB에 저장해요
검색할 때는 시맨틱 + 키워드 앙상블 방식으로 결과를 보여줘요 👀
프롬프트 / 코드 일부 예시:
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 시스템, 생각보다 어렵지 않아요!
크롤링 범위만 조심하면, 여러분도 금방 만들 수 있어요 🛠️