MCP 도구 vs 리소스 vs 프롬프트: 각각 누가 제어하나요?
MCP 도구는 모델이 호출하고, 리소스는 앱이 첨부하며, 프롬프트는 사용자가 고릅니다. 각각의 용도와 고르는 방법을 정리합니다.

MCP 도구는 모델이 호출 여부를 정하는 함수이고, 리소스는 애플리케이션이 컨텍스트로 첨부하는 읽기 전용 데이터이며, 프롬프트는 사용자가 슬래시 명령어 등으로 고르는 템플릿입니다. 차이는 누가 제어하느냐, 즉 모델이냐 애플리케이션이냐 사용자냐에 있습니다. 서버는 셋 중 무엇을 지원하는지 선언하며, 클라이언트는 서버가 선언한 것만 쓸 수 있습니다.
정의는 MCP 명세(2025-11-25 개정판)의 서버 개요, 도구, 리소스, 프롬프트 페이지와 MCP의 MCP 서버 이해하기 가이드에서 가져왔으며, 2026-09-28에 확인했습니다. Sume 쪽 내용은 MCP 도구와 게이트 페이지와 현재 서버 코드를 바탕으로 합니다. MCP가 처음이라면 MCP 서버란 무엇인가요?부터 읽어 보세요.
MCP 도구, 리소스, 프롬프트는 무엇이 다른가요?
명세는 이를 제어 계층으로 요약하며, 프리미티브마다 고유한 프로토콜 메서드가 있습니다.
| 프리미티브 | 제어 주체 | 설명 | 예시 | 메서드 |
|---|---|---|---|---|
| 도구 | 모델 | 작업을 수행하도록 LLM에 노출된 함수 | API POST 요청, 파일 쓰기, 항공편 검색 | tools/list, tools/call |
| 리소스 | 애플리케이션 | 클라이언트가 첨부하고 관리하는 컨텍스트 데이터 | 파일 내용, git 기록, 캘린더 | resources/list, resources/templates/list, resources/read |
| 프롬프트 | 사용자 | 사용자가 선택해 호출하는 대화형 템플릿 | 슬래시 명령어, 메뉴 옵션, "Plan a vacation" | prompts/list, prompts/get |
MCP 리소스란 무엇인가요?
서버가 컨텍스트로 공유하는 데이터입니다. 파일 내용, 데이터베이스 스키마, API 문서 등이 여기에 해당합니다. 리소스마다 file:///path/to/document.md 같은 고유 URI가 있고, 리소스는 자신의 MIME 타입을 선언합니다. 서버는 calendar://events/2024 같은 고정 리소스를 나열하거나, weather://forecast/{city}/{date}처럼 파라미터가 들어간 URI인 리소스 템플릿을 공개할 수 있습니다. 읽은 내용을 어떻게 쓸지는 애플리케이션이 정합니다. 관련 부분만 고르거나, 임베딩으로 검색하거나, 전부 모델에 넘길 수 있습니다.
도구로 만들어야 하나요, 리소스로 만들어야 하나요?
누가 실행을 시작해야 하는지, 그리고 무언가를 바꾸는지 따져 보세요. 작업 도중에 모델이 스스로 가져오거나 행동해야 한다면 도구로 만드세요. 도구는 데이터베이스에 쓰거나, 외부 API를 호출하거나, 파일을 수정할 수 있으며, 명세는 도구 호출을 거부할 수 있는 사람이 루프 안에 있기를 바랍니다. 앱이나 사용자가 포함하기로 고르는 컨텍스트이고 읽어도 아무것도 바뀌지 않는다면 리소스로 만드세요.
서버 하나가 셋을 모두 제공할 수도 있습니다. MCP 아키텍처 가이드는 데이터베이스 조회용 도구, 스키마를 담은 리소스, 도구 사용을 위한 퓨샷(few-shot) 예시가 담긴 프롬프트를 갖춘 데이터베이스 서버를 예로 듭니다.
도구 대신 프롬프트를 써야 할 때는 언제인가요?
사람이 워크플로를 시작해야 할 때입니다. 프롬프트는 사용자가 제어하며 명시적으로 호출해야 합니다. 클라이언트는 보통 프롬프트를 /plan-vacation 같은 슬래시 명령어, 명령 팔레트, 전용 버튼으로 제공합니다. 프롬프트는 사용자가 넣은 인수에 맞춰 구성된 구조화된 메시지와 지시를 모델에 전달하며, 서버의 도구와 리소스를 참조할 수 있습니다. 반면 도구는 모델이 자동으로 찾아 호출할 수 있습니다.
클라이언트는 서버가 무엇을 제공하는지 어떻게 아나요?
서버가 선언하는 기능(capabilities)으로 압니다. 명세에 따르면 도구, 리소스, 프롬프트를 지원하는 서버는 그 기능을 반드시 선언해야 하며, 명세의 수명 주기 페이지는 양쪽이 연결할 때 협상한 기능만 써야 한다고 말합니다. 예를 들어 MCP Inspector 웹 클라이언트는 서버가 알린 기능에 해당하는 Tools, Resources, Prompts 탭만 보여 줍니다. 클라이언트 지원 범위도 다릅니다. Cursor 문서는 도구, 프롬프트, 리소스를 지원한다고 적고 있지만, Android Studio 문서는 자사 MCP 연동이 MCP 리소스도 프롬프트 템플릿도 지원하지 않는다고 설명합니다.
Sume MCP 서버는 무엇을 노출하나요?
도구만 노출합니다. 현재 코드에서 Sume 호스팅 서버는 클라이언트가 연결할 때 tools 기능만 선언하며, resources/list나 prompts/list 같은 다른 요청에는 JSON-RPC 오류 -32601(메서드를 찾을 수 없음)을 반환합니다. 그래서 클라이언트의 리소스·프롬프트 선택기에는 Sume에 대해 보여 줄 것이 없습니다.
이 도구들은 jobs_list 같은 읽기 도구부터 generate_image 같은 유료 생성 도구까지 선별된 Sume API 기능을 감싸며, 언제 호출할지는 모델이 정합니다. 탐색조차 도구로 합니다. tools_list와 tools_schema가 세션에서 무엇을 호출할 수 있는지 보여 줍니다. Sume MCP 도구 목록이 이 도구들을 묶어 정리하고, 에이전트 스킬 vs MCP가 노하우 쪽을 다룹니다. Sume 기초 페이지는 호스팅 MCP가 여전히 동작하지만 현재 주 경로는 아니라고 설명합니다.
출처
- MCP 명세 2025-11-25: 서버 기능 개요 (2026-09-28 확인)
- MCP 명세 2025-11-25: 도구 (2026-09-28 확인)
- MCP 명세 2025-11-25: 리소스 (2026-09-28 확인)
- MCP 명세 2025-11-25: 프롬프트 (2026-09-28 확인)
- MCP 명세 2025-11-25: 수명 주기 (2026-09-28 확인)
- Model Context Protocol: MCP 서버 이해하기 (2026-09-28 확인)
- Model Context Protocol: 아키텍처 개요 (2026-09-28 확인)
- MCP Inspector: 웹 클라이언트 (2026-09-28 확인)
- Cursor 문서: Model Context Protocol(MCP) (2026-09-28 확인)
- Android Developers: MCP 서버 추가하기 (2026-09-28 확인)
- JSON-RPC 2.0 명세 (2026-09-28 확인)
- MCP 도구와 게이트
- MCP 빠른 시작
- Sume 기초
관련 글
개발자 카테고리의 다른 글
- Faststart MP4: moov atom을 파일 앞으로 옮기는 방법
faststart MP4는 인덱스인 moov atom이 파일 앞부분에 있는 MP4입니다. FFmpeg는 -movflags +faststart를 주면 두 번째 패스에서 인덱스를 앞으로 옮깁니다.
- Retry-After 헤더: 429·503 후 얼마나 기다려야 하나요?
Retry-After는 재시도 전에 얼마나 기다릴지 클라이언트에 알려 주는 헤더로, 초 단위 숫자나 HTTP 날짜이며 429나 503과 함께 옵니다. 읽는 법과 대응 방법을 정리했습니다.
- 재시도 가능한 HTTP 상태 코드: 어떤 오류를 재시도해야 하나요?
네트워크 오류, 408, 429, 5xx는 백오프하며 재시도하고, 그 밖의 4xx는 대부분 재시도하지 마세요. POST는 멱등성 키가 있을 때만 재시도하고, API의 재시도 플래그를 읽으세요.
- Java 음성 인식 API: HttpClient로 오디오를 텍스트로
JDK HttpClient와 Jackson으로 Java에서 음성 인식 API를 호출하세요. 오디오 URL을 POST하고 Job을 폴링한 뒤, 전사문과 단어별 시간을 읽습니다.
작성자 Sume