C.W.K.
Stream
Lesson 01 of 05 · published

6 Primitive 지도

~18 min · primitives, overview, server-side, client-side

Level 0호기심 많은 독자
0 XP0/48 lessons0/14 achievements
0/100 XP to next level100 XP to go0% complete

MCP primitive 가 trio 둘로 깔끔히 나뉨. Server 쪽 은 host 가 쓸 capability publish. Client 쪽 은 server 가 요청 가능한 capability publish. 의도적 대칭이고, 어떤 primitive 파고 들기 전에 짚어둘 가치 있어.

Server feature (server → host)Client feature (host → server)
Resources — host 가 가져올 수 있는 read-only 데이터Sampling — server 가 host LLM 한테 자기 대신 생각해달라고 요청
Prompts — user 가 호출 가능한 templated workflowRoots — server 가 host 한테 어떤 directory/URI 가 scope 안인지 물음
Tools — side effect 있을 수 있는 callable functionElicitation — server 가 host 한테 user 에게 input 묻게 요청

분리가 책임을 명확히 함. Server 는 자기가 소유한 capability 노출; client 는 host 만 fulfill 가능한 capability 노출. Server 는 LLM 못 돌려 (없으니까) — sampling 은 server 가 요청 하는 client capability 여야 함. Client 는 본 적 없는 DB 의 table enumerate 못 함 — resource 는 client 가 fetch 하는 server capability 여야 함.

Trio 분리 외워두고 표는 잊어. 기억할 건 '이 기능 있으면 어디 살아?' 야. Read-only 데이터 → Resource. User 가 호출하는 workflow → Prompt. Side effect 액션 → Tool. Server 가 요청한 LLM 호출 → Sampling. Filesystem 경계 → Roots. User 한테 질문 → Elicitation.

Code

Capability 광고 — 양쪽 다·json
// Server capability (server 가 제공)
{
  "tools":     { "listChanged": true },
  "resources": { "listChanged": true, "subscribe": true },
  "prompts":   { "listChanged": true }
}

// Client capability (server 가 host 한테 요청 가능)
{
  "sampling":    {},
  "roots":       { "listChanged": true },
  "elicitation": {}
}

External links

Exercise

가상의 'project-manager' MCP server 가 노출할 수 있는 capability 5 개 list. 각각 6 primitive 중 어느 거인지 결정. 흥미로운 케이스는 borderline ('pending task list' — Resource 야 Tool 야?). 한 문장으로 변호.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.