본문 바로가기
C.W.K.
Stream
Lesson 03 of 05 · published

Host · Client · Server

~24 min · host, client, server, topology

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

MCP 의 구조는 삼각형이야. 역할 셋, 책임 셋, 그리고 누가 누구한테 말을 걸 수 있는지에 대한 엄격한 규칙.

  • Host — user 가 실제로 손에 쥐고 쓰는 application 이야. Claude Desktop, Copilot 을 얹은 VS Code, Cursor, 직접 만든 비서. UX 를 소유하고, LLM 을 (또는 그 API 호출을) 굴리고, tool 을 써도 되는지 user 한테 묻는 보안 판단까지 책임져.
  • Client — host 안에서 server 하나와 MCP 로 말을 주고받는 코드 조각이야. MCP server 세 개를 쓰는 host 라면 client 도 세 개. Server 하나에 client 하나로 붙고, 여러 개를 묶어 돌려쓰지 않아.
  • Server — client 한테 tool 과 resource, prompt 를 내주는 별도 프로세스 (또는 원격 서비스) 야. 날씨 server, GitHub server, Postgres server. Server 들은 서로의 존재를 몰라. 각자 자기 client 하고만 말해.

규칙은 엄격해. Server 는 다른 server 한테 절대 말을 걸지 않고, host 를 직접 건드리지도 않아. Server 를 가로지르는 일은 전부 host 를 거쳐. 일부러 그렇게 만든 거야. 덕분에 server 하나가 터져도 그 여파가 갇혀 있거든 — 악의적이거나 버그투성이인 server 가 할 수 있는 최악이라고 해봐야 자기 host 한테만 못되게 구는 거야. 보안 경계가 곧 host 고, 그 경계를 topology 자체가 강제해.

여기서 두 가지가 따라 나와. 첫째, capability 를 조합하는 건 host 의 일 이야. User 가 'Postgres 에서 user 찾아서 요약을 Slack 에 올려줘' 라고 하면, host 가 Postgres server 에 한 번, Slack server 에 한 번 호출을 넣고 순서를 잡아. 두 server 는 서로를 모른 채로 있어. 둘째, 권한은 server 마다 따로 야. GitHub server 에 '코드 읽기' 를 허락했다고 filesystem server 까지 같은 권한을 얻는 게 아니고, 반대도 마찬가지야. 삼각형 자체가 신뢰 모델인 셈이지.

Code

MCP server 둘 있는 host — client 둘, cross-talk 없음·python
# Host runtime pseudocode
from mcp.client.stdio import stdio_client
from mcp.client.session import ClientSession

async def host_runtime():
    # Server 마다 client 한 개. 각 session 독립.
    github_session  = await connect_to_server("github_mcp", argv=["uvx","github-mcp"])
    postgres_session = await connect_to_server("postgres_mcp", argv=["uvx","postgres-mcp","--dsn","..."])

    # HOST 가 orchestrate. Server 들 서로 말 안 함.
    github_data   = await github_session.call_tool("search_issues", {"query": "..."})
    postgres_data = await postgres_session.call_tool("query", {"sql": "select ..."})
    return summarize(github_data, postgres_data)

External links

Exercise

네가 즐겨 쓰는 MCP 기반 product (Claude Desktop, Cursor, 직접 만든 비서) 를 삼각형으로 그려봐. Host 에 이름을 붙이고, server 를 전부 적고, server 마다 client 연결선을 그려. 어느 두 server 사이에도 화살표가 없다는 걸 확인해. 그 없는 화살표가 곧 보안 모델이야.

Progress

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

댓글 0

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

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