차세대 LLM 도구 연동 표준: Model Context Protocol(MCP) 아키텍처와 서버 구축 가이드
Anthropic 주도의 개방형 표준 MCP의 작동 원리, JSON-RPC 2.0 기반 클라이언트-서버 통신, 기업 인하우스 데이터 소스 연동 실전.
서론: 파편화된 AI 도구 연동 생태계의 단일화
과거에는 LLM이 외부 도구와 통신하기 위해 각 플랫폼마다 독자적인 Function Calling 규격을 구현해야 했습니다. OpenAI Assistant API, LangChain 툴킷, LlamaIndex 플러그인 등 제각각인 규격으로 인해 데이터 파이프라인의 재사용성이 심각하게 떨어졌습니다.
2024년 말 Anthropic이 제안하고 오픈소스로 공개한 **Model Context Protocol(MCP)**은 이러한 문제를 일거에 해결하며 **‘AI 애플리케이션의 USB-C 포트’**로 자리매김했습니다.
본 기술 문서에서는 MCP의 핵심 3대 원시 타입(Primitives)과 아키텍처 토폴로지, 그리고 사내 PostgreSQL 데이터베이스를 연동하는 커스텀 MCP 서버 구축법을 다룹니다.
1. MCP 3계층 아키텍처 토폴로지
MCP는 엄격한 클라이언트-서버 분리 모델을 채택하고 있으며, 표준 전송 계층(Stdio 또는 Server-Sent Events)을 통해 통신합니다.
[Host Application] (e.g. Claude Desktop, Cursor, IDE)
│
▼ (Internal Controller)
[MCP Client]
│ (JSON-RPC 2.0 via Stdio / SSE)
▼
[MCP Server] ──> [Local Files / PostgreSQL / GitHub API / Slack]
- MCP Host: 사용자가 상호작용하는 최종 프론트엔드 환경.
- MCP Client: Host 내에서 실행되며 서버와의 1:1 세션 및 프로토콜 핸드셰이크를 관리.
- MCP Server: 외부 데이터베이스나 API에 대한 권한을 캡슐화하여 표준화된 인터페이스로 노출하는 독립 프로세스.
2. MCP가 제공하는 3대 핵심 프로토콜 원시 타입
| 원시 타입 (Primitive) | 제어 주체 | 동작 특성 및 실무 활용처 |
|---|---|---|
| Resources (리소스) | 애플리케이션 주도 (App-driven) | 파일 내용이나 DB 레코드 같은 정적·준정적 컨텍스트 데이터. 모델이 수동적으로 읽기(Read-only) 수행. |
| Prompts (프롬프트) | 사용자 주도 (User-driven) | 자주 쓰이는 질의 양식과 워크플로우 템플릿 사전 정의. 슬래시 커맨드 형태로 노출. |
| Tools (도구) | 모델 주도 (Model-driven) | LLM이 추론 과정에서 직접 호출하여 부수 효과(Side-effect)를 발생시키는 함수(계산, DB 쓰기, 알림 발송). |
3. TypeScript 기반 초간단 MCP 서버 구현 예시
다음은 사내 데이터베이스의 주문 내역을 LLM에 안전하게 제공하는 표준 MCP 서버 보일러플레이트입니다.
import { Server } from "@modelcontextprotocol/sdk/server/index.js";
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
import { CallToolRequestSchema, ListToolsRequestSchema } from "@modelcontextprotocol/sdk/types.js";
const server = new Server({
name: "dtsq-analytics-server",
version: "1.0.0"
}, {
capabilities: { tools: {} }
});
// 1. 도구 목록 등록
server.setRequestHandler(ListToolsRequestSchema, async () => ({
tools: [{
name: "query_order_metrics",
description: "특정 날짜 범위의 총 매출 및 활성 주문 건수를 조회합니다.",
inputSchema: {
type: "object",
properties: {
startDate: { type: "string", description: "YYYY-MM-DD" },
endDate: { type: "string", description: "YYYY-MM-DD" }
},
required: ["startDate", "endDate"]
}
}]
}));
// 2. 도구 실행 핸들러
server.setRequestHandler(CallToolRequestSchema, async (request) => {
if (request.params.name === "query_order_metrics") {
const { startDate, endDate } = request.params.arguments as any;
// 사내 DB 쿼리 실행 로직
return {
content: [{ type: "text", text: JSON.stringify({ revenue: 45000000, orders: 1240 }) }]
};
}
throw new Error("Tool not found");
});
const transport = new StdioServerTransport();
await server.connect(transport);
결론: 표준화가 가져올 엔터프라이즈 AI의 가속도
MCP의 등장은 기업 내부 시스템과 AI 모델 간의 결합도를 낮추고 이식성을 극대화했습니다. 한 번 작성한 MCP 서버는 Claude뿐만 아니라 Cursor, 오픈소스 에이전트 프레임워크 어디에서든 수정 없이 즉시 재사용할 수 있습니다.
도구 연동의 복잡성을 프로토콜 레벨에서 추상화하는 것, 이것이 현대 AI 플랫폼 엔지니어링의 표준입니다.
DeltaSquared AI Research Lab
Verified ContributorDeltaSquared Research Lab의 전문 분석 데스크입니다. 데이터 과학, 퀀트 알고리즘, 분산 시스템 및 글로벌 거시경제 지표를 바탕으로 실무 검증형 콘텐츠를 연구하고 기고합니다.