AI Agent가 JSON Schema, Function Calling, MCP를 사용하는 이유: 기술演进 총정리

텍스트 대화에서 실행 가능한 Agent로 — JSON Schema, Function Calling, MCP가 AI Agent 인프라가 된 이유를 시간선, 연동, 실전 선택 기준으로 설명합니다.

2023년에는 ChatGPT 플러그인을 통해 API를 호출하는 모델이 처음으로 세상에 공개되었습니다. 2024년에는 함수 호출이 공급업체 전반에 걸쳐 표준이 되었습니다. 2025년에 Anthropic은 MCP를 출시했고 Cursor 및 Claude Desktop과 같은 IDE는 이를 채택했습니다. 같은 호에서 JSON은 데이터 교환 형식에서 에이전트의 형식으로 진화했습니다.유형 시스템그리고악수 프로토콜.

RAG 파이프라인, 자동화 워크플로 또는 Copilot 스타일 제품을 구축하는 경우 결국 다음 세 가지 용어를 접하게 됩니다.JSON 스키마(구조적 제약),함수 호출(모델이 도구를 선택하고 매개변수를 채움)MCP(모델 컨텍스트 프로토콜 - 표준화된 도구 연결) 이 문서는 백엔드, 플랫폼 및 AI 애플리케이션 개발자를 위한 것입니다. 각 레이어가 왜 등장했는지, 어떤 문제를 해결하는지, 어떻게 서로 조화를 이루는지, 실제로 선택하는 방법을 안내합니다.

에이전트에 구조화된 인터페이스가 필요한 이유

초기 LLM 애플리케이션의 핵심 패턴은 사용자 질문 → 모델이 자연어 생성 → 실행을 위해 결과를 수동으로 복사하는 것이었습니다. 이는 채팅 시나리오에는 충분하지만 데이터베이스 쓰기, 이메일 보내기, 인벤토리 확인 등을 안정적으로 구동할 수는 없습니다.반복 가능하고 감사 가능자동화된 작업.

순수 Prompt 프로젝트의 ReAct(Reason + Act) 모드를 사용하면 모델이 텍스트에 "Action: search(query=...)"를 작성할 수 있으며 호스트 프로그램은 일반 구문 분석을 사용합니다. 실행할 수 있지만 취약합니다. 대괄호 중첩, 인용 이스케이프 및 다중 언어 혼합으로 인해 구문 분석 오류가 발생합니다. 프로덕션 환경에 필요한 것은기계 판독 가능, 검증 가능, 버전 지정 가능Markdown을 구문 분석하기 위해 행운에 의존하는 대신 계약을 체결하세요.

JSON은 세 가지 요구 사항을 충족합니다. LLM 교육 데이터에 대량으로 존재하고, 사람과 프로그램 모두에서 읽을 수 있으며, 성숙한 스키마 확인 생태계가 있습니다. 결과적으로 JSON 스키마는 "모델이 출력해야 하는 데이터의 형태"를 설명하는 사실상의 표준이 되었습니다. 함수 호출은 또한 "호출할 함수와 전달할 매개변수"를 동일한 JSON 구조에 통합합니다.

기술 진화 타임라인

단계대표능력핵심 문제점해결책
2022~2023년 조기일반 텍스트 + 프롬프트 템플릿구문 분석할 수 없는 환각 매개변수 출력Few-shot 예제 제약 형식
2023년 중반ReAct / Toolformer 아이디어일반 파싱 동작이 불안정함JSON 블록에 동의했지만 여전히 프롬프트에 의존합니다.
2023~2024년 말OpenAI 함수 호출제조업체마다 형식이 동일하지 않습니다.API 수준 도구 매개변수, JSON 스키마 설명
2024년구조화된 출력모델이 여전히 필드를 놓칠 수 있습니다.서버 측 제약 조건 디코딩, 스키마 준수 강제
2024~2025년 말MCP(Anthropic 및 기타 업체에서 홍보)N×M 통합: 모든 IDE × 모든 도구통합 호스트 ⇔ 서버 프로토콜, 플러그형 도구
2025년~2026년에이전트 SDK + MCP 생태계권한, 감사, 다중 테넌트OAuth, stdio/SSE 전송, 도구 검색

