MCP(Model Context Protocol)는 Anthropic이 개발한 오픈 프로토콜로, LLM 애플리케이션과 외부 데이터 소스 및 도구 간의 표준화된 연결 방식을 제공합니다. 비유하자면 AI 애플리케이션을 위한 USB-C 포트와 같아서, 다양한 데이터 소스와 도구를 표준화된 방식으로 연결할 수 있게 해줍니다.
🏗️ 아키텍처
MCP는 Host-Client-Server 3계층 구조를 따릅니다:
| 구성 요소 | 설명 |
|---|---|
| MCP Host | Claude Desktop, VS Code, IDE 등 AI 애플리케이션 (여러 클라이언트 관리) |
| MCP Client | 각 서버와 1:1 연결을 유지하는 프로토콜 클라이언트 |
| MCP Server | 특정 기능(파일시스템, DB, API 등)을 제공하는 경량 프로그램 |
MCP Host (AI 애플리케이션)
├── MCP Client 1 ─── MCP Server A (로컬 파일시스템)
├── MCP Client 2 ─── MCP Server B (로컬 데이터베이스)
└── MCP Client 3 ─── MCP Server C (원격 Sentry API)
🧩 핵심 개념
1. 데이터 계층 (Data Layer)
JSON-RPC 2.0 기반의 메시지 교환 프로토콜입니다.
2. 서버 프리미티브 (Server Primitives)
| 프리미티브 | 설명 | 예시 |
|---|---|---|
| Tools | LLM이 호출할 수 있는 실행 가능한 함수 | 파일 검색, DB 쿼리, API 호출 |
| Resources | 읽기 전용 컨텍스트 데이터 | 문서 내용, DB 스키마, API 응답 |
| Prompts | 재사용 가능한 템플릿 | 시스템 프롬프트, Few-shot 예제 |
3. 클라이언트 프리미티브 (Client Primitives)
- Sampling: 서버가 호스트 LLM에 완성 요청
- Elicitation: 서버가 사용자에게 추가 정보 요청
- Logging: 디버깅 및 모니터링 로그
4. 전송 계층 (Transport Layer)
- Stdio Transport: 로컬 프로세스 간 통신 (표준 입출력)
- Streamable HTTP Transport: 원격 서버 통신 (HTTP POST + SSE)
🔄 동작 흐름 예시
- 초기화 (Initialize): 클라이언트-서버 간 capability 협상
- 도구 발견 (tools/list): 서버가 제공하는 도구 목록 조회
- 도구 실행 (tools/call): LLM이 특정 도구 호출
- 알림 (Notification): 서버가 실시간 변경 알림 전송
// tools/list 요청 예시
{
"jsonrpc": "2.0",
"id": 2,
"method": "tools/list"
}
🛠️ 주요 SDK 및 구현체
| 언어 | GitHub 저장소 |
|---|---|
| Python | modelcontextprotocol/python-sdk |
| TypeScript | modelcontextprotocol/typescript-sdk |
| Java | modelcontextprotocol/java-sdk |
| Go | modelcontextprotocol/go-sdk |
| Rust | modelcontextprotocol/rust-sdk |
Python 예제 (15줄 서버):
from mcp.server import MCPServer
mcp = MCPServer("Demo")
@mcp.tool()
def add(a: int, b: int) -> int:
"""Add two numbers."""
return a + b
📚 참고 자료
- 공식 문서: modelcontextprotocol.io
- GitHub: github.com/modelcontextprotocol
- Hugging Face MCP 코스: huggingface.co/learn/mcp-course
좌리공신 (佐理功臣)
좌리공신은 1471년(조선 성종 2년) 성종의 즉위를 도운 공로로 책봉된 조선의 공신입니다.
📜 개요
- 시기: 1471년(성종 2년) 3월
- 의미: '좌리(佐理)'는 "도와서 다스린다" 는 뜻
- 배경: 1469년 예종이 19세로 승하하자, 정희왕대비(수렴청정)가 5세의 원자 대신 잘산군(성종) 을 예종의 양자로 삼아 즉위시킴
- 명분: 성종을 보좌하여 인심이 안정되고 국가가 태평해진 공로
📋 등급 및 인원
| 등급 | 공신호 | 인원 | 대표 인물 |
|---|---|---|---|
| 1등 | 순성명량경제홍화좌리공신 (純誠明亮經濟弘化佐理功臣) | 9명 | 신숙주, 한명회, 최항, 홍윤성, 조석문, 정현조, 윤자운, 김국광, 권감 |
| 2등 | 순성명량경제좌리공신 (純誠明亮經濟佐理功臣) | 12명 | 정인지, 정창손, 심회, 구치관, 한계미, 한백륜 등 |
| 3등 | 순성명량좌리공신 (純誠明亮佐理功臣) | 18명 | 성봉조, 노사신, 강희맹, 서거정, 양성지, 한치형 등 |
| 4등 | 순성좌리공신 (純誠佐理功臣) | 36명 | 김수온, 이석형, 윤필상, 허종, 김길통, 이극돈 등 |
총 75명 (초기 74명 + 추록 1명)이 책봉되었습니다.
⚔️ 논란과 비판
좌리공신은 책봉 당시부터 격렬한 반대에 부딪혔습니다:
- 명분 부족: 특별한 전쟁이나 반란 진압 같은 큰 사건 없이 책봉됨
- 과도한 규모: 세종 때도 없던 공신을 70여 명이나 책봉
- 훈구파 비대화: 세조 이래 누적된 공신들이 훈구파로 변질되어 특권층 형성
반대 상소 내용 (사헌부·사간원):
"개국 이래 7번의 공신 책록은 모두 화란을 평정하고 종사를 보위한 공이 있었는데, 지금은 기근이 심해 유리하는 백성이 많으니 대신들이 좌리한 공이 없다"
🏛️ 역사적 의의
- 훈구파(勳舊派) 의 핵심 세력 형성
- 이후 사림파(士林派)와의 갈등 심화의 배경
- 공신 제도의 남발로 인한 폐해를 보여주는 사례
- 성종의 즉위 과정에서 정희왕대비와 훈신들의 정치적 역할을 반영
🏺 문화재
- 김길통 좌리공신교서 (보물 제716호): 1472년 발급, 충북대학교박물관 소장
- 이숭원 좌리공신교서: 함께 전해지는 중요한 유물