소개
카톡 나와의 채팅에 보내놓은 단편적인 정보만 3천 라인입니다.
도저히 카톡 창으로는 찾을 수도 없어요. 😂
기껏 보겠다고 모아 놓은 정보를 다 버리게 생겼습니다. 😅
그래서 Minima라는 Local RAG MCP 서버를 설치해서 카톡 대화를 검색하도록 하고,
추가적으로 Minima 검색 결과를 받아서 그 안의 중요 링크를 추출한 다음에,
링크를 방문해서 최종 보고서를 만드는 MCP 서버를 개발했습니다.
이 보고서는 노션 MCP를 연결해서 저장했어요.
진행 방법
우선 카톡 나와의 채팅의 채팅 내역을 텍스트 파일로 내보내기 해서 내 컴퓨터로 가져옵니다.
가져와 보니 3천 라인이었어요.
일단 이걸로 Minima RAG MCP 서버를 연동해서 검색해봤습니다.
https://playbooks.com/mcp/dmayboroda-minima
여기가 Minima RAG MCP 서버 소개해놓은 페이지입니다.
깃허브는 여깁니다.
https://github.com/dmayboroda/minima
Minima 설치하려면 git clone 해서 Minima 소스를 당겨온 다음에
.env 파일 생성이 필요합니다.
LOCAL_FILES_PATH="your_directory_path"
EMBEDDING_MODEL_ID=sentence-transformers/all-mpnet-base-v2
EMBEDDING_SIZE=768
그리고 클로드에서 쓰려면 이 명령어로 빌드하면 됩니다.
docker compose -f docker-compose-mcp.yml --env-file .env up --build
그리고 클로드 json 설정 파일에 내용 추가하면 됩니다.
다 잘 되었는데, 클로드에서 내 파일 검색을 해 보니 한글이 깨지는 겁니다.
그래서 소스 파일을 마구 열어봤어요.
Python-MCP SDK 파일을 열어봤더니 이렇게 되어 있습니다.
async def stdio_server(
stdin: anyio.AsyncFile[str] | None = None,
stdout: anyio.AsyncFile[str] | None = None,
):
"""
Server transport for stdio: this communicates with an MCP client by reading
from the current process' stdin and writing to stdout.
"""
# Purposely not using context managers for these, as we don't want to close
# standard process handles. Encoding of stdin/stdout as text streams on
# python is platform-dependent (Windows is particularly problematic), so we
# re-wrap the underlying binary stream to ensure UTF-8.
if not stdin:
stdin = anyio.wrap_file(TextIOWrapper(sys.stdin.buffer, encoding="utf-8"))
if not stdout:
stdout = anyio.wrap_file(TextIOWrapper(sys.stdout.buffer, encoding="utf-8"))
분명 인코딩을 "utf-8"로 지정합니다.
Minima 소스도 열어봤어요.
async with mcp.server.stdio.stdio_server()
이러면 제대로 처리가 되야 하는 것 아닌가요.
그래서 주석을 봤더니
"python is platform-dependent (Windows is particularly problematic)"
라고 있는 겁니다. 제가 파이썬-윈도우 환경이거든요.
그래서 Minima에 강제로 인코딩을 utf-8로 뱌꿔줬습니다.
import sys
sys.stdin.reconfigure(encoding='utf-8')
sys.stdout.reconfigure(encoding='utf-8')
이제 될까 싶었더니, 이제는 깨지지는 않는데, 안에 분명히 있는 내용을 못 가져옵니다.
파일이 3천 라인이라서 그런가 싶어서, 파이썬 프로그램으로 파일을 300라인 쯤 되게 10개 정도로 분할했어요.
그랬더니 이제 검색이 됩니다. 타이칸 님의 프로젝트 사용법을 보고 저도 프로젝트로!
검색어만 입력하면 제 로컬의 카카오톡 대화 내역 저 파일을 검색해서 알려줍니다~😀
이제 제 카톡 내용을 검색할 수 있게 되었어요.
여기서 노션 MCP도 연동하고,
저 Minima의 결과를 받아서 저 안의 링크 중 중요한 것을 추출한 다음에
링크를 방문한 다음, 결과를 최종적으로 리포트로 만드는 MCP 서버를 개발했습니다.
그 결과는 노션에 넣었어요.
OpenAI Agents SDK에 MCP가 통합되어서 Agent에서 MCP 서버를 쓸 수 있습니다.
저 mcp_server는 Firecrawl 이에요. 링크 방문을 Firecrawl로 했습니다.
agent=Agent(
name="MCP Web Additional Search Server",
instructions="You create report from the information gotten from URL. The report should be in Koren. Use the tools to access information based on the provided URL.",
mcp_servers=[mcp_server]
)
실행 화면입니다. 역시 이것도 프로젝트로! 세상 간편하네요~^^
노션에 저장된 보고서입니다.
결과와 배운 점
Minima RAG란 MCP를 설치했는데, 파이썬-윈도우 환경에 인코딩 문제가 아주 컸습니다.
RAG MCP 서버에서 파일 크기가 크면 잘 동작하지 않았어요.
저 카톡 대화 내용 중에서 링크만 덜렁 있는 것들이 많아서
다음에는 그런 링크를 방문하면서 전처리를 해 두어야겠어요.
그래야 검색이 될 것 같습니다.