이 라인의 주요 변경 사항은 다음과 같습니다."모델이 원하는 작업"을 자연어에서 입력된 구조화된 메시지로 번역합니다., 호스트 프로그램이나 MCP 서버에 의해 안전하게 실행됩니다.

JSON 스키마: 에이전트의 "유형 시스템"

JSON 스키마는 원래 API 문서화 및 구성 확인(OpenAPI, Kubernetes CRD 등)에 사용되었습니다. 에이전트 시나리오에서는 두 가지 유형의 책임을 가정합니다.

  • 도구 입력 매개변수: Description search_products requires query (string) and limit (integer, default 10)
  • 모델 출력: 예를 들어 엔터티, 분류 라벨, 승인 결론 등을 추출하는 경우 다운스트림 소비를 위해 고정 필드를 반환해야 합니다.

일반적인 도구 매개변수 스키마

{
  "type": "object",
  "properties": {
    "city": {
      "type": "string",
      "description": "City name, e.g. Beijing or Shanghai"
    },
    "unit": {
      "type": "string",
      "enum": ["celsius", "fahrenheit"],
      "description": "Temperature unit"
    }
  },
  "required": ["city"]
}

The description field is particularly important: it enters the context of the model and helps the model understand when to call and what the semantics of each parameter are - Schema also serves검증인그리고즉각적인.

구조화된 출력 및 스키마

스키마만 Prompt에 기록되는 경우에도 모델에 추가 필드나 유형 오류가 있을 수 있습니다. OpenAI, Google 등에서 제공하는 구조화된 출력/JSON 모드는 디코딩 단계에서 토큰을 제한하여 출력이 스키마를 엄격하게 준수하도록 합니다. 이는 "송장 OCR → 구조화된 JSON → 회계 시스템" 유형의 파이프라인에 필수입니다.

개발 단계에서의 제안: JSON 도구 상자와 같은 도구를 먼저 사용하십시오.로컬 확인 스키마 구문, and then use the sample payload to verify whether required and enum intercept illegal input as expected.

함수 호출: 모델과 도구 간의 핸드셰이크

함수 호출(다양한 공급업체에서는 도구 사용, 도구 API라고도 함)은 모델과 호스트 간의 통신을 정의합니다.한 차례의 악수:

  1. 호스트는 도구 목록(이름, 설명, 매개변수 스키마)을 메시지와 함께 모델에 보냅니다.
  2. The model does not directly execute the code, but returns tool_calls: selected tool name + JSON parameter string
  3. The host executes the real function (check DB, adjust HTTP), and stuff the result back into the conversation as tool role message
  4. 모델은 결과를 기반으로 최종 사용자가 볼 수 있는 답변을 생성합니다.

ReAct 텍스트 모드와의 비교

치수반응 텍스트함수 호출
매개변수 형식자유 텍스트, 구문 분석 필요JSON, API 기본 필드
여러 도구를 동시에 사용재해한 번에 여러 tool_call 지원
모델 미세 조정 정렬약한도구 형식에 대한 공급업체 교육
관찰 가능성로그를 직접 작성해야 함추적하기 쉬운 표준 메시지 구조

함수 호출은 에이전트 프레임워크(LangChain, AutoGen, Cursor Agent 등)를 제거하는 것이 아니라 프레임워크와 모델 간의 인터페이스가 됩니다.얇은 프로토콜 계층——프레임워크는 오케스트레이션, 재시도 및 메모리를 담당합니다. 모델 API는 "호출할 도구 결정"을 담당합니다.

MCP: 플러그형 도구 생태계

Function Calling은 "모델 측에서 호출을 어떻게 선언하느냐"라는 문제를 해결합니다. 그러나 도구 수가 늘어나고 소스가 분산되면(GitHub, Slack, Postgres, 브라우저, 파일 시스템) 새로운 문제가 발생합니다.

  • 각 호스트(IDE, 채팅 클라이언트, 자체 구축 에이전트)는 각 도구에 대한 적응을 작성해야 합니다.
  • 권한, 자격 증명, stdio/HTTP 전송 방법은 서로 독립적입니다.
  • 사용자는 "MCP 서버를 설치하여 어디에서나 사용할 수 있도록" 할 수 없습니다.

