2024년 말, Anthropic이 발표한 Model Context Protocol (MCP)는 LLM(대형 언어 모델)과 외부 서비스(데이터베이스, 파일 시스템, API 등)를 표준 방식으로 연결하기 위한 오픈 프로토콜입니다. 기존에는 모델과 시스템을 1:1 또는 N:M 형태로 직접 연결해야 했지만, MCP를 통해 하나의 통신 규격만 정의하면 수십 개의 툴과 데이터를 유연하게 다룰 수 있습니다. (anthropic.com)
핵심 포인트:
- 메시지 포맷: JSON-RPC 2.0 (modelcontextprotocol.io)
- 전송 계층: HTTP, StdIO, SSE 등 (modelcontextprotocol.io)
- 버전 관리 & 기능 협상: 사양 내 Versioning & Capability Negotiation 섹션 지원 (modelcontextprotocol.io)
MCP는 세 가지 컴포넌트로 구성됩니다: Host, Client, Server. (modelcontextprotocol.io)
모든 MCP 메시지는 JSON-RPC 2.0 규격을 따릅니다. (modelcontextprotocol.io)
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"tool": "list_loki_label_names",
"args": { "datasourceUid": "abcd1234" }
}
}
{
"jsonrpc": "2.0",
"id": 1,
"result": ["service", "pod", "container", ...]
}
{
"jsonrpc": "2.0",
"id": 1,
"error": {
"code": -32601,
"message": "Method not found",
"data": null
}
}
{
"jsonrpc": "2.0",
"method": "notifications/tools/updated",
"params": { "tool": "promtail" }
}
MCP는 메시지 포맷과 별도로, 다양한 트랜스포트 방식을 지원합니다. (modelcontextprotocol.io)
방식 | 설명 | 예시 |
---|---|---|
HTTP | POST /rpc/v1 엔드포인트로 요청 전송 | curl -X POST http://.../rpc/v1 ... (modelcontextprotocol.io) |
StdIO | 로컬 프로세스 간 stdin/stdout 스트림 교환 | 로컬 데스크톱 앱(Claude Desktop) (anthropic.com) |
SSE | Server-Sent Events로 알림(Notification) 수신 | /rpc/v1/stream 구독 (modelcontextprotocol.io) |
아래 예시는 Loki 서버에서 라벨 목록을 조회하는 HTTP JSON-RPC 호출입니다.
curl -X POST http://localhost:8000/rpc/v1 \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 42,
"method": "list_loki_label_names",
"params": { "datasourceUid": "abcd1234" }
}'
응답 예시:
{
"jsonrpc": "2.0",
"id": 42,
"result": ["service", "pod", "container", "level", "namespace"]
}
Origin
헤더 검증, HTTPS 필수, 리소스별 권한 제어 (developers.cloudflare.com)MCP를 활용하면 LLM과 외부 시스템 간의 연결을 완전 표준화하여 개발 복잡도를 최소화하고, 보안·확장성까지 확보할 수 있습니다.