Tool Calling은 모델이 함수 호출을 요청하고 애플리케이션이 코드를 실행하는 언어 모델 API 기능입니다. Model Context Protocol (MCP)은 AI 애플리케이션이 외부 서버에서 공개한 도구를 검색하고 호출할 수 있게 하는 개방형 JSON-RPC 표준입니다. MCP는 Tool Calling을 대체하지 않고 그 기반으로 사용합니다.
AI 에이전트나 LLM 기반 백엔드를 개발하다 보면 공급업체 문서에서 두 용어를 자주 접합니다. Tool Calling과 MCP를 이해하려면 모델이 함수 실행을 결정하는 방식과 애플리케이션이 해당 함수가 있는 시스템에 연결하는 방식을 구분해야 합니다.
LLM API의 Tool Calling이란?
Tool Calling(function calling이라고도 함)은 자연어 프롬프트를 구조화된 함수 호출로 바꾸는 모델 API 기능입니다. API 요청에 이름, 설명, JSON Schema 매개변수를 사용해 함수 정의를 전달하면 모델이 함수 이름과 인수가 포함된 구조화된 호출을 반환할지 결정합니다.
모델이 함수를 직접 실행하지는 않습니다. Tool Calling은 애플리케이션과 모델 사이의 여러 단계로 이루어진 대화로 작동합니다.
- 도구 선언 전송: 애플리케이션이 모델에 요청을 보내면서 모델이 호출할 수 있는 도구의 JSON Schema 정의를 포함합니다.
- 구조화된 도구 호출 수신: 모델이 선택한 함수 이름과 JSON 인수를 포함한 도구 호출로 응답합니다. 예를 들어 Anthropic은
tool_use중지 이유와 블록을 반환합니다. - 애플리케이션 측에서 코드 실행: 백엔드가 인수를 검증하고 로컬 함수 또는 내부 API 요청을 실행합니다.
- 도구 출력 반환: 애플리케이션이 결과(예:
tool_result블록)를 포함한 두 번째 요청을 모델에 보냅니다. - 최종 응답 수신: 모델이 출력을 사용해 사용자에게 답하거나 추가 도구 호출을 요청합니다.
OpenAI 함수 정의는 JSON Schema parameters를 사용하며 스키마 준수를 강제하는 strict: true를 지원합니다.
{
"type": "function",
"name": "get_weather",
"description": "Get the current weather for a given location.",
"strict": true,
"parameters": {
"type": "object",
"properties": {
"location": {
"type": "string"
}
},
"required": ["location"],
"additionalProperties": false
}
}
주요 모델 API는 모델의 함수 선택 방식을 세밀하게 제어할 수 있게 합니다. OpenAI와 Google Gemini API에서는 tool_choice로 선택을 auto(기본값)로 두거나, 하나 이상의 호출을 강제하거나(OpenAI의 required, Gemini의 any), 도구를 비활성화하거나(none), allowed_tools로 모델이 사용할 도구를 일부로 제한하거나, Gemini의 validated 모드로 함수 스키마 준수를 보장할 수 있습니다. OpenAI와 Gemini는 모두 병렬 함수 호출을 지원하므로 모델이 한 턴에 여러 함수를 호출할 수 있습니다. OpenAI에서는 턴당 최대 한 번만 호출하려면 parallel_tool_calls를 false로 설정할 수 있습니다. Gemini는 여러 단계를 순차적으로 실행하는 합성 호출도 지원합니다.
Anthropic은 코드가 실행되는 위치에 따라 도구 사용을 구분합니다. 클라이언트 도구(사용자 지정 함수와 bash, text_editor 같은 Anthropic 스키마 도구 포함)는 애플리케이션 내부에서 실행됩니다. 서버 도구(web_search, web_fetch, code_execution, tool_search 등)는 Anthropic 인프라에서 직접 실행됩니다.
Model Context Protocol (MCP)이란?
Model Context Protocol (MCP)은 JSON-RPC 2.0을 통해 AI 애플리케이션을 외부 시스템에 연결하는 오픈소스 표준입니다. Language Server Protocol에서 영감을 받은 MCP 사양(버전 2026-07-28)은 AI 애플리케이션의 USB-C 포트처럼 작동하므로 하나의 서버 통합을 ChatGPT, Claude, Visual Studio Code, Cursor 및 사용자 지정 에이전트에서 사용할 수 있습니다.
MCP는 책임을 세 가지 역할로 나눕니다.
- 호스트(Hosts): 연결을 시작하는 LLM 애플리케이션(IDE 또는 채팅 인터페이스 등).
- 클라이언트(Clients): 호스트 애플리케이션 내부에서 실행되는 프로토콜 연결 구성 요소.
- 서버(Servers): 클라이언트에 기능과 컨텍스트를 제공하는 외부 서비스.
2026-07-28 사양에서 기본 프로토콜은 상태를 저장하지 않는 독립적인 JSON-RPC 2.0 요청을 사용하며 요청마다 기능을 협상합니다. MCP는 두 가지 표준 전송 방식을 정의합니다. stdio는 클라이언트가 시작한 하위 프로세스의 표준 입력과 출력을 통해 줄바꿈으로 구분된 메시지를 전달합니다. Streamable HTTP에서는 각 메시지가 단일 MCP 엔드포인트에 대한 HTTP POST입니다. 개발자는 사용자 지정 전송 방식도 구현할 수 있습니다.
LLM Tool Calling은 함수만 처리하지만 MCP 서버는 세 가지 핵심 기능을 제공할 수 있습니다.
- Tools: AI 모델이 실행할 함수.
- Resources: 애플리케이션이 읽을 수 있는 컨텍스트와 데이터.
- Prompts: 사용자를 위한 메시지 템플릿과 워크플로.
클라이언트 측에서 MCP는 서버가 사용자에게 추가 정보를 요청할 수 있는 Elicitation을 지원합니다. 2026-07-28 사양에는 Tasks(비동기 장시간 실행 작업), Skills over MCP, MCP Apps(화면 내에 렌더링되는 대화형 UI 요소)를 위한 선택적 협상 확장도 포함됩니다.
도구 실행을 위해 MCP 클라이언트는 페이지네이션과 캐싱을 지원하는 tools/list를 호출해 사용 가능한 도구를 검색합니다. listChanged 기능을 선언한 서버는 사용 가능한 도구가 바뀔 때마다 클라이언트에 알릴 수 있습니다. 각 MCP 도구 정의에는 대소문자를 구분하는 name(권장 길이 1~128자), 선택적 title, description, 선택적 icons, inputSchema(기본값 JSON Schema 2020-12), 선택적 outputSchema, 선택적 주석이 포함됩니다.
모델이 MCP 도구를 사용하기로 결정하면 클라이언트는 서버에 tools/call JSON-RPC 요청을 보냅니다.
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "get_weather",
"arguments": {
"location": "San Francisco, CA"
}
}
}
서버에서 도구 실행이 실패하면 MCP는 결과 안에 isError: true와 함께 오류를 반환해 언어 모델이 실패를 읽고 스스로 수정할 수 있게 합니다.
Tool Calling vs MCP: 나란히 비교
LLM Tool Calling과 MCP를 직접 비교하면 두 방식이 스택의 서로 다른 계층에서 작동한다는 점이 드러납니다. 2026년 11월 기준 네이티브 Tool Calling과 Model Context Protocol은 일곱 가지 아키텍처 측면에서 다음과 같이 다릅니다.
| 측면 | Tool Calling (Function Calling) | Model Context Protocol (MCP) |
|---|---|---|
| 정의 | LLM이 구조화된 함수 인수를 출력하는 모델 API 기능 | AI 호스트와 클라이언트를 외부 서버에 연결하는 개방형 JSON-RPC 2.0 프로토콜 |
| 도구 정의 주체 | 모델 API 요청에 포함된 애플리케이션 코드 또는 공급업체 서버 도구 | Tools, Resources, Prompts를 제공하는 MCP 서버 |
| 코드 실행 위치 | 애플리케이션 백엔드 또는 서버 도구의 경우 LLM 공급업체 클라우드 | 로컬 하위 프로세스(stdio) 또는 원격 서비스(Streamable HTTP) |
| 검색 | API 요청마다 정적이며 모델 호출 전에 코드에서 스키마를 고정하거나 선택 | 실행 중 tools/list와 listChanged 알림을 통해 동적으로 검색 |
| 전송 방식 | 공급업체 HTTPS API(OpenAI, Anthropic, Google Gemini) | stdio, Streamable HTTP 또는 사용자 지정 전송 방식 |
| 클라이언트 간 이식성 | 앱과 특정 LLM 공급업체의 스키마 형식에 종속 | MCP 호환 호스트 간에 이식 가능(Claude, ChatGPT, VS Code, Cursor, 사용자 지정 앱) |
| 비용 | 도구 정의의 입력 토큰, 호출의 출력 토큰, 공급업체 서버 도구의 추가 요금 | 로드한 각 도구 스키마의 입력 토큰과 MCP 서버 호스팅 또는 실행을 위한 인프라 |
MCP가 Function Calling을 대체하나요?
MCP는 Function Calling을 대체하지 않습니다. 언어 모델이 여전히 Tool Calling을 사용해 모든 MCP 도구를 선택하고 호출하기 때문입니다. Tool Calling과 MCP는 같은 요청 수명 주기에서 서로 보완하는 계층입니다.
AI 애플리케이션이 MCP 서버에 연결하면 워크플로는 두 시스템을 결합합니다.
- MCP를 통한 검색: 호스트 애플리케이션의 MCP 클라이언트가 MCP 서버에
tools/list요청을 보내고 서버의 도구 이름, 설명, JSON SchemainputSchema객체를 받습니다. - LLM용 형식 변환: 호스트가 MCP 도구 정의를 LLM 공급업체의 네이티브
tools배열로 변환하고 사용자 프롬프트와 함께 보냅니다. - Tool Calling을 통한 선택: 언어 모델이 프롬프트를 평가하고 선택한 도구 이름과 인수가 포함된 표준 도구 호출을 출력합니다.
- MCP를 통한 실행: 호스트가 모델의 도구 호출을 받아 MCP
tools/call요청에 매핑하고stdio또는 Streamable HTTP를 통해 MCP 서버로 보냅니다. - 완료: MCP 서버가 결과를 반환하고(실행 실패 시
isError: true포함), 호스트가 그 출력을 도구 결과로 모델에 전달하면 모델이 최종 답변을 생성합니다.
모델 API에 Tool Calling이 없다면 LLM에는 MCP 도구를 실행할 메커니즘이 없습니다. MCP가 없다면 애플리케이션이 모든 도구 스키마와 실행 핸들러를 수동으로 연결해야 합니다.
OpenAI, Anthropic, Google은 MCP를 어떻게 직접 지원하나요?
이제 OpenAI, Anthropic, Google은 원격 MCP 서버를 내장 도구 유형으로 모델 API에 직접 전달할 수 있게 합니다. tools/list와 tools/call을 연결하는 MCP 클라이언트 루프를 직접 작성하는 대신 모델 공급업체의 API가 사용자를 대신해 MCP 서버에 연결합니다.
2026년 11월 기준 각 공급업체는 고유한 기능과 문서화된 제한을 적용해 MCP 서버 직접 연결을 구현합니다.
OpenAI Responses API
OpenAI Responses API에서는 도구 배열에 "type": "mcp"를 server_label, server_url과 함께 지정해 MCP 서버를 연결할 수 있습니다. OpenAI는 프로덕션 배포를 위한 두 가지 주요 제어 기능을 제공합니다.
allowed_tools: MCP 서버에서 지정된 일부 도구만 가져와 모델 컨텍스트에 과부하가 걸리지 않게 합니다.require_approval: 도구 호출을 자동 실행할지 또는 명시적인 사람의 승인을 기다릴지 설정합니다.
로컬 또는 비공개 서비스를 위해 OpenAI는 Secure MCP Tunnel을 제공하므로 내부 MCP 서버를 공개 인터넷에 노출하지 않고 연결할 수 있습니다.
Anthropic MCP Connector
Anthropic은 Messages API에서 별도의 클라이언트 구현 없이 원격 MCP 서버에 연결하는 베타 MCP connector(mcp_servers 및 mcp_toolset)를 제공합니다. 문서화된 네 가지 제한을 기억하세요.
- 도구만 지원: 커넥터는 MCP 사양의 도구 호출만 지원합니다(MCP Resources나 Prompts는 지원하지 않음).
- 공개 HTTP 필요: MCP 서버는 HTTP를 통해 공개되어야 합니다(Streamable HTTP와 SSE 지원).
- 로컬
stdio직접 연결 불가: 로컬stdio서버는 Messages API에 직접 연결할 수 없지만 Anthropic SDK는 로컬 서버용 클라이언트 측 헬퍼를 제공합니다. - 규정 준수 제외: 베타 MCP connector는 Zero Data Retention (ZDR) 또는 HIPAA 워크로드에 사용할 수 없습니다.
Google Gemini Interactions API
Google의 Gemini Interactions API는 "type": "mcp_server" 선언으로 외부 MCP 서버를 수용하며 name, url, headers, allowed_tools로 구성합니다. Google은 이 통합에 두 가지 엄격한 규칙을 적용합니다.
- Streamable HTTP만 지원: Gemini Interactions API는 Streamable HTTP 서버를 지원하며 SSE 전송 방식은 지원하지 않습니다.
- 이름 구문: 서버 이름은
snake_case를 사용해야 하며 하이픈을 포함할 수 없습니다.
Tool Calling과 MCP는 언제 사용해야 하나요?
MCP와 Tool Calling의 사용 시점은 누가 통합을 유지 관리하고 몇 개의 애플리케이션이 공유해야 하는지에 따라 다릅니다. 세 가지 일반적인 패턴에 비추어 프로젝트의 제약을 살펴보세요.
단순한 Tool Calling으로 충분한 경우
도구가 하나의 애플리케이션 백엔드 안에 있고 외부 클라이언트가 호출할 필요가 없다면 네이티브 LLM Tool Calling을 사용하세요. 제가 내부 데이터베이스 쿼리 다섯 개와 Stripe 결제 작업을 가진 웹 앱을 만든다면 MCP 서버를 작성하는 것은 불필요한 네트워크 경유나 하위 프로세스를 추가합니다.
다음과 같은 경우에는 단순한 Tool Calling이 더 적합합니다.
- 자체 데이터베이스나 내부 마이크로서비스를 조회하는 함수가 적은 수뿐입니다.
- 전체 코드베이스를 제어하며 낮은 지연 시간과 프로세스 내 직접 검증을 원합니다.
- 다른 AI 어시스턴트, IDE 또는 팀이 해당 함수를 검색하거나 재사용할 필요가 없습니다.
MCP 서버가 유용한 경우
동일한 도구가 여러 AI 클라이언트에서 작동해야 하거나 다른 팀이 기반 시스템을 담당한다면 MCP 서버를 구축하거나 도입하세요. 엔지니어링 플랫폼이 이슈 추적과 배포 로그를 MCP로 제공한다면 개발자는 스키마를 다시 작성하지 않고도 정확히 같은 서버를 Claude, ChatGPT, Visual Studio Code, Cursor와 내부 에이전트에 연결할 수 있습니다.
다음과 같은 경우 MCP가 유용합니다.
- 한 번 작성해 여러 AI 호스트와 개발 IDE에서 이식해 사용하고 싶습니다.
- 외부 공급업체나 별도의 내부 팀이 통합을 유지 관리합니다.
- 실행 중 기능이 바뀔 때 에이전트가 동적 도구 검색(
tools/list와listChanged)에 의존합니다. - 함수 실행과 함께 MCP Resources, 사용자용 프롬프트 템플릿 또는 사용자 정보 요청이 필요합니다.
하이브리드 구성
AI 에이전트를 파일럿에서 프로덕션으로 옮기는 팀은 흔히 두 방식을 결합합니다. 일반적인 애플리케이션은 지연 시간에 민감한 네이티브 함수 도구 몇 개를 코드로 정의하면서 외부 SaaS 통합을 위해 하나 또는 두 개의 외부 MCP 서버를 연결하고, allowed_tools로 불필요한 엔드포인트를 걸러냅니다.
보안, 지연 시간, 토큰 비용의 절충점
네이티브 선언이든 MCP 서버든 LLM 애플리케이션에 도구를 추가하면 토큰 비용, 캐싱 관련 고려 사항, 보안 경계가 생기므로 신중하게 관리해야 합니다.
입력 토큰 비용과 프롬프트 캐싱
모델 API에 전달하는 모든 도구 정의는 입력 토큰에 포함됩니다. Anthropic은 tools 매개변수의 도구 정의가 입력 토큰으로 계산된다고 명시하며, OpenAI는 일부 MCP 서버가 한 번에 수십 개의 도구를 공개하고 많은 도구를 공개하면 비용과 지연 시간이 모두 늘어날 수 있다고 설명합니다.
토큰 비용을 예측 가능하게 유지하려면 다음과 같이 하세요.
- 가져오는 도구를 필터링합니다. OpenAI와 Google은
allowed_tools를 사용하며 Anthropic의 MCP connector는mcp_toolset에서 개별 도구를 허용, 차단 또는 구성할 수 있습니다. - 도구 목록의 순서를 결정적으로 유지합니다. MCP 사양에 따르면
tools/list의 결정적인 순서는 클라이언트가 도구 목록을 캐시하는 데 도움이 되고, 도구 정의가 모델 컨텍스트에 있을 때 LLM 프롬프트 캐싱 적중률을 높입니다.
신뢰 경계와 사람의 승인
도구는 임의 코드 실행을 수반합니다. 전체 운영체제와 상호작용하는 컴퓨터 사용 AI 에이전트도 배포한다면 이 문제는 더욱 중요해집니다. 외부 MCP 서버에 연결하면 신뢰 경계를 넘게 되며, 신뢰할 수 없는 도구 설명이나 서버 응답이 프롬프트 인젝션의 경로로 작용할 수 있습니다.
MCP 사양은 도구 주석이 신뢰할 수 있는 서버에서 온 것이 아니라면 신뢰하지 말아야 한다고 명시적으로 경고합니다. MCP는 통신 프로토콜 수준에서 안전을 강제할 수 없으므로 사양은 호스트 애플리케이션이 도구를 호출하기 전에 사용자의 명시적인 동의를 받아야 하며, 호출을 거부할 수 있는 사람이 항상 과정에 참여하도록 권고합니다. OpenAI의 Responses API 같은 직접 API 통합을 사용할 때는 민감한 도구에 require_approval을 활성화해 실행 전에 사람이 인수를 검토할 수 있도록 하세요.
FAQ
MCP는 Function Calling과 같은가요?
아니요. Function Calling(Tool Calling)은 LLM이 이름이 지정된 함수를 실행하도록 구조화된 JSON 요청을 출력하는 모델 API 메커니즘입니다. Model Context Protocol (MCP)은 AI 애플리케이션이 외부 서버에 호스팅된 Tools, Resources, Prompts를 검색하고 호출할 수 있게 하는 개방형 통신 표준입니다.
Tool Calling 없이 MCP를 사용할 수 있나요?
MCP Resources와 프롬프트 템플릿은 호스트 애플리케이션이나 사용자가 읽거나 실행하므로 모델의 Tool Calling 없이 사용할 수 있습니다. 하지만 AI 모델이 tools/call을 통해 MCP 도구를 자율적으로 호출할 때는 그 도구를 선택하기 위해 내부적으로 네이티브 Tool Calling 기능을 사용합니다.
MCP를 사용하면 네이티브 Tool Calling보다 토큰이 더 많이 드나요?
개별 도구 정의는 앱이 로컬 코드에서 로드하든 MCP 서버에서 로드하든 같은 수의 입력 토큰이 듭니다. 다만 단일 MCP 서버가 한 번에 수십 개의 도구를 공개할 수 있으므로 allowed_tools로 목록을 필터링하지 않으면 실제로 MCP 구성에서 더 많은 토큰을 소비하는 경우가 많습니다.
어떤 LLM 공급업체가 API에서 MCP 서버를 네이티브로 지원하나요?
2026년 11월 기준 OpenAI, Anthropic, Google은 모두 API에서 원격 MCP 서버를 직접 수용합니다. OpenAI는 Responses API에서 "type": "mcp"를 지원하고, Anthropic은 Messages API에서 베타 MCP connector(mcp_servers 및 mcp_toolset)를 제공하며, Google은 Gemini Interactions API에서 "type": "mcp_server"를 지원합니다.
Anthropic API가 로컬 stdio MCP 서버에 직접 연결할 수 있나요?
아니요. Anthropic의 Messages API에 있는 베타 MCP connector는 HTTP로 공개된 원격 MCP 서버(Streamable HTTP와 SSE)에만 연결합니다. Claude와 로컬 stdio MCP 서버를 사용하려면 Anthropic SDK 헬퍼를 사용해 클라이언트 측에서 연결을 실행해야 합니다.
Sources
- Model Context Protocol: Introduction
- Model Context Protocol Specification (2026-07-28)
- MCP Specification: Transports (2026-07-28)
- MCP Specification: Server Tools (2026-07-28)
- OpenAI API Docs: Function Calling
- OpenAI API Docs: Tools, Connectors, and MCP
- Anthropic Claude Docs: Tool Use Overview
- Anthropic Claude Docs: MCP Connector
- Google AI Studio Docs: Function Calling with Gemini



