벡터 데이터베이스 관리를 위한 GUI 인터페이스

LangConnect Client는 pgvector 확장이 포함된 PostgreSQL로 구동되는 벡터 데이터베이스 관리를 위한 현대적인 Next.js 기반 GUI 인터페이스입니다. 문서 관리, 벡터 검색 기능, 그리고 Model Context Protocol (MCP)을 통한 AI 어시스턴트와의 원활한 통합을 위한 직관적인 웹 인터페이스를 제공합니다.
이 프로젝트는 langchain-ai/langconnect에서 영감을 받았습니다.

인증 시스템은 안전한 토큰 갱신 메커니즘을 구현합니다:
┌─────────────┐ ┌──────────────┐ ┌───────────┐
│ Browser │────▶│ NextAuth │────▶│ Supabase │
│ │◀────│ (JWT) │◀────│ Auth │
└─────────────┘ └──────────────┘ └───────────┘
│ │
│ httpOnly 쿠키 │ 리프레시 토큰
│ (암호화된 JWT) │ JWT에 저장됨
│ │
▼ ▼
클라이언트에는 액세스 토큰 만료 시
accessToken만 노출 자동 갱신
주요 보안 기능: - 리프레시 토큰은 클라이언트에 절대 노출되지 않음 - 액세스 토큰 만료 시 자동 토큰 갱신 - 보안 강화를 위한 갱신 시 토큰 로테이션 - httpOnly 쿠키에 암호화된 JWT 저장
# 클론 및 설정
git clone https://github.com/teddynote-lab/langconnect-client.git
cd langconnect-client
cp .env.example .env
# 자격 증명으로 .env 편집 후:
make build # Docker 이미지 빌드
make up # 모든 서비스 시작
MCP 설정
make mcp
서버 중지
make down
저장소 클론
bash
git clone https://github.com/teddynote-lab/langconnect-client.git
cd langconnect-client
환경 변수 설정
bash
cp .env.example .env
Supabase 구성
a. supabase.com에서 새 프로젝트 생성
b. API 자격 증명 가져오기:
- Project Settings → API로 이동
- URL 및 anon public 키 복사
c. .env 파일 업데이트:
env
SUPABASE_URL=https://your-project.supabase.co
SUPABASE_KEY=your-anon-public-key
bash
make build모든 서비스 시작
bash
make up
서비스 액세스
🔍 상태 확인: http://localhost:8080/health
서비스 중지
bash
make down
로그 보기
bash
make logs
bash
make mcp이 명령은 다음을 수행합니다:
- Supabase 자격 증명 입력 요청
- 자동으로 액세스 토큰 획득
- 토큰으로 .env 업데이트
- mcpserver/mcp_config.json 생성
Claude Desktop용:
- mcpserver/mcp_config.json의 내용 복사
- Claude Desktop의 MCP 설정에 붙여넣기
Cursor용: - MCP 구성 복사 - MCP 통합 하에 Cursor 설정에 추가
search_documents - 의미적/키워드/하이브리드 검색 수행list_collections - 모든 컬렉션 목록 조회get_collection - 컬렉션 상세 정보 가져오기create_collection - 새 컬렉션 생성delete_collection - 컬렉션 삭제list_documents - 컬렉션의 문서 목록 조회add_documents - 텍스트 문서 추가delete_document - 문서 삭제get_health_status - API 상태 확인multi_query - 단일 질문에서 여러 검색 쿼리 생성다음은 Claude Desktop에서 사용할 수 있는 RAG 프롬프트 예시입니다.
You are a question-answer assistant based on given document.
You must use MCP tool(`langconnect-rag-mcp`) to answer the question.
#Search Configuration:
- Target Collection: (user's request, default value: RAG)
- Search Type: hybrid(preferred)
- Search Limit: 5(default)
#Search Guidelines:
Follow the guidelines step-by-step to find the answer.
1. Use `list_collections` to list up collections and find right **Collection ID** for user's request.
2. Use `multi_query` to generate at least 3 sub-questions which are related to original user's request.
3. Search all queries generated from previous step(`multi_query`) and find useful documents from collection.
4. Use searched documents to answer the question.
---
## Format:
(answer to the question)
**Source**
- [1] (Source and page numbers)
- [2] (Source and page numbers)
- ...
---
[Note]
- Answer in same language as user's request
- Append sources that you've referenced at the very end of your answer.
- If you can't find your answer from <search_results>, just say you can't find any relevant source to answer the question without any narrative sentences.
# 편리한 런처 스크립트 사용
./run_mcp_sse.sh
이 스크립트는 다음을 수행합니다: - 모든 요구사항 확인 (uv, .env 파일) - API 서버 실행 여부 확인 - 자동 인증으로 MCP SSE 서버 시작
# 또는 직접 실행
uv run python mcpserver/mcp_sse_server.py
서버에는 이제 자동 인증이 포함됩니다:
- 시작 시 기존 토큰 유효성 테스트
- 토큰이 만료되거나 없는 경우 로그인 요청
- 새 토큰으로 .env 자동 업데이트
- 포트 8765에서 SSE 서버 시작
# MCP Inspector로 테스트
npx @modelcontextprotocol/inspector
Inspector에서:
1. 전송 유형으로 "SSE" 선택
2. URL로 http://localhost:8765/sse 입력
3. 연결하고 사용 가능한 도구 테스트
| 변수 | 설명 | 필수 |
|---|---|---|
OPENAI_API_KEY |
임베딩용 OpenAI API 키 | 예 |
SUPABASE_URL |
Supabase 프로젝트 URL | 예 |
SUPABASE_KEY |
Supabase anon public 키 | 예 |
NEXTAUTH_SECRET |
NextAuth.js 시크릿 키 | 예 |
NEXTAUTH_URL |
NextAuth URL (기본값: http://localhost:3000) | 예 |
NEXT_PUBLIC_API_URL |
프론트엔드용 공용 API URL | 예 |
POSTGRES_HOST |
PostgreSQL 호스트 (기본값: postgres) | 아니오 |
POSTGRES_PORT |
PostgreSQL 포트 (기본값: 5432) | 아니오 |
POSTGRES_USER |
PostgreSQL 사용자 (기본값: teddynote) | 아니오 |
POSTGRES_PASSWORD |
PostgreSQL 비밀번호 | 아니오 |
POSTGRES_DB |
PostgreSQL 데이터베이스 이름 | 아니오 |
SSE_PORT |
MCP SSE 서버 포트 (기본값: 8765) | 아니오 |
|
|
|
|
주요 기여
|
이 프로젝트는 MIT 라이선스에 따라 라이선스가 부여됩니다 - 자세한 내용은 LICENSE 파일을 참조하세요.
TeddyNote LAB에서 ❤️로 만들어졌습니다
$ claude mcp add langconnect-client \
-- python -m otcore.mcp_server <graph>