모델 컨텍스트 프로토콜(MCP)2024년 후반에 Anthropic에서 오픈 소스화하여 호스트와 도구 제공자 사이의 표준 프로토콜로 자리매김합니다. 비유 관계는 대략 다음과 같습니다.

유추웹 시대에이전트 시대
기능 설명OpenAPI/JSON 스키마MCP 도구 정의(inputSchema 포함)
런타임 연결HTTP RESTstdio/SSE와 같은 MCP 전송
고객브라우저, SDKMCP 호스트(커서, Claude Desktop…)
플러그인 시장npm, 크롬 확장MCP 서버 레지스트리

MCP 핵심 개념

  • 주인: 연결을 시작한 애플리케이션(예: 커서 IDE)
  • 고객: 호스트의 MCP 클라이언트, 서버와의 세션 유지
  • 섬기는 사람: 도구, 리소스 및 프롬프트(예: filesystem-mcp, github-mcp)를 노출하는 프로세스
  • 기능: 도구 목록은 프롬프트에 하드 코딩되는 대신 동적으로 검색됩니다.

MCP Tool's inputSchema itself is JSON Schema. Therefore, MCP does not replace Function Calling, but standardizes "tool implementation"; Host may still use MCP tools매핑모델 API의 함수 호출 형식입니다.

세 사람이 함께 일하는 방식

논리적 계층을 사용하여 세 가지 간의 관계를 이해합니다.

┌─────────────────────────────────────────────┐
│  用户 / 业务系统                              │
└─────────────────────┬───────────────────────┘
                      ▼
┌─────────────────────────────────────────────┐
│  Agent Host(编排、权限、记忆)               │
│  ┌─────────────┐    ┌─────────────────────┐ │
│  │ LLM API     │◄──►│ Function Calling    │ │
│  │ (推理)      │    │ (tool_calls 消息)   │ │
│  └─────────────┘    └─────────────────────┘ │
│           ▲                    │              │
│           │ JSON Schema        ▼              │
│  ┌────────┴────────┐  ┌──────────────────┐  │
│  │ 输出 Schema     │  │ MCP Client       │  │
│  │ (Structured     │  │ ──stdio/SSE──►   │  │
│  │  Outputs)       │  │ MCP Server(s)    │  │
│  └─────────────────┘  └──────────────────┘  │
└─────────────────────────────────────────────┘
  • JSON 스키마: 각 레이어 크로스커팅 - 도구 매개변수, MCP 입력 스키마, 모델 구조화된 출력
  • 함수 호출: 모델 ⇔ 호스트 호출 구문
  • MCP:호스트 ⇔ 외부세계를 위한 툴버스

작은 스크립트에는 함수 호출 + 몇 가지 로컬 함수만 있을 수 있습니다. 엔터프라이즈 수준 에이전트 플랫폼은 종종 MCP 클러스터 + 통합 스키마 레지스트리 + 감사 로그를 사용합니다.

전체 통화 링크 예시

사용자가 "오늘 상하이의 기온은 몇 도입니까? 그런데 GitHub에서 내 json-schema 관련 창고를 확인하세요."라고 물었습니다.

  1. 주인Pull available tools from MCP: get_weather, github_search_repos
  2. 각각 JSON 스키마 매개변수가 포함된 모델 API의 도구 배열로 변환됨
  3. 모델두 개의 tool_call을 반환합니다. 매개변수는 모두 유효한 JSON입니다.
  4. 주인MCP를 통해 Weather Server 및 github Server를 호출하여 JSON 결과를 수집합니다.
  5. 결과는 도구 메시지로 반환됩니다. 모델은 자연어 응답을 합성합니다.
  6. 작업 주문 시스템에 기록해야 하는 경우 다음을 사용하세요.출력 스키마Constraint final JSON: { "summary", "temperature", "repo_count" }

단계 매개변수가 스키마를 준수하지 않는 경우 호스트는 이를 거부하고 실행 전에 모델에 재시도를 요청할 수 있습니다. 이는 텍스트 ReAct로는 수행하기 어렵습니다.빠른 실패.

선택 비교 및 ​​모범 사례

장면제안
단일 백엔드 + 3개 이하의 도구함수 호출 + 손으로 쓴 스키마이면 충분합니다
IDE/Desktop Copilot, 도구는 계속해서 성장하고 있습니다.MCP 서버 우선 순위를 지정하고 호스트 사용자 정의 통합을 줄입니다.
다운스트림 시스템에는 자연어가 아닌 JSON만 필요합니다.구조화된 출력 + 엄격한 스키마
다중 모델 공급업체(OpenAI + Claude + 오픈 소스)스키마는 도구 정의, 제조업체 API, 중간 계층 변환에서 분리됩니다.
규정 준수 및 감사각 tool_calls 및 Schema 버전을 기록하고 정의되지 않은 도구를 금지합니다.

스키마 디자인 포인트

  • Field description clearly writes business semantics, which can reduce miscalls better than type alone.
  • required Better to be strict than loose; use default or explicitly nullable for optional fields
  • Use string + description instead for large enumerations to avoid the enum list being too long and occupying the context
  • Schema는 Git 버전 관리에 통합되며, Code Review는 API 변경과 동일하게 수행됩니다.

FAQ

JSON 스키마와 함수 호출의 관계는 무엇입니까?

함수 호출은 모델이 도구를 선언하고 호출하는 방법을 정의합니다. JSON 스키마는 도구 매개변수 및 모델 출력의 구조적 제약 조건을 설명합니다. 대부분의 API는 JSON 스키마의 하위 집합을 도구의 매개변수 정의로 직접 사용합니다.

함수 호출이 포함된 MCP가 여전히 필요합니까?

함수 호출은 싱글샷 모델과 호스트 프로그램 간의 호출 프로토콜을 해결합니다. MCP는 프로세스 전반에서 도구를 검색, 승인, 연결 및 재사용하는 방법을 해결합니다. 복잡한 에이전트는 일반적으로 두 가지와 겹칩니다. MCP는 도구 생태계를 제공하고 함수 호출은 모델 측의 호출 구문입니다.

MCP가 OpenAPI를 대체합니까?

완전히 교체되지는 않습니다. OpenAPI는 HTTP API 계약을 설명합니다. MCP는 에이전트 런타임과 IDE 간의 도구 연결을 지향합니다. REST 서비스는 여전히 OpenAPI를 사용할 수 있으며 에이전트 측에는 MCP 서버 패키징을 통해 액세스할 수 있습니다.

에이전트 출력에 JSON 스키마 제약 조건도 필요한 이유는 무엇입니까?

구조화된 출력은 프로그램 구문 분석, 검증 및 다운스트림 파이프라인 소비를 촉진하고 모델의 "자유 플레이"로 인해 발생하는 누락된 필드 또는 유형 오류를 줄이고 자동화된 작업의 신뢰성을 향상시킵니다.

Agent를 개발할 때 어떤 레이어를 먼저 배워야 할까요?

권장 순서: JSON 스키마 기본 → 단일 도구 함수 호출 → 다단계 에이전트 오케스트레이션 → 요청 시 MCP를 도입하여 외부 시스템에 연결합니다. 각 계층은 서로 다른 세분성의 문제를 해결합니다.

에이전트가 사용하는 JSON 스키마를 로컬에서 어떻게 확인하나요?

JSON 도구 상자의 확인 기능을 사용하면 스키마 구문이 샘플 데이터와 일치하는지, 그리고 데이터가 서버에 업로드되지 않는지 브라우저에서 로컬로 확인할 수 있습니다.

요약 및 다음 단계

AI 에이전트가 "채팅 가능"에서 "일 가능"으로 전환하려면 불확실성을 계층별로 구조화된 경계에 고정해야 합니다. JSON 스키마는 모양을 정의하고, 함수 호출은 모델이 도달하는 방식을 정의하며, MCP는 도구가 생태계에 연결되는 방식을 정의합니다. 이 세 가지는 서로를 대체하는 것이 아닙니다.동일한 스택의 다른 레이어.

다음 단계 제안: 실제 비즈니스 도구(주문 확인, 알림 보내기)를 사용하여 JSON 스키마를 작성하고 → 함수 호출에 연결하고 단일 라운드를 실행한 다음 여러 호스트 재사용을 위해 MCP 서버로 캡슐화할 가치가 있는지 평가합니다. 스키마 및 샘플 데이터는 온라인에 접속하기 전에 JSON 도구 상자에서 로컬로 확인할 수 있습니다.