REST에서 MCP로: 무엇이 바뀌나요

발행: (2026년 1월 4일 오후 09:45 GMT+9)
8 분 소요
원문: Dev.to

Source: Dev.to

번역을 진행하려면 번역하고자 하는 본문 텍스트를 제공해 주세요.
본문을 알려주시면 그대로 마크다운 형식과 코드 블록, URL 등을 유지하면서 한국어로 번역해 드리겠습니다.

소개

REST는 20 년 동안 표준이었습니다. 사용하고 있는 모든 API, 구축하는 모든 통합 — 아마도 REST일 것입니다.
하지만 상황이 변하고 있습니다. AI는 원시 엔드포인트를 호출하고 싶어 하지 않으며, 도구를 호출하고 싶어 합니다. 바로 그때 MCP (Machine‑Callable Procedures)가 등장합니다.

REST: 설계 목적

  • 일반적인 호출
GET /users/123
POST /orders
PUT /products/456
DELETE /comments/789
  • 예측 가능하고, 무상태이며, 어디서든 동작합니다.
  • 호출자는 정확히 원하는 것이 무엇인지 알고 있다고 가정합니다: 고정된 매개변수를 가진 특정 엔드포인트를 호출하는 코드를 작성합니다.

왜 REST는 AI에게 어색한가

Claude와 같은 LLM에게 “사용자의 최근 주문을 가져와줘”라고 물어보면, 모델은 엔드포인트가 아니라 행동을 생각합니다:

  1. 제가 해야 할 일은 무엇인가요? → 주문 가져오기
  2. 어떤 정보가 필요한가요? → 사용자 ID
  3. 제약 조건은? → 최근 주문

REST는 AI가 자연어를 고정된 엔드포인트에 매핑하도록 강요하는데, 이는 가능하지만 어색합니다.

MCP: 도구‑중심 모델

엔드포인트를 노출하는 대신 도구를 노출합니다:

tools:
  - name: get_user_orders
    description: Get orders for a user, optionally filtered by date
    parameters:
      - name: user_id
        type: string
        required: true
      - name: since
        type: string
        description: ISO date to filter orders from

AI는 설명을 읽고 매개변수를 이해한 뒤 언제 도구를 사용할지 결정합니다—문서를 파싱하거나 엔드포인트 경로를 외울 필요가 없습니다.

런타임에서 도구 발견

{
  "tools": [
    {
      "name": "get_user_orders",
      "description": "Get orders for a user",
      "inputSchema": { /* ... */ }
    },
    {
      "name": "create_order",
      "description": "Create a new order",
      "inputSchema": { /* ... */ }
    }
  ]
}

AI는 “어떤 도구가 있나요?”라고 묻고 명확한 설명이 포함된 목록을 받아, 하드코딩 없이 동적 발견을 가능하게 합니다.

REST와 MCP 호출 비교

REST 예시

GET /api/v2/users/123/orders?status=completed&limit=10&sort=desc

정확한 경로, 쿼리 매개변수 및 API 버전을 알아야 합니다.

MCP 예시

{
  "tool": "get_user_orders",
  "arguments": {
    "user_id": "123",
    "status": "completed",
    "limit": 10
  }
}

AI는 자연어(예: “John의 마지막 10개의 완료된 주문을 보여줘”)에서 직접 인수를 추출합니다.

효과적인 도구 설명 작성

  • Bad – 너무 모호해서 AI가 언제 사용해야 할지 모름
- name: proc_txn
  description: Process transaction
  • Good – 명확한 사용 사례와 필요한 매개변수
- name: process_payment
  description: >-
    Charge a customer's saved payment method. Use this when the user wants
    to complete a purchase. Requires `order_id` and `payment_method_id`.

설명이 풍부할수록 AI가 더 똑똑하게 동작합니다.

MCP와 스트리밍 결과

MCP는 점진적인 출력을 위해 Server‑Sent Events (SSE)를 지원합니다:

AI: "Analyze this large dataset"
Tool: [streaming] Processing chunk 1/10...
Tool: [streaming] Processing chunk 2/10...
...
Tool: [complete] Analysis ready

이를 통해 진행 상황 업데이트와 장시간 실행 작업을 처리할 수 있습니다.

호출 간 컨텍스트 유지

REST는 상태 비저장이며, 각 요청은 독립적으로 작동합니다. MCP는 컨텍스트를 유지할 수 있어 다단계 워크플로우를 가능하게 합니다:

  1. get_performance_metrics 호출
  2. 가장 느린 엔드포인트 식별
  3. 해당 엔드포인트와 함께 get_logs 호출
  4. 결과 요약

단일 사용자 요청이 여러 도구 호출을 조정하여 일관된 결과를 생성할 수 있습니다.

통합 모델: REST + MCP

MCP는 REST를 대체하지 않습니다. 애플리케이션은 여전히 기존 방식대로 API를 호출합니다. MCP는 래퍼 역할을 하여 위에 위치합니다:

Your REST API → MCP Server → AI Agent

엔드포인트보다 도구 관점으로 생각하세요:

  • 엔드포인트 – 어떤 작업이 존재합니까?
  • 도구 – AI가 이를 가지고 무엇을 할 수 있습니까?

스마트한 인턴에게 시스템을 설명하듯이 도구 설명을 작성하세요.

MCP 레이어의 이점

  • 간단한 도구 뒤에 복잡성을 숨깁니다
  • 가드레일 추가 (예: 읽기 전용, 속도 제한)
  • AI가 시스템과 상호 작용하는 방식을 설계합니다

새로운 생태계

  • Now: 개발자들이 AI와 REST API를 수동으로 통합합니다.
  • Soon: 인기 서비스(Stripe, GitHub 등)를 위한 MCP 래퍼가 제공됩니다.
  • Later: API가 REST와 함께 MCP 서버와 함께 제공됩니다.

예시: Gantz Run으로 REST API 래핑하기

tools:
  - name: get_weather
    description: Get current weather for a city
    parameters:
      - name: city
        type: string
        required: true
    http:
      method: GET
      url: "https://api.weather.com/current"
      query:
        q: "{{city}}"

몇 줄만으로 전통적인 REST 엔드포인트를 AI가 접근할 수 있게 만들 수 있습니다.

결론

이것은 REST vs. MCP가 아니라 REST + MCP입니다.

  • REST는 앱‑서버 간 통신을 담당합니다.
  • MCP는 AI‑툴 간 통신을 담당합니다.

AI‑우선 세상을 구축한다면, MCP 인터페이스가 핵심입니다.

이미 REST API를 MCP와 함께 래핑하고 계신가요? 경험을 공유해주세요!

Back to Blog

관련 글

더 보기 »

RGB LED 사이드퀘스트 💡

markdown !Jennifer Davis https://media2.dev.to/dynamic/image/width=50,height=50,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%...

Mendex: 내가 만드는 이유

소개 안녕하세요 여러분. 오늘은 제가 누구인지, 무엇을 만들고 있는지, 그리고 그 이유를 공유하고 싶습니다. 초기 경력과 번아웃 저는 개발자로서 17년 동안 경력을 시작했습니다.