
01 · THE QUESTION
Tool calling이 있는데 왜 MCP가 또 필요할까
Tool calling은 모델이 어떤 행동을 원한다는 사실을 구조화해 표현하는 메커니즘입니다. MCP는 여러 host와 server 사이에서 tool, resource, prompt 같은 capability를 발견하고 사용하기 위한 protocol입니다. 두 기술은 경쟁하지 않고 서로 다른 경계를 담당합니다.
02 · ACTOR MAP
사용자는 MCP server와 직접 대화하지 않습니다
MCP ACTORS
User
↕
Host application
├─ Agent runtime + permission policy
├─ MCP client A ↔ MCP server A ↔ files / API
└─ MCP client B ↔ MCP server B ↔ database / serviceHost는 사용자 경험과 agent runtime, permission policy를 소유합니다. 각 server와 통신하는 client를 관리하고, 발견된 capability를 자신의 tool registry와 UI에 흡수합니다. Server는 기능과 context를 제공하지만 최종 사용자에게 무엇을 노출하고 실행할지는 host가 결정합니다.
03 · CAPABILITIES
Tools, resources, prompts는 주도권이 다릅니다
| Surface | 주도권 | 대표 용도 |
|---|---|---|
| Tools | Model 또는 host가 호출 | 조회, 계산, 변경 같은 실행 가능한 행동 |
| Resources | Application이 읽고 context로 구성 | 파일, schema, 문서, 상태 |
| Prompts | User 또는 application이 선택 | 재사용 가능한 작업 template |
| Sampling | Server가 host에 모델 생성을 요청 | Server workflow 안의 model-assisted step |
| Elicitation | Server가 host를 통해 사용자 입력 요청 | 부족한 정보나 확인 수집 |
| Roots | Host가 접근 가능한 filesystem 경계 제공 | 작업 공간 범위 제한 |
MCP를 “remote tool 규격”으로만 보면 server가 제공하는 surface와 client가 제공하는 surface의 양방향성이 보이지 않습니다. 동시에 capability가 있다는 사실과 사용할 권한이 있다는 사실은 구분해야 합니다.
04 · LIFECYCLE
MCP는 연결 문자열이 아니라 lifecycle입니다
- Initialization: protocol version과 서로 지원하는 capability를 협상합니다.
- Discovery: tool, resource, prompt 목록과 schema를 조회합니다.
- Invocation: 선택한 capability를 호출하고 request id와 result를 연결합니다.
- Notification: 목록이나 resource가 바뀌었음을 전달하고 cache를 갱신합니다.
- Shutdown: process, connection, subscription을 정리합니다.
Local tool과 MCP tool의 선택 기준
한 application에서만 쓰는 작고 안정적인 함수는 local tool이 단순합니다. 여러 host에서 재사용하고 discovery, lifecycle, 독립 배포가 필요하다면 MCP server가 의미를 갖습니다. Protocol 도입 비용보다 경계 표준화의 이점이 큰지를 먼저 봅니다.
05 · TRUST
Server를 붙이기 전에 권한과 실패를 설계합니다
| 질문 | 운영 설계 |
|---|---|
| 누가 server를 신뢰하는가? | Server allowlist, package/source provenance |
| 무엇을 읽을 수 있는가? | Roots, resource scope, secret redaction |
| 무엇을 바꿀 수 있는가? | Read/write 분리, approval, sandbox |
| Result를 믿어도 되는가? | Tool-result injection 방어와 output validation |
| 연결이 끊기면? | Timeout, retry policy, graceful degradation |
디버깅도 모델보다 연결 계층부터 시작합니다. Process가 살아 있는지, transport가 연결됐는지, initialization이 성공했는지, discovery에 capability가 보이는지, schema가 맞는지, 마지막에 model selection을 확인하는 순서가 빠릅니다.