블로그
후기
멘토진
← 블로그 목록으로 돌아가기
Tool Calling VS MCP
JSCODE 시니
2026. 06. 13.
author
JSCODE 시니
category
Spring AI
createdAt
Jun 13, 2026 09:55 AM
isPublic
isPublic
series
실무에 바로 적용하는 Spring AI: Spring 서비스에 챗봇·RAG·MCP 도입하기
slug
ai-integration-comparison-tool-calling-vs-mcp
type
post
updatedAt
✅ 1. Tool Calling
정의 : LLM이 사용자의 질문을 분석한 뒤, "지금은 일반적인 대답을 할 게 아니라
getWeather
라는 외부 함수를 실행해야겠다!"라고 판단하여
함수 이름과 파라미터를 JSON 형태로 뱉어내는 '능력'
그 자체
한계 : OpenAI, Anthropic, Google 등 각 AI 모델마다 요구하는 JSON 규격과 호출 방식이 제각각임
개발자가 각 모델의 API 스펙에 맞춰 중간에서 데이터를 변환해 주는 작업을 해야함
✅ 2. MCP
정의 : 앞서 배운 Tool Calling 기능을 포함하여, AI와 외부 백엔드 시스템이 소통하는 방식을 아예 통일시켜버린 '표준 통신 규약(Protocol)’
특징 : 도구(Tools)가 클라이언트 앱이나 프레임워크 안에 하드코딩되어 있을 필요가 없음
도구들은 독립된
McpServer
에 존재하며, AI(McpClient)는 표준화된 JSON-RPC 메시지를 통해 서버에 접속하여 도구를 조회하고 실행
✅ 3. 아키텍처 흐름
A. 순수 Tool Calling 방식 (Spring AI 환경)
User
➔ 질문: "서울 날씨 어때?" ➔
Spring 서버
Spring 서버
➔ (OpenAI 규격에 맞춘 스키마 전달) ➔
OpenAI API
OpenAI API
➔ "getWeather(서울) 실행해!" (JSON 반환) ➔
Spring 서버
Spring 서버
➔ 내부에 있는
getWeather
자바 메서드 직접 실행 ➔
Spring 서버
S
pring 서버
➔ "결과는 25도야" ➔
OpenAI API
OpenAI API
➔ "서울은 25도입니다" (최종 텍스트) ➔
Spring 서버
➔
User
B. MCP 방식 (Claude Desktop + McpServer 환경)
Claude Desktop(McpClient)
➔ (MCP 표준 통신) ➔
Spring 서버(McpServer)
접속 및 도구 목록 스캔
User
➔ 질문: "서울 날씨 어때?" ➔
Claude Desktop
Claude Desktop
➔ 내부 LLM을 통해 Tool Calling 판단 ➔
Spring 서버
로
tools/call
JSON-RPC 요청 발송
Spring 서버
➔ 메서드 실행 후 결과 반환 ➔
Claude Desktop
Claude Desktop
➔ "서울은 25도입니다" ➔
User
💁♀️
간단한 내부 Tool 구현을 원할 때는 Tool Calling 방식을 활용하고, Tool 생태계 구축을 한다거나 복잡한 Tool의 경우에는 MCP 사용을 권장합니다!