2025-09-23
ChatGPT MCP 서버 구축
MCP란?
- Model Context Protocol (MCP): AI 모델을 외부 데이터 소스/도구와 연결하기 위한 표준 프로토콜.
- ChatGPT 커넥터(Connectors), Deep Research, API 통합에 활용 가능.
- 원격 MCP 서버를 만들어 사설 데이터 소스(예: 벡터스토어)와 연결 가능.
기본 흐름
- 데이터 소스 준비
- 벡터스토어(Vector Store) 예시: PDF 업로드 → 문서 임베딩 저장.
- OpenAI 대시보드나 API로 생성 가능.
- 벡터스토어 ID 필요.
- MCP 서버 구축
- Python + FastMCP 프레임워크 활용.
- 서버는 최소 두 가지 도구를 구현해야 함:
search: 쿼리 기반 검색fetch: 문서 전체 내용 조회
search 도구
- 입력: 검색어(query)
- 출력: 결과 리스트 (id, title, url 포함)
- 반환 형식(JSON-encoded text):
{
"content": [
{
"type": "text",
"text": "{\"results\":[{\"id\":\"doc-1\",\"title\":\"...\",\"url\":\"...\"}]}"
}
]
}
fetch 도구
- 입력: 문서 ID
- 출력: 문서 전체 정보 (id, title, text, url, metadata)
- 반환 형식(JSON-encoded text):
{
"content": [
{
"type": "text",
"text": "{\"id\":\"doc-1\",\"title\":\"...\",\"text\":\"full text...\",\"url\":\"https://example.com/doc\",\"metadata\":{\"source\":\"vector_store\"}}"
}
]
}
서버 실행 예시
- 환경 변수 필요:
OPENAI_API_KEYVECTOR_STORE_ID
- Replit에서 실행 가능 → URL 끝은 반드시
/sse/여야 함. -
예:
https://xxxxxxx.replit.dev/sse/
연결 방법
- ChatGPT 설정 → 커넥터 탭에서 서버 추가.
- Deep Research / Use Connectors 도구에서 활용 가능.
- API 테스트:
curl로responsesAPI 호출 시tools에 MCP 서버 등록.
인증/보안
- OAuth + Dynamic Client Registration 권장.
- MCP 서버는 외부 애플리케이션에 데이터를 노출할 수 있으므로 주의 필요.
- 공격 위험:
- Prompt Injection → 데이터 유출(exfiltration)
- 악성 서버를 통한 민감 정보 탈취
- Write Action 오남용 → 잘못된 동작 발생 가능
안전 수칙
- 신뢰할 수 있는 서버만 연결 (예: Stripe 공식 MCP 서버).
- 민감 데이터는 JSON 응답에 포함하지 말 것.
- MCP 서버 코드 작성 시 의도치 않은 명령 수행을 막기 위해 Prompt Injection 방어 필요.