피드로 돌아가기
Dev.toAI/ML
원문 읽기
MCP 기반 pgvector 서버 구축을 통한 도구 재사용성 극대화
Building a RAG System from Scratch — MCP: Exposing pgvector as a Reusable Tool Server
AI 요약
Context
Python 스크립트 내 Hardcoded된 Tool 정의로 인한 특정 클라이언트 종속성 발생. 도구의 접근 권한이 개별 코드에 묶여 있어 다양한 LLM 클라이언트 간 공유 및 재사용이 불가능한 구조적 한계 직면.
Technical Solution
- FastMCP 프레임워크를 도입하여 Tool 정의를 Standalone Server 형태로 분리한 아키텍처 설계
- MCP의 Three Primitives(Tools, Resources, Prompts)를 활용한 기능별 데이터 접근 계층 구조화
- @mcp.tool 데코레이터를 통해 Type Hint 기반의 스키마 자동 생성 및 LLM으로의 동적 도구 노출 구현
- pgvector의 Vector Similarity Search를 쿼리 인터페이스로 캡슐화하여 검색 로직의 추상화 달성
- stdio transport 방식을 통한 Claude Desktop 등 외부 LLM 클라이언트와의 표준 프로토콜 통신 체계 구축
- Embedding 모델(gemini-embedding-001)과 pgvector DB를 서버 내부에 응집시켜 클라이언트로부터 로직 은닉
실천 포인트
1. Tool Definition이 여러 프로젝트에서 중복되는지 확인하고 MCP 서버 전환 검토
2. FastMCP의 Type Hint를 활용하여 LLM이 이해할 수 있는 정확한 Tool Schema 생성
3. 데이터 성격에 따라 Tools(함수 실행), Resources(읽기 전용 데이터), Prompts(템플릿)로 구분하여 설계
4. 클라이언트 환경(예: Claude Desktop)의 Transport 지원 방식(stdio vs HTTP) 사전 확인