지금까지 ecosystem 사용으로 다듬은 한 짧은 휴리스틱. 새 integration 마다 위에서 아래로 걷기 — 답이 거의 항상 깔끔히 떨어져.
- 소비자가 너 control 하는 단일, bounded 한 LLM-driven app? → 그 provider 의 function calling. 단일-app 우려에 추가 protocol surface 도입 X.
- 같은 capability 가 — 너 control 안 하는 — 여러 AI product 도와? → MCP server 작성. 추가 product 마다 코드 변경 대신 config 변경.
- 비-AI client (브라우저, 모바일 앱, 스크립트) 도 소비? → REST/OpenAPI 도 노출; MCP server 가 감싸는 underlying API 로, 또는 thin MCP layer 가 거기서 도출되는 canonical contract 로.
- Producer 가 — 소비자가 빨리 반응해야 할 — event push? → webhook 추가. 그 event 도 같은 OpenAPI 문서에 묘사 가능.
- Operation 이 느리고 소비자가 별도 URL 없이 in-protocol asynchrony 원함? → MCP async task.
더 깊은 교훈은 합성. 맞는 답이 'MCP 또는 REST' 인 경우 드물어; 'REST 가 underlying truth, MCP 가 agent-친화 facade, function calling 이 모델 호출 envelope, webhook 이 event 방향, async task 가 느린 경로' 야. 각 contract 가 한 조각 해결. Stack 이 정상.