■ MCP connector
표시가 없는 문장은 공식 문서에서 확인한 내용이에요. 다른 표시는 읽는 법
왜 배우나 — 시험이 요구하는 것
시험 목표 3.7 연결 방식 고르기 · D3 연결 19%Evaluate connection protocols and select the appropriate integration mechanism (MCP, API/CLI, agent-to-agent)
이 개념으로 푸는 판단 (할 수 있어야 하는 것)
- 3.7① ZDR 계약 고객용 에이전트에 사내 원격 MCP 서버의 도구·prompts 를 Messages API 로 바로 붙이려 한다 — MCP connector 로 되나? — MCP connector vs 우리 쪽 클라이언트가 MCP 를 맡는 구현
- 3.2① 같은 머신의 stdio MCP 서버와 원격 HTTP MCP 서버를 함께 붙인다 — 자격증명을 각각 어떻게 주나? — 전송 방식별 인증 고르기
한눈에
Messages API 요청에 mcp_servers 를 넣으면 API 가 원격 MCP 서버에 붙어 도구를 부른다. 그래서 우리가 MCP 클라이언트를 안 짜도 된다. 베타 기능이다(헤더 mcp-client-2025-11-20)
MCP 서버의 요소는 셋이다. connector 는 그중 첫째만 쓴다 (Skilljar)
- tools : 모델이 부른다
- resources : 앱이 가져온다
- prompts : 사용자가 누른다
비유 GitHub-hosted runner 와 같다. 관리형이라 편하지만 공개망만 닿고 옵션이 좁다. 사내망이나 규정 요구가 있으면 self-hosted runner(= 우리 쪽 클라이언트)를 쓴다
ELI5
택배 회사가 "집 앞까지 가져다줄게요" 하는데, 큰길가 집만 가요.
- 큰길가(공개 인터넷) 집이면 제일 편해요.
- 골목 안(사내망·내 컴퓨터) 집은 직접 가지러 가야 해요.
- 물건 중 "상자"만 날라 주고 "편지·사진"은 안 날라요.
- 택배 기록을 지워 주는 약속(ZDR)도 안 돼요.
개념 설명
원리
누가 MCP 클라이언트인가
- connector 에서는 Anthropic API 쪽이 MCP 클라이언트 역할을 한다. 우리는 요청에 서버 URL 만 적는다. 그래서 코드가 가장 적다.
- 그래서 API 가 닿을 수 있는 곳만 된다. 그곳은 공개 HTTPS 다. 우리 머신의 stdio 프로세스와 방화벽 안 서버에는 못 닿는다.
- 데이터가 Anthropic 을 거쳐 MCP 서버와 오간다. 그래서 도구 정의와 결과가 표준 보존 정책을 따른다. 그 결과 ZDR 대상이 아니다.
기능 범위
- MCP 서버 요소는 셋이다. connector 는 tools 만 쓴다.
- tools : 모델이 부른다
- resources : 앱이 가져와 컨텍스트에 넣는다
- prompts : 사용자가 고르는 틀이다
- resources 와 prompts 는 앱과 사용자가 쓰는 요소다. 그래서 앱 쪽에 클라이언트가 있어야 자연스럽다.
대안은 우리 쪽 클라이언트다
- 우리 앱이 MCP SDK 로 서버에 직접 연결한다. 그리고 SDK 도우미로 MCP 도구·프롬프트·리소스를 Claude API 형식으로 바꾼다. 로컬·사내망·prompts·resources·ZDR 을 전부 우리가 통제(control)한다.
- 대가는 연결 코드와 운영을 우리가 맡는 것이다.
규칙과 판단
갈림길
①②⑤ connector 로 되나 [3.7①]
우리 쪽 클라이언트
MCP 기능 중 도구 호출만 된다. resources 와 prompts 는 안 된다
우리 쪽 클라이언트
로컬 stdio 서버는 직접 붙지 못한다
우리 쪽 클라이언트 · tunnels
서버는 HTTP 로 공개 노출돼야 한다. 사내망에는 MCP tunnels(리서치 프리뷰, 2026-05-19)가 있다. 프리뷰라서 시험 정답 선택지로는 약하다 (추론)
우리 쪽 클라이언트
connector 는 ZDR 대상이 아니다. 도구 정의와 실행 결과까지 표준 보존 정책이 적용된다
우리 쪽 클라이언트
Amazon Bedrock · Google Cloud 에서는 안 된다 (2026-09-28 조회)
mcp_servers
URL 로 닿는 원격 서버이고 도구만 쓰면 mcp_servers 를 쓴다
③ 도구 세트 좁히기 [3.7①]
denylist
쓰기·파괴 도구를 enabled: false 로 끈다
allowlist
default_config.enabled: false 로 끄고 필요한 것만 켠다
defer_loading + tool search
자세한 것은 ◆ 도구 미리 싣기 vs tool search 에 있다
흐름
그림 속 이름·금액·시간·토큰 수는 예시예요. 공식 한도·동작은 카드 본문 값이 기준.
장면 글로 보기
칸 : 우리 앱 → Claude API → MCP 서버
질문 : MCP 연결은 누가 맡아야 할까?
① connector ✓
- 시작 : 우리 앱 — 말 : “주문 A-1024 배송 어디쯤이에요?”
- 요청 : 우리 앱 → Claude API :
mcp_servers·mcp_toolset— 쪽지 : mcp_servers: / url: https://mcp.ship… / tools: mcp_toolset - 도구 호출 : Claude API → MCP 서버 : 공개 HTTP ·
https://— 쪽지 : tools/call / track_order(A-1024) - 끝 : API 가 원격 MCP 서버에 붙어 도구를 부른다. 우리는 MCP 클라이언트를 안 짠다
② 로컬 stdio 서버 ≠
- 시작 : 우리 앱 — 말 : “사내 CRM 에서 / 이 고객 찾아 줘”
- 요청 : 우리 앱 → Claude API :
mcp_servers— 쪽지 : mcp_servers: / 로컬 stdio 서버 crm - 도구 호출 : Claude API → MCP 서버 : 로컬 stdio 에는 직접 못 닿는다 — 쪽지 : 닿지 못함 / 공개 https:// 만
- 끝 : 한계가 하나라도 걸리면 우리 쪽 클라이언트가 MCP 연결을 맡는다
③ 우리 쪽 클라이언트 ✓
- 시작 : 우리 앱 — 말 : “주문 A-1024 배송 어디쯤이에요?”
- 연결 : 우리 앱 → MCP 서버 : MCP SDK 로 직접 연결한다 — 쪽지 : tools/list → / track_order 외 2개
- 변환 : 우리 앱 : 변환 도우미
mcpTools— 쪽지 : mcpTools(목록) → / Claudetools형식 - 요청 : 우리 앱 → Claude API : tool runner — 쪽지 : tools: [track_order …] / mcp_servers 없음
- 끝 : 로컬 서버·prompts·resources·ZDR·연결 제어가 걸리면 클라이언트 도우미로 우리가 연결한다
나머지 규칙
-
인증(authentication) : OAuth 흐름과 갱신은 호출 전에 우리가 처리한다. 그리고
authorization_token에 액세스 토큰을 넣는다자세한 것은 ■ MCP 인증·인가 에 있다
-
Batches API 요청에도
mcp_servers를 넣을 수 있다. 요금은 일반 요청과 같다시험 뒤 변경 : 도구 목록을 고정하는 베타 헤더
mcp-client-2026-09-15가 생겼다(2026-09-22). 서버가 대화 중 도구를 바꿔도 Claude 가 보는 목록이 안 바뀐다. 옛 헤더mcp-client-2025-04-04는 폐기됐다
규칙 원문 ①②③⑤ (갈림길로 그린 규칙)
-
한계는 4가지다. 하나라도 걸리면 우리 쪽 클라이언트가 MCP 연결을 맡는다 [3.7①]
한계 걸리는 요구 MCP 기능 중 도구 호출만 된다 (resources·prompts 는 안 된다) prompts·resources 가 필요하다 서버는 HTTP 로 공개 노출돼야 한다(Streamable HTTP·SSE). URL 은 https:/다. 로컬 stdio 는 직접 붙지 못한다/ 로컬 서버 · 사내망 서버 ZDR 대상이 아니다 (도구 정의·실행 결과까지 표준 보존 정책이 적용된다) ZDR 계약 플랫폼 : Claude API · Claude Platform on AWS · Microsoft Foundry 는 beta 다. Amazon Bedrock · Google Cloud 는 안 된다 (2026-09-28 조회) Bedrock·Google Cloud 로 Claude 를 쓴다 -
우리 쪽 클라이언트는 세 가지로 이루어진다
- MCP SDK 로 서버에 직접 연결한다
- Anthropic SDK 변환 도우미(
mcpTools·mcpMessages·mcpResourceToContent·mcpResourceToFile)로 변환한다 - tool runner 로 돌린다
공식 판단 기준 : URL 로 닿는 원격 서버이고 도구만 쓰면
mcp_servers를 쓴다. 로컬 서버·prompts·resources·연결 제어가 필요하면 클라이언트 도우미를 쓴다 -
설정은 서버 정의(
mcp_servers: url·name·authorization_token)와 도구 세트(tools안mcp_toolset)로 한다. 서버마다 도구 세트는 정확히 하나다. 기본은 모든 도구를 켠다. 좁히는 방법은 셋이다- allowlist :
default_config.enabled: false+ 필요한 것만 - denylist : 쓰기·파괴 도구
enabled: false defer_loading+ tool search
자세한 것은 ■ 최소 권한 · ◆ 도구 미리 싣기 vs tool search 에 있다
- allowlist :
-
사내망 서버를 connector 로 붙이는 길은 MCP tunnels(리서치 프리뷰, 2026-05-19)다. 터널은 바깥으로만 나가는 연결이다. 인바운드 포트와 공개 노출이 필요 없다. 터널은 서버 인증을 대신하지 않는다(서버 OAuth 는 따로 한다). ZDR·BAA 적격은 별도 문서에 있다
프리뷰라서 시험 정답 선택지로는 약하다 (추론)
더 깊이 : 판단 규칙 · 상황 변수 (설명)
판단 규칙
| 조건 | 답 | 근거 |
|---|---|---|
| 공개 원격 서버이고 도구만 필요하다 | connector (mcp_) | mcp-connector md 원본 |
| prompts 또는 resources 가 필요하다 | 우리 쪽 클라이언트 + SDK 도우미 | mcp-connector |
| 로컬 stdio 서버다 | 우리 쪽 클라이언트 | mcp-connector |
| ZDR 계약이 필요하다 | connector 는 안 된다. 우리 쪽 클라이언트를 쓴다 | mcp-connector |
| Amazon Bedrock · Google Cloud 로 Claude 를 쓴다 | connector 는 안 된다 | mcp-connector md 원본 |
| Claude API · Claude Platform on AWS · Microsoft Foundry 를 쓴다 | connector 가 베타로 된다 | mcp-connector md 원본 |
| 서버 도구 중 일부만 켜야 한다 | mcp_ allowlist/denylist | mcp-connector |
| 서버가 OAuth 를 요구한다 | 우리가 흐름을 처리하고 authorization_ 에 넣는다 | mcp-connector |
| 서버가 여러 개이고 도구가 수십 개다 | defer_ + tool search | mcp-connector |
상황 변수
| 변수 | 값 | 답 쪽 | 등급 | 근거 |
|---|---|---|---|---|
| 서버 위치 | 공개 인터넷 HTTPS | connector 를 쓸 수 있다 | 판단 규칙 1 | |
| 서버 위치 | 사내망 | 기본은 우리 쪽 클라이언트다. tunnels 프리뷰면 connector 도 된다 | (tunnels 문장) · 추론(프리뷰라 정답 선택지로는 약함) | mcp-tunnels |
| 서버 위치 | 같은 머신 stdio | 우리 쪽 클라이언트 | mcp-connector | |
| 필요한 요소 | tools 만 | connector 를 쓸 수 있다 | mcp-connector | |
| 필요한 요소 | prompts·resources | 우리 쪽 클라이언트 | mcp-connector | |
| 데이터 보존 | 표준 보존으로 괜찮다 | connector 를 쓸 수 있다 | mcp-connector | |
| 데이터 보존 | ZDR 이 꼭 있어야 한다 | 우리 쪽 클라이언트 (Managed Agents 도 대상이 아니다) | mcp-connector · managed-agents | |
| 플랫폼 | Bedrock·Google Cloud | 우리 쪽 클라이언트 | md 원본 | |
| 호출 방식 | Batches API | connector 를 쓸 수 있다. 요금은 같다 | mcp-connector |
연습 문제
고객사가 공개 HTTPS 로 열린 배송 조회 MCP 서버공개 서버의 도구 3개만 쓰려 한다. 다만 이 고객사는 Anthropic 과 ZDR 계약을 맺고 있다ZDR 계약. 코드를 가장 적게 쓰려고 요청에 mcp_servers 를 넣자는 제안이 나왔다. 어떻게 연결해야 하나?
시험 대비
함정
- "connector 로 로컬 stdio 서버도 연결한다" 는 함정이다. 로컬 stdio 서버는 직접 붙지 못한다. 서버는 HTTP 로 공개 노출돼야 한다
- "connector 에서 resources·prompts 도 쓴다" 는 함정이다. MCP 기능 중 도구 호출만 된다
- "관리형이니 ZDR 도 알아서 맞는다" 는 함정이다. connector 는 ZDR 대상이 아니다
- 반대로 넓힌 함정도 있다. "클라우드 플랫폼에선 전부 안 된다" 는 함정이다. Foundry·Claude Platform on AWS 는 beta 다. 안 되는 것은 Bedrock·Google Cloud 다
- "사내망 서버는 connector 로 절대 못 붙인다" 는 함정이다. tunnels 프리뷰가 있다 (단 프리뷰다)
- "그럼 Managed Agents 로 돌리면 ZDR 이 해결된다" 는 함정이다. Managed Agents 도 ZDR·HIPAA BAA 대상이 아니다. 자세한 것은 ◆ 직접 API vs Agent SDK vs CLI vs Managed Agents 에 있다
- "규제 고객이면 클라이언트 측" 은 공식 문장이 아니다. ① 표에서 나오는 추론이다 (목록 메모와 같다)
신호
"Of the feature set of the MCP specification, only tool calls are currently supported."
"The server must be publicly exposed through HTTP (supports both Streamable HTTP and SSE transports). Local STDIO servers cannot be connected directly."
"The MCP connector is not covered by ZDR arrangements."
"Use the client-side helpers when you need local servers, prompts, resources, or more control over the connection with the base SDK."
"Denylisting write or destructive tools is recommended when building read-only assistants"
더 깊이 : 뒤집히는 때 · 오답 재료 (설명)
뒤집히는 때
1. 사내망인데 connector 가 되는 때
- 조건 : 사내 MCP 서버를 공개하지 않고 connector 로 쓰고 싶다.
- 판단 : MCP tunnels(2026-05-19 리서치 프리뷰)를 쓴다. 우리 망 안의 cloudflared 가 바깥으로만 연결한다. 인바운드 포트는 열지 않는다. 터널 호스트명을
mcp_serversurl 로 쓴다. 서버 OAuth 는 따로 한다. - 등급 : (기능) · 추론(시험은 프리뷰 기능을 정답으로 쓰기 어려움 — 지문에 tunnels 가 나오지 않으면 "사내망 = 우리 쪽 클라이언트"가 안전)
- 근거 : mcp-tunnels · 릴리스 노트
- 주의 : tunnels 의 ZDR·BAA 적격은 이 문서에 없다. 별도 문서를 가리킨다(미해결 1).
2. 도구만 필요한데도 connector 가 안 되는 때
- 조건 : 공개 HTTPS 서버이고 도구만 쓴다. 그런데 고객이 ZDR 계약을 맺었다.
- 판단 : 기능은 맞아도 ZDR 한계 하나로 빠진다. 그래서 우리 쪽 클라이언트를 쓴다. "기능만 맞으면 connector" 로 고르면 틀린다.
- 근거 : mcp-connector
3. 한계가 하나도 안 걸리는 때
- 조건 : 아래가 모두 맞다.
- 공개 SaaS MCP 서버다
- 도구만 쓴다
- Claude API 를 직접 쓴다
- ZDR 이 없다
- 판단 : connector 가 가장 단순하다. 여기서 "우리가 MCP 클라이언트를 직접 짠다"는 과설계 쪽이다.
- 등급 : (connector 가능) · 업계 일반(과설계 판단)
- 근거 : mcp-connector · building-effective-agents "finding the simplest solution possible"
4. 대화 도중 서버 도구가 바뀌는 때
- 조건 : 서버가 배포 중 도구 이름을 바꾼다. 그래서 긴 대화 중간에 Claude 가 보는 목록이 달라진다.
- 판단 :
mcp-client-2026-09-15로 목록을 기록하고 고정한다. 2026-09-22 에 추가돼서 시험 범위 밖일 가능성이 있다. - 등급 : 시험 뒤 변경
- 근거 : mcp-connector · 릴리스 노트
오답 재료
| 오답 | 왜 끌리나 | 왜 틀리나 | 근거 |
|---|---|---|---|
| "connector 로 로컬 stdio 서버도 연결" | MCP 면 다 될 것 같다 | 공개 HTTP 서버만 된다 | mcp-connector |
| "connector 에서 resources·prompts 도 쓴다" | MCP 표준 기능이기 때문이다 | 도구 호출만 된다 | mcp-connector |
| "관리형 기능이니 ZDR 도 된다" | Anthropic 이 관리하면 규정도 맞을 것 같다 | ZDR 대상이 아니다 | mcp-connector |
| "Bedrock·Vertex·Foundry 전부 connector 불가" | 클라우드는 제한이 있을 것 같다 | Foundry·Claude Platform on AWS 는 beta 다 | md 원본 |
| "Bedrock 에서도 connector 쓴다" | 같은 Claude 모델이다 | Bedrock·Google Cloud 는 안 된다 | md 원본 |
| "Managed Agents 로 옮기면 ZDR 해결" | 호스팅이 다르기 때문이다 | Managed Agents 도 ZDR·BAA 대상이 아니다 | managed-agents |
| "서버를 붙이면 필요한 도구만 켜진다" | 알아서 고를 것 같다 | 기본은 모든 도구를 켠다. 끄려면 configs 를 쓴다 | mcp-connector |
참고
더 깊이 : 출처 · 상태 · 미해결 (참고)
출처
- 가이드 목표 3.7 공식 시험 가이드 v1.0
- mcp-connector (md 원본 en-mcp-connector-source)
- mcp-tunnels overview
- 릴리스 노트
- Skilljar MCP 296691
상태
- 시험 뒤 변경 1곳
- 추론 2줄
미해결
- MCP tunnels 의 ZDR·HIPAA BAA 적격 : overview 는 "API and data retention" 문서를 가리키기만 한다. 그 문서는 이번에 받지 않았다.
- 목록 3.7① 의 "Microsoft Foundry·Claude Platform on AWS 는 beta — 2026-09-27 조회값" 은 2026-09-28 md 원본 머리 표로 같은 값임을 확인했다. 이 표는 defuddle 본문에 안 나온다. 그래서 md 원본을 따로 받았다(
en-mcp-connector-source.md). - 목록의 "헤더 mcp-client-2025-11-20 현행 · 2025-04-04 폐기 · 새 헤더 mcp-client-2026-09-15" 는 확인했다. 단 새 헤더는 "Claude API 에서 사용 가능"이다. 다른 플랫폼에서 되는지는 미확인이다.