2026년 AI Agent 논의의 핵심은 더 이상 「GPT냐 Gemini냐 Claude냐」가 아닙니다. 출시 가능 여부를 가르는 것은 모델이 Function Calling으로 구조화 요청을 내는 방식, JSON Schema가 인자를 제약하는 방식, MCP가 도구와 컨텍스트를 런타임에 꽂는 방식입니다. 이 세 층이 모여야 감사·버전 관리·모델 교체가 가능한 스택이 됩니다.
챗봇을 실행형 Agent로 올리는 팀을 위해 책임 분리, 한 번의 도구 루프, 클라우드 Mac에서 빌드 도구를 둘 경계를 정리합니다. 비용은 OpenRouter의 Claude / GPT / Gemini 요금, 작업 공간 격리는 Agent 가상 파일시스템, 세션을 넘는 상태는 Agent Memory 비교를 참고하세요.
스택을 먼저 나눈다: 모델이 전부는 아니다
Agent를 「말하는 모델」로만 보면 신뢰성을 받치는 세 층을 놓칩니다.
- 추론 엔진: GPT, Gemini, Claude. 계획, 도구 선택, 관찰 해석.
- 호출 계약: Function Calling(tool use)과 JSON Schema. 무엇을 어떤 인자로 부를 수 있는가.
- 런타임 슬롯: Model Context Protocol(MCP)가 파일시스템, 저장소, 브라우저, 내부 API를 호스트에 표준 연결합니다.
2025–2026년 합의는 모델은 바꿔도 되고, 계약과 슬롯은 안정시켜야 한다는 점입니다. 특정 SDK 함수명에 비즈니스를 묶지 말고 도구 목록 + Schema + 실행 샌드박스로 설계하세요.
GPT, Gemini, Claude의 Agent 역할
세 곳 모두 도구 호출을 지원합니다. 차이는 주로 기본 문체, 멀티모달 입구, 긴 컨텍스트, 위험한 호출에 대한 보수성이지 「function call 유무」가 아닙니다.
- GPT: 도구 루프 문서가 성숙합니다. OpenAI Function Calling과 Responses / Chat Completions 생태계가 커서 기본 오케스트레이터나 게이트웨이 백엔드로 쓰입니다.
- Gemini: 멀티모달과 긴 컨텍스트가 강합니다. 공식 Function Calling은 문서, 스크린샷, 저장소 트리를 함께 넣는 Agent에 맞습니다.
- Claude: 코드/컴퓨터 장면의 tool use가 안정적입니다. Anthropic tool use는 고위험 코드 수정에서 월권 호출을 더 신중히 거절해야 할 경로에 맞습니다.
프로덕션에서는 단일 모델 신앙보다 라우팅이 흔합니다. 계획은 강한 추론, 대량 구조화 추출은 싼 모델, 민감한 쓰기는 사람 확인이 있는 보수 티어. 요금은 멀티 모델 비용 비교.
Function Calling: 세계와의 정식 인터페이스
Function Calling의 본질은 「모델이 함수를 실행한다」가 아니라 약속된 호출 의도를 내고, 호스트가 실행 여부를 결정한다는 점입니다.
- 모델: 도구 이름 선택, 인자 채우기, 관찰 후 재계획.
- 호스트: 인증, 한도, 검증, 실제 I/O, 결과를 메시지 목록에 편입.
필드 이름은 달라도(tools / function / input_schema) 루프는 같습니다. 도구 선언 → tool call → 실행 → tool result → 재추론. 셸 문자열을 「도구」로 쓰지 마세요. Schema를 우회하고 주입 위험을 프롬프트에 넘깁니다.
엔지니어링 하한
- 도구 이름은 안정적이고, 부작용 종류는 하나.
- 읽기와 쓰기를 분리. 쓰기는 기본이 확인 또는 샌드박스.
- 결과에
call_id를 남겨 감사와 재시도에 사용.
JSON Schema: 도구의 타입 시스템
Agent 스택에서 JSON Schema는 컴파일 타임 타입 + 런타임 검증입니다. 필수 누락, enum 이탈, 추가 속성은 비즈니스 로직 전에 실패시키고, 모델이 검증 오류를 보고 재시도하게 합니다.
각 도구의 parameters / input_schema를 버전 가능한 Schema로 두세요(JSON Schema). 프롬프트의 「repo와 branch를 넘기세요」로는 부족합니다.
Schema에 넣어야 할 제약
type,required,additionalProperties: false로 환각 필드를 줄입니다.- 경로, URL, 열거는
pattern/enum. 자유 텍스트를 식별자로 쓰지 않습니다. - 큰 로그·diff는 인자가 아니라 작업 공간 파일 + 경로 반환. VFS 온디맨드 읽기와 맞춥니다.
- 버전은 Schema 또는 도구 접미사(
deploy_v2). 이전·이후 Agent가 모호한 계약을 공유하지 않게 합니다.
검증은 모델 출력 이후, 실제 부작용 이전. 시스템 프롬프트에 JSON이라고 쓰는 것만으로는 프로덕션 통제가 아닙니다.
MCP: 도구와 컨텍스트의 공통 슬롯
MCP는 Function Calling 위의 발견과 전송을 풉니다. 도구를 앱에 하드코딩하지 않고 MCP Server가 tools, resources, prompts를 나열할 수 있습니다. 호스트(Claude Code, IDE Agent, 자체 오케스트레이터)가 표준 프로토콜로 여러 Server에 연결합니다.
벤더별 플러그인 SDK와 비교한 가치:
- 착탈식 도구: Git, 브라우저, 내부 티켓을 각각 Server로 두고 호스트는 연결과 권한만 유지.
- 참조 가능한 컨텍스트: 리소스 URI로 큰 파일을 프롬프트에 통째로 넣지 않음.
- 모델 비결합: 같은 MCP 목록을 GPT, Gemini, Claude Function Calling 층에 공급.
구현 시 MCP 도구를 JSON Schema 있는 function 선언으로 매핑하고 호스트에서 경로 화이트리스트를 겁니다. MCP는 보안 경계가 아니라 표준 플러그입니다. 샌드박스, 비밀, 감사는 호스트에 남습니다.
한 사이클: 의도에서 도구 결과까지
예: 「실패한 iOS 빌드 로그로 수정 PR」. 전형적인 순서:
- 사용자 의도. 호스트가 정책 주입(인증서 금지, 프로덕션 시크릿 금지).
- 모델이 도구 목록을 읽음(정적 등록 또는 MCP
list_tools). fetch_ci_logFunction Call. 인자는 JSON Schema 검증.- 실행기가 샌드박스 또는 클라우드 Mac에서 로그를 가져오고, 과대 출력은 VFS로.
- 결과 반환 후
apply_patch. 쓰기는 확인 또는 읽기 전용 diff. - 「지난번 Profile 만료」 같은 사실은 Memory로. Schema 인자에 넣지 않음. Memory 선정.
실패는 검증 실패·권한 거부·타임아웃 같은 구조화 오류여야 합니다. 자연어만 있으면 재시도가 추측이 됩니다.
대조표와 선정
| 층 | 담당 | 비담당 | 2026 전형 |
|---|---|---|---|
| GPT / Gemini / Claude | 계획, 도구 선택, 관찰 설명 | 실제 I/O, 인가 | 작업별 라우팅, 교체 가능 유지 |
| Function Calling | 의도를 id 있는 도구 요청으로 | 비즈니스 권한 모델 | 벤더 tool use, 호스트에서 단일 적응 |
| JSON Schema | 인자 모양, 필수, 열거 | 런타임 부작용 | 버전 Schema, 실행 전 검증 |
| MCP | 도구/리소스 발견, 표준 전송 | 샌드박스·비밀 저장소 대체 | 시스템 유형별 Server + 호스트 정책 |
프로덕션: 검증, 권한, 실패 되돌리기
연결 후 공개 전 최소 네 관문을 통과하세요.
- Schema 적대 테스트: 누락·추가·잘못된 enum. 호스트가 거절하고 모델이 오류로 고치는가.
- 월권 도구: 목록에 없는 이름, 오래된 MCP Server, 위조
call_id는 반드시 실패. - 부작용 격리: 빌드, 서명, 배포를 대화 프로세스와 분리. Agent는 기본으로 프로덕션 자격 증명을 갖지 않음.
- 관측성: 도구 이름, Schema 버전, 지연, 성공/검증 실패/권한 실패 기록.
OWASP는 과도한 권한과 프롬프트 주입을 LLM 앱의 핵심 위험으로 둡니다. 「모델이 부르라 해서 실행」은 정책이 아닙니다. OWASP LLM Top 10을 감사 앵커로 쓸 수 있습니다.
클라우드 Mac에서 Agent 도구 체인 실행
iOS / 크로스플랫폼 팀의 MCP에는 xcodebuild, 시뮬레이터, 인증서 인접 도구가 자주 나옵니다. 이들은 macOS와 Apple 도구 체인에 묶여 일반 Linux 함수 샌드박스에 맞지 않습니다.
실무 분할:
- 대화와 계획: 아무 클라우드의 GPT / Gemini / Claude.
- 저장소 I/O: VFS 또는 MCP filesystem, 경로 화이트리스트.
- 실제 빌드와 실기기: Zilmac 클라우드 Mac의 통제된 MCP Server 또는 CI. 비밀은 빌드 머신에.
모델 스택은 바꿀 수 있고 Schema와 MCP 목록은 안정되며, Apple 부작용은 노트북이 아니라 회수 가능한 클라우드 Mac 세션에 떨어집니다.
자주 묻는 질문
Function Calling과 MCP는 중복인가요?
아닙니다. Function Calling은 모델이 도구 요청을 내는 방식이고, MCP는 호스트가 도구/리소스를 발견하고 연결하는 프로토콜입니다. MCP tool은 Function Calling 선언으로 매핑됩니다.
세 모델 업체를 모두 붙여야 하나요?
아닙니다. 한 곳에서 계약과 MCP를 안정시킨 뒤 같은 Schema로 두 번째를 라우팅하세요. 평가용 삼사는 검증되지 않은 도구 면만 키웁니다.
JSON Schema를 시스템 프롬프트에만 두면 되나요?
유일한 통제로 쓰면 안 됩니다. 프롬프트는 인자 채우기 보조, 불법 인자 거절은 호스트 검증기에서. 주입이나 드리프트가 백엔드로 직행합니다.
특정 벤더 API 락인을 어떻게 피하나요?
내부는 「도구 이름 + JSON Schema + 실행 결과」로 통일하고 GPT / Gemini / Claude는 어댑터만 둡니다. MCP Server는 같은 목록을 호스트에 노출하고, 과금과 장애 전환은 게이트웨이에 둡니다.
모델은 바꿀 수 있다. 빌드 머신은 모호하면 안 된다
GPT, Gemini, Claude를 같은 Function Calling과 MCP 계약에 이은 뒤에도 iOS 납품을 막는 것은 Apple 도구 체인입니다. Zilmac 클라우드 Mac은 통제된 실행 단이 됩니다. Agent는 Schema 아래에서 작업을 보내고, 서명과 xcodebuild는 격리된 macOS에서 끝납니다.
실물 Mac 없이 Agent에 감사 가능한 빌드 슬롯을 줄 수 있습니다. — 클라우드 Mac 요금제 보기