이 글은 MCP 서버가 실행 중이고, JSON-RPC 요청을 보낼 클라이언트가 준비되어 있다고 가정합니다. MCP는 AI 애플리케이션과 외부 기능·데이터를 연결하기 위한 프로토콜이며, REST API와 달리 JSON-RPC 기반의 도구·리소스·프롬프트 인터페이스를 제공합니다.
목차
Tools·Resources·Prompts의 역할
Tools는 외부 동작을 실행하는 기능입니다. 파일 저장, 데이터 조회, 주문 요청처럼 상태를 바꾸거나 계산을 수행할 때 사용하며, 모델은 도구 이름과 입력 스키마를 보고 호출 인자를 구성합니다.
Resources는 읽을 수 있는 정보에 해당합니다. 문서, 설정, 데이터베이스 조회 결과 등을 URI로 식별해 제공하므로, 일반적으로 “무엇을 실행할까?”보다 “어떤 자료를 참고할까?”에 적합합니다. Prompts는 재사용 가능한 작업 지침과 인자를 묶은 템플릿으로, 같은 형식의 요약이나 분석 요청을 쉽게 구성합니다.
셋 중 무엇을 쓸지 헷갈린다면 ‘상태를 바꾸는가’와 ‘누가 형식을 정하는가’로 나눠보면 됩니다. 조회만 하고 아무것도 바꾸지 않으면 Resources, 실행해서 결과나 상태가 바뀌면 Tools, 매번 같은 틀로 반복되는 요청이라 템플릿을 미리 정해두고 싶다면 Prompts입니다.
MCP JSON-RPC 메서드와 REST 엔드포인트 비교
MCP는 JSON-RPC 2.0 메시지 안에 method와 params를 넣습니다. 2026-07-28 사양에서는 기존의 initialize·initialized 교환과 Mcp-Session-Id가 폐기됐습니다. 대신 요청마다 프로토콜 버전과 클라이언트 정보를 전달할 수 있으며, 서버 기능을 사전에 확인하려면 server/discover를 사용합니다.
| 비교 항목 | MCP JSON-RPC | 일반 REST API |
|---|---|---|
| 기능 목록 | tools/list |
GET /tools |
| 기능 실행 | tools/call |
POST /tools/{name} |
| 자료 목록 | resources/list |
GET /resources |
| 자료 읽기 | resources/read |
GET /resources/{id} |
| 프롬프트 목록 | prompts/list |
GET /prompts |
| 프롬프트 조회 | prompts/get |
GET /prompts/{name} |
표의 REST 경로는 개념적인 대응 예시입니다. MCP 서버의 실제 전송 방식과 URL은 구현에 따라 달라지며, MCP 메서드가 REST 엔드포인트로 자동 변환되는 것은 아닙니다.
스키마·URI·인자 설계
도구는 inputSchema에 JSON Schema를 넣어 입력 형식을 설명합니다. 예를 들어 검색 도구라면 query를 필수 문자열로 선언해야 클라이언트가 누락이나 잘못된 타입을 줄일 수 있습니다.
리소스는 uri가 식별자 역할을 합니다. file:///docs/guide.md처럼 자료를 식별하는 URI를 사용하고 resources/read의 params.uri로 읽습니다. 동적으로 URI를 구성할 수 있는 리소스는 Resource Template으로 정의할 수 있으며 resources/templates/list로 조회합니다. 프롬프트는 prompts/get에 name과 arguments를 전달하며, 인자 이름은 프롬프트 정의와 일치해야 합니다.
실행 예시와 자주 묻는 질문
다음 요청은 2026-07-28 사양의 HTTP 헤더를 사용해 도구 목록을 조회하는 예시입니다.
curl -X POST "$MCP_URL" \
-H "Content-Type: application/json" \
-H "MCP-Protocol-Version: 2026-07-28" \
-H "Mcp-Method: tools/list" \
-d '{
"jsonrpc":"2.0",
"id":1,
"method":"tools/list",
"params":{}
}'
도구 실행은 다음처럼 작성합니다.
{
"jsonrpc": "2.0",
"id": 2,
"method": "tools/call",
"params": {
"name": "search",
"arguments": {"query": "MCP"}
}
}
자주 묻는 질문은 “Resources도 Tools처럼 호출하나요?”입니다. 아닙니다. 리소스는 resources/read로 URI의 내용을 읽고, 도구는 tools/call로 동작을 실행합니다. 또 “REST API를 MCP로 바꾸면 모든 기능이 자동으로 생기나요?”라는 질문에는, 별도 MCP 서버가 REST 요청을 도구·리소스·프롬프트로 등록해야 한다고 답할 수 있습니다.
결론
실행은 Tools, 참고 자료는 Resources, 재사용 지침은 Prompts로 구분하면 MCP 설계가 단순해집니다. REST 경로와 비교할 때는 1 대 1 변환보다 기능과 입력 계약을 기준으로 판단하세요.