Structured Output와 mcp

예를 들어 사용자가 리뷰를 남겼다고 해보겠습니다.복사

배송은 빨랐지만 가격이 너무 비싸요.

우리는 이 리뷰에서 다음 정보를 얻고 싶습니다.복사

sentiment = "neutral"
score = 3
summary = "배송은 긍정적이지만 가격에 대한 불만이 있습니다."

하지만 일반적인 LLM 호출은 보통 이런 식으로 답합니다.복사

이 리뷰는 중립에 가깝습니다. 배송은 빠르다는 점은 긍정적이지만,
가격이 비싸다는 불만이 포함되어 있습니다.

사람이 읽기에는 자연스럽습니다. 하지만 프로그램 입장에서는 애매합니다.

sentiment는 어디에 있나요?

score는 몇 점인가요?

summary만 따로 꺼내려면 문자열 파싱을 해야 하나요?

이 문제를 해결하기 위해 사용하는 개념이 Structured Output입니다.

전략방법장점단점
Provider Nativemethod="json_schema"가장 안정, 빠름일부 모델만
Tool Callingmethod="function_calling"호환성 ↑토큰 약간 추가

기본값은 모델별로 알아서 골라줌. 명시적 제어가 필요할 때만 method 지정.

CP 서버는 클라이언트(LLM)에게 3종류의 자원을 제공할 수 있습니다.

① Tools (도구) — LLM이 호출하는 함수

지금까지 우리가 만든 @tool 과 비슷합니다.

② Resources (리소스) — LLM이 읽는 데이터

도구는 “함수 호출”, 리소스는 “데이터 읽기”. URI 기반.

③ Prompts (프롬프트) — 미리 정의된 프롬프트 템플릿

자주 쓰는 프롬프트를 서버가 제공.

프리미티브무엇누가 부르나예시
Tools함수LLM이 결정search_employee()
Resources데이터URI로 접근employees://12345
Prompts템플릿사용자가 명령/code-review

항목핵심
MCPLLM과 도구·데이터 사이의 표준 프로토콜
프리미티브Tools (호출 함수), Resources (데이터), Prompts (템플릿)
전송stdio (로컬), SSE (구), Streamable HTTP (신규 권장)
생태계filesystem, github, slack 등 공식 서버 풍부

Similar Posts

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다