← 노드 한 장 전체#77 · MCP Client Tool
MCP Client Tool
다른 흐름의 계산 도구도 AI에 연결할 수 있어요
이 글은 이런 분께다른 워크플로우의 도구를 MCP로 Agent에 연결하고 실제 서버 실행까지 확인하려는 n8n 입문자

1분 영상은 @workflow.hanjang 에 순서대로 공개돼요
다른 흐름의 계산 도구도 AI에 연결할 수 있어요.
MCP Client Tool로 새로 만든 자기 수학 서버만 호출했습니다. 먼저 tools/list가 calculate_discount_total 하나인지 확인한 뒤, 직접 쓴 샘플 50000원·3개·10% 할인을 한 번 계산했어요.
먼저 결과부터
파일 순서: 1 server(MCP Server Trigger+수학 Code Tool), 2 caller(Agent+MCP Client Tool). 실제 실행은 서버 #74968 / Caller #74967. query 50000·3·10 → 서버 문자열 135000 → Client text 135000 → AI 135000원. provider 응답 2회, 입력 609+출력 40=649토큰을 모두 기록했습니다. 사전 목록 점검 MCP 요청 3개와 실제 도구 실행은 구분했고, 보이지 않는 내부 handshake 수는 추정하지 않았습니다. None은 이번 무해 fixture 전용이며 finally 비활성 GET까지 확인했습니다. 공식 문서 https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.toolmcp/
우리가 실제로 돌린 기록 · 실행 #74968·#74967 · 2026-10-30
우리가 실제로 돌린 기록 · 실행 #74968·#74967 · 2026-10-30

따라 하기
실제로 실행한 워크플로우를 바탕으로 정리했어요. 계정·식별자는 공개용 값으로 치환했고, 그 밖의 차이는 아래 주의사항에 표시했어요. n8n 캔버스에서 +를 눌러 노드를 순서대로 추가하고 같은 값을 넣으면 돼요. 빨간 제목이 이번 편의 주인공 노드예요. 표 왼쪽은 n8n 편집기에 보이는 칸 이름, 오른쪽은 다운로드 JSON의 설정값이에요. 직접 입력하기 번거로우면 JSON을 받아 ⋯ → Import from File로 가져오세요.
워크플로우 1 · [노드 한 장] MCP Client Tool · 전용 무해 수학 서버
Step 1. MCP Server Trigger 노드 추가이름: MCP Server Trigger
| Authentication | None |
| Path | YOUR_MCP_TEST_PATH |
Step 2. Code Tool 노드 추가이름: calculate_discount_total
| Description | 무해한 샘플 할인 계산만 수행합니다. query는 unitPrice, quantity, discountPercent 숫자를 담은 JSON 문자열이어야 합니다. 예: {"unitPrice":50000,"quantity":3,"discountPercent":10}. 반환은 합계 숫자 문자열입니다. 파일·네트워크·개인 데이터 접근이 없습니다. |
| Language | JavaScript |
| JavaScript | // 직접 작성한 가상 샘플. JSON 숫자를 검증하고 고정 산술만 수행합니다.
const p = JSON.parse(query);
const unitPrice = Number(p.unitPrice);
const quantity = Number(p.quantity);
const discountPercent = Number(p.discountPercent);
if (!Number.isFinite(unitPrice) || unitPrice <= 0 || !Number.isInteger(quantity) || quantity <= 0 || !Number.isFinite(discountPercent) || discountPercent < 0 || discountPercent > 100) {
throw new Error('Invalid numeric inputs');
}
const total = unitPrice * quantity * (1 - discountPercent / 100);
if (!Number.isFinite(total)) throw new Error('Invalid total');
return String(total); |
| Specify Input Schema | 꺼짐 |
워크플로우 2 · [노드 한 장] MCP Client Tool · 자기 수학 서버 한 번 호출
Step 3. Manual Trigger 노드 추가이름: Run manually
설정 없이 그대로 추가해요.
Step 4. AI Agent 노드 추가이름: AI Agent
| Source for Prompt (User Message) | Define below |
| Prompt (User Message) | 직접 작성한 가상 샘플입니다. MCP Client Tool로 제공된 calculate_discount_total 도구를 정확히 한 번 호출하세요. query는 {"unitPrice":50000,"quantity":3,"discountPercent":10} JSON 문자열입니다. 도구의 반환값을 확인한 뒤 최종 답은 합계 숫자와 원만 출력하세요. 배송비·추가 세금은 없다고 가정합니다. 혼자 계산한 값을 도구 반환값 대신 쓰지 마세요. |
| Options › System Message | 자기 무해 수학 MCP 서버의 calculate_discount_total만 호출하는 실습 Agent입니다. 실제 도구 결과만 최종 답으로 사용하고 내부 사고 과정은 출력하지 마세요. |
| Options › Max Iterations | 3 |
| Options › Return Intermediate Steps | 꺼짐 |
| Options › Enable Streaming | 꺼짐 |
| Options › Force Tool Call on First Iteration | 켜짐 |
Step 5. MCP Client Tool 노드 추가이름: MCP Client Tool
| Endpoint | YOUR_MCP_TEST_URL |
| Server Transport | HTTP Streamable |
| Authentication | None |
| Tools to Include | Selected |
| Tools to Include | calculate_discount_total |
| Options › Timeout | 20000 |
Step 6. OpenAI Chat Model 노드 추가이름: OpenAI Chat Model
| Model | gpt-4.1-mini |
| Options › Sampling Temperature | 0 |
| Options › Maximum Number of Tokens | 200 |
| Options › Max Retries | 0 |
가져와서 쓸 때 확인할 것
- [실제 확인] 서버와 Client 모두 None을 지원합니다. None은 새 credentials0·고정 수학 fixture를 잠깐 켜는 이번 실습에만 사용했으며 운영용 권고가 아닙니다.
- [실제 확인] 소유·구조 GET 검증 후 새 서버만 활성화했고 tools/list가 calculate_discount_total 정확히 1개임을 확인한 뒤에만 Caller를 실행했습니다. 기존 운영/외부 MCP는 연결하지 않았습니다.
- [실제 확인] UI Production URL의 실제 주소를 사용했습니다. 공개본의 YOUR_MCP_TEST_URL은 비식별 placeholder일 뿐 UI Test URL을 사용했다는 뜻이 아닙니다. 실제 endpoint·path·webhookId는 제거했습니다.
- [실제 확인] Client 입력 JSON과 서버 query가 동일하며 서버 문자열 135000 → Client text 135000 → AI 135000원으로 대조했습니다. Native Client 실행1, 서버 수학 실행1, provider 응답2를 확인했습니다.
- [실측 범위] provider 입력609+출력40=649토큰, 직접 사전 점검 MCP initialize/initialized/tools-list 3회 상태를 기록했습니다. Native Client 내부 handshake HTTP 수와 브라우저 내부 HTTP 수는 관측되지 않아 추정하지 않았습니다.
- [실제 확인] 전체 활성화 절차의 finally에서 새 서버를 deactivate하고 GET active=false 확인, 후속 GET에서 서버/Caller 모두 비활성을 확인했습니다.
- [한계] 수학 코드만 JSON.parse·Number 검사·고정 산술을 쓰며 파일·외부 API·개인 데이터에 접근하지 않습니다. MCP 전송 자체는 HTTP이며 코드의 무해함이 운영 보안을 대체하지 않습니다.
- [배포 순서] publicSources/workflowIds/labels는 server,caller 순서입니다. executionIds도 같은 라벨 순서이며 시간순은 Caller74967→Server74968입니다.
- [공개 범위] 샘플은 직접 작성했고 AI 최종 답은 실제 실행 결과입니다. 숨은 reasoning/사고 로그는 공개하지 않았습니다.
- YOUR_… 표시를 내 값으로 바꾸고, 계정이 필요한 서비스 노드만 자격 증명을 연결하세요. 그런 칸이나 노드가 없는 예제는 추가 계정 없이 실행할 수 있어요.
노드의 모든 옵션은 n8n 공식 문서에서 볼 수 있어요.