피드로 돌아가기
Building a RAG System from Scratch — MCP: Exposing pgvector as a Reusable Tool Server
Dev.toDev.to
AI/ML

MCP 기반 pgvector 서버 구축을 통한 도구 재사용성 극대화

Building a RAG System from Scratch — MCP: Exposing pgvector as a Reusable Tool Server

Hiroki Kameyama2026년 6월 27일11intermediate

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) 사전 확인

원문 읽기