CPN 한국어 자습서 · 외부 문서 한국어 미러
MCP 문서 · Learn
Understanding MCP servers · 원문: modelcontextprotocol.io/docs/learn/server-concepts
아래는 원문을 한국어로 옮긴 미러입니다. 코드·명령은 원문 그대로이며, 가장 최신 정보는 하단 원문 링크에서 확인하세요.
MCP 서버는 표준화된 프로토콜 인터페이스를 통해 AI 애플리케이션에 특정 기능을 노출하는 프로그램입니다.
일반적인 예로는 문서 접근을 위한 파일 시스템 서버, 데이터 쿼리를 위한 데이터베이스 서버, 코드 관리를 위한 GitHub 서버, 팀 커뮤니케이션을 위한 Slack 서버, 일정 관리를 위한 캘린더 서버 등이 있습니다.
서버는 세 가지 구성 요소를 통해 기능을 제공합니다:
| 기능 | 설명 | 예시 | 제어 주체 |
|---|---|---|---|
| 도구(Tools) | LLM이 사용자 요청에 따라 언제 사용할지 결정하여 능동적으로 호출하는 함수. 데이터베이스 쓰기, 외부 API 호출, 파일 수정 등을 수행할 수 있습니다. | 항공편 검색 메시지 전송 캘린더 이벤트 생성 |
모델 |
| 리소스(Resources) | 파일 내용, 데이터베이스 스키마, API 문서 같은 정보에 읽기 전용 접근을 제공하는 수동적 데이터 소스. | 문서 조회 지식 베이스 접근 캘린더 읽기 |
애플리케이션 |
| 프롬프트(Prompts) | 모델이 특정 도구와 리소스를 활용하도록 안내하는 사전 구축된 명령 템플릿. | 여행 계획 미팅 요약 이메일 초안 작성 |
사용자 |
도구는 AI 모델이 작업을 수행할 수 있게 합니다. 각 도구는 타입이 있는 입력과 출력으로 특정 작업을 정의합니다. 모델은 컨텍스트에 따라 도구 실행을 요청합니다.
도구는 LLM이 호출할 수 있는 스키마(schema) 정의 인터페이스입니다. MCP는 검증에 JSON Schema를 사용합니다. 각 도구는 명확하게 정의된 입력과 출력으로 단일 작업을 수행합니다. 도구는 실행 전에 사용자 동의가 필요할 수 있습니다.
프로토콜 작업:
| 메서드 | 목적 | 반환값 |
|---|---|---|
tools/list |
사용 가능한 도구 탐색 | 스키마가 포함된 도구 정의 배열 |
tools/call |
특정 도구 실행 | 도구 실행 결과 |
도구 정의 예시:
{
name: "searchFlights",
description: "Search for available flights",
inputSchema: {
type: "object",
properties: {
origin: { type: "string", description: "Departure city" },
destination: { type: "string", description: "Arrival city" },
date: { type: "string", format: "date", description: "Travel date" }
},
required: ["origin", "destination", "date"]
}
}
항공편 검색
searchFlights(origin: "NYC", destination: "Barcelona", date: "2024-06-15")
여러 항공사를 조회하고 구조화된 항공편 옵션을 반환합니다.
캘린더 차단
createCalendarEvent(title: "Barcelona Trip", startDate: "2024-06-15", endDate: "2024-06-22")
사용자 캘린더에 여행 날짜를 표시합니다.
이메일 알림
sendEmail(to: "team@work.com", subject: "Out of Office", body: "...")
동료에게 부재 중 자동 메시지를 전송합니다.
도구는 모델이 제어하므로, AI 모델이 자동으로 도구를 탐색하고 호출할 수 있습니다. MCP는 다음과 같은 여러 메커니즘을 통해 사람의 감독을 강조합니다:
리소스는 AI 애플리케이션이 조회하여 모델에 컨텍스트로 제공할 수 있는 정보에 구조화된 접근을 제공합니다.
리소스는 파일, API, 데이터베이스 또는 기타 소스에서 데이터를 노출합니다. 각 리소스는 고유한 URI(예: file:///path/to/document.md)를 가지며 MIME 타입을 선언합니다.
리소스는 두 가지 탐색 패턴을 지원합니다:
calendar://events/2024travel://activities/{city}/{category}프로토콜 작업:
| 메서드 | 목적 | 반환값 |
|---|---|---|
resources/list |
직접 리소스 목록 조회 | 리소스 디스크립터 배열 |
resources/templates/list |
리소스 템플릿 탐색 | 리소스 템플릿 정의 배열 |
resources/read |
리소스 내용 조회 | 메타데이터가 포함된 리소스 데이터 |
resources/subscribe |
리소스 변경 모니터링 | 구독 확인 |
calendar://events/2024) — 사용자 가용성 확인file:///Documents/Travel/passport.pdf) — 중요 서류 접근trips://history/barcelona-2023) — 과거 여행 및 선호도 참조리소스 템플릿 예시:
{
"uriTemplate": "weather://forecast/{city}/{date}",
"name": "weather-forecast",
"title": "Weather Forecast",
"description": "Get weather forecast for any city and date",
"mimeType": "application/json"
}
{
"uriTemplate": "travel://flights/{origin}/{destination}",
"name": "flight-search",
"title": "Flight Search",
"description": "Search available flights between cities",
"mimeType": "application/json"
}
동적 리소스는 파라미터 완성을 지원합니다. 예를 들어:
weather://forecast/{city}에서 "Par"을 입력하면 "Paris" 또는 "Park City"를 제안할 수 있습니다.flights://search/{airport}에서 "JFK"를 입력하면 "JFK - John F. Kennedy International"을 제안할 수 있습니다.일반적인 상호작용 패턴은 다음과 같습니다:
프롬프트는 재사용 가능한 템플릿을 제공합니다. MCP 서버 개발자는 도메인에 맞는 파라미터화된 프롬프트를 제공하거나 MCP 서버를 최적으로 활용하는 방법을 보여 줄 수 있습니다.
프롬프트는 예상 입력과 상호작용 패턴을 정의하는 구조화된 템플릿입니다. 자동으로 트리거되는 것이 아니라 명시적인 호출이 필요한 사용자 제어 방식입니다. 프롬프트는 사용 가능한 리소스와 도구를 참조하여 컨텍스트를 인식할 수 있습니다. 리소스와 마찬가지로 프롬프트도 파라미터 완성을 지원합니다.
프로토콜 작업:
| 메서드 | 목적 | 반환값 |
|---|---|---|
prompts/list |
사용 가능한 프롬프트 탐색 | 프롬프트 디스크립터 배열 |
prompts/get |
프롬프트 세부 정보 조회 | 인자가 포함된 전체 프롬프트 정의 |
"여행 계획" 프롬프트:
{
"name": "plan-vacation",
"title": "Plan a vacation",
"description": "Guide through vacation planning process",
"arguments": [
{ "name": "destination", "type": "string", "required": true },
{ "name": "duration", "type": "number", "description": "days" },
{ "name": "budget", "type": "number", "required": false },
{ "name": "interests", "type": "array", "items": { "type": "string" } }
]
}
프롬프트는 사용자가 제어합니다. 애플리케이션은 일반적으로 다음 방법으로 프롬프트를 노출합니다:
여러 서버가 통합 인터페이스를 통해 각자의 전문 기능을 결합할 때 MCP의 진정한 강점이 나타납니다.
세 개의 서버가 연결된 개인화된 AI 여행 플래너 애플리케이션을 생각해 봅니다:
json
{
"prompt": "plan-vacation",
"arguments": {
"destination": "Barcelona",
"departure_date": "2024-06-15",
"return_date": "2024-06-22",
"budget": 3000,
"travelers": 2
}
}
사용자가 포함할 리소스를 선택합니다:
* calendar://my-calendar/June-2024 (캘린더 서버에서)
* travel://preferences/europe (여행 서버에서)
* travel://past-trips/Spain-2023 (여행 서버에서)
AI가 도구를 사용해 요청을 처리합니다:
AI는 먼저 선택된 모든 리소스를 읽어 컨텍스트를 수집합니다. 그런 다음 일련의 도구를 실행합니다:
searchFlights() — 뉴욕에서 바르셀로나로 가는 항공편 조회checkWeather() — 여행 날짜의 기후 예보 조회bookHotel() — 지정된 예산 내의 호텔 검색createCalendarEvent() — 사용자 캘린더에 여행 추가sendEmail() — 여행 세부 정보가 포함된 확인 이메일 전송결과: 여러 MCP 서버를 통해 사용자는 자신의 일정에 맞는 바르셀로나 여행을 조사하고 예약했습니다. MCP를 사용하면 몇 시간이 걸릴 수 있는 작업을 몇 분 안에 완료할 수 있습니다.
원문(영어): https://modelcontextprotocol.io/docs/learn/server-concepts · 본 문서는 학습용 한국어 번역이며 원본의 권리는 원저작자(Model Context Protocol)에게 있습니다.
원문(영어): https://modelcontextprotocol.io/docs/learn/server-concepts