MCP 서버 아키텍처: Render + Vercel 조합으로 AI 플랫폼 연동하기
들어가며
MCP(Model Context Protocol) 서버를 만들었다면, 다음 단계는 Claude나 ChatGPT 같은 AI 플랫폼에 연결하는 것이다. 하지만 여기서 많은 개발자들이 혼란을 겪는다. "MCP 서버"와 "실제 비즈니스 로직을 처리하는 API 서버"는 다른 역할을 하기 때문이다.
이 글에서는 Render에 MCP 서버를, Vercel에 REST API를 배포한 실제 구조를 정리한다.
전체 아키텍처 개요
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ AI 클라이언트 │ │ MCP Server │ │ REST API │
│ (Claude/GPT) │◄────►│ (Render) │◄────►│ (Vercel) │
│ │ SSE │ 프로토콜 변환 │ HTTP │ 비즈니스 로직 │
└─────────────────┘ └─────────────────┘ └─────────────────┘
각 컴포넌트의 역할
| 역할 | AI 플랫폼과의 통신 프로토콜 처리 | 실제 기능 수행 (번역, 조회 등) |
| 통신 방식 | HTTP+SSE (MCP 프로토콜) | 일반 REST API (JSON) |
| 엔드포인트 | /sse, /messages | /api/translate, /api/xxx |
| 상태 관리 | 세션 기반 연결 유지 | Stateless |
| 배포 이유 | SSE 영구 연결 필요 → 서버 필요 | Serverless로 충분 |
| 비용 | Render Free tier | Vercel Free tier |
왜 서버를 분리했는가?
1. MCP 서버는 SSE 연결이 필수
HTTP+SSE 스펙(2024-11-05)은 클라이언트와 서버 간 영구 연결(persistent connection)을 요구한다. Vercel 같은 Serverless 환경은 요청-응답 후 즉시 종료되므로 SSE를 유지할 수 없다.
2. 비즈니스 로직은 Serverless가 효율적
번역 API나 데이터 조회 같은 작업은 요청이 올 때만 실행하면 된다. Vercel의 Edge Function으로 처리하면 cold start도 빠르고 비용도 절감된다.
3. 관심사의 분리
MCP 서버는 "AI 플랫폼과 어떻게 대화할 것인가"에만 집중하고, REST API는 "무엇을 할 것인가"에 집중한다. 이렇게 분리하면 MCP 스펙이 변경되어도 비즈니스 로직은 영향받지 않는다.
실제 통신 흐름
1. 사용자가 Claude에서 "이 자막 번역해줘" 요청
2. Claude → MCP Server (Render)
GET /sse (SSE 연결 수립)
POST /messages (도구 호출 요청)
3. MCP Server → REST API (Vercel)
POST /api/translate
Body: { "text": "...", "targetLang": "ko" }
4. REST API → MCP Server
Response: { "translated": "..." }
5. MCP Server → Claude
SSE 이벤트로 결과 전송
6. Claude가 사용자에게 번역 결과 표시
Render 설정
render.yaml 파일에 다음과 같이 기술해준다.
호출할 Rest API 의 값은 환경변수로 따로 등록해준다.

플랫폼별 MCP 서버 연결 설정
| Claude | https://your-app.onrender.com/sse | Settings → MCP Servers |
| ChatGPT | https://your-app.onrender.com/sse | Actions → Add Action |
* PlayMCP 는 Streamable HTTP 을 사용하므로 다음 장에 기술한다.

MCP Server의 핵심 엔드포인트
| /sse | GET | SSE 연결 수립, 서버→클라이언트 이벤트 스트림 |
| /messages | POST | 클라이언트→서버 JSON-RPC 메시지 전송 |
| /health | GET | 헬스체크 (선택사항) |

마치며
MCP 서버를 만드는 것보다 실제로 배포하고 연결하는 과정이 더 까다로웠다. 특히 "왜 Vercel에 바로 올리면 안 되는지"를 이해하는 데 시간이 걸렸다.
핵심은 이것이다:
- MCP Server = AI와 대화하는 "통역사"
- REST API = 실제 일을 하는 "실무자"
이 두 역할을 분리하면 각각 최적의 플랫폼에 배포할 수 있고, 유지보수도 훨씬 수월해진다.
'Tech Notes' 카테고리의 다른 글
| [PROMPT] 작은 프로젝트 (0) | 2026.01.16 |
|---|---|
| Remote MCP 연결 방식: 2) Streamable HTTP (0) | 2026.01.13 |
| MCP 의 연결방식 (0) | 2026.01.13 |
| MCP Server 만들기 (0) | 2026.01.12 |
| uv: Python 개발자라면 지금 바로 설치해야 할 차세대 패키지 매니저 (0) | 2026.01.12 |