3줄 요약
- 대상: n8n MCP 서버로 AI에게 워크플로우 맡기기: 셀프호스팅 설치부터 API 키 연동까지(2026) 내용을 빠르게 파악하려는 독자
- 핵심: 설치·설정·운영 포인트를 핵심 단계 중심으로 정리
- 결과: 재현 가능한 절차와 점검 기준으로 시행착오를 줄임
트러블슈팅
- 증상이 나오면 로그·버전·포트/권한·네트워크 순서로 확인합니다.
- 설정 반영이 안 되면 서비스 재시작/캐시 비우기 후 다시 검증합니다.
결론 + 다음 단계
핵심 절차를 먼저 완료하고, 운영 단계에서는 백업·모니터링·기본 보안 설정을 함께 적용하세요.
3줄 요약
- 대상: n8n MCP 서버로 AI에게 워크플로우 맡기기: 셀프호스팅 설치부터 API 키 연동까지(2026) 내용을 빠르게 파악하려는 독자
- 핵심: 설치·설정·운영 포인트를 핵심 단계 중심으로 정리
- 결과: 재현 가능한 절차와 점검 기준으로 시행착오를 줄임
트러블슈팅
- 증상이 나오면 로그·버전·포트/권한·네트워크 순서로 확인합니다.
- 설정 반영이 안 되면 서비스 재시작/캐시 비우기 후 다시 검증합니다.
결론 + 다음 단계
핵심 절차를 먼저 완료하고, 운영 단계에서는 백업·모니터링·기본 보안 설정을 함께 적용하세요.
요약: n8n을 MCP 서버로 만들어 AI가 워크플로우를 실행/수정할 수 있게 구성하는 전체 흐름을 빠르게 훑습니다.
트러블슈팅: 인증(API 키)·툴 권한·엔드포인트 연결이 어긋날 때 확인할 체크리스트를 먼저 제공합니다.
결론 & 다음 단계: 동작 확인 후에는 로컬 LLM(Ollama) 또는 OpenClaw 같은 에이전트와 붙여 자동화를 확장하세요.
이 글은 n8n 환경에서 MCP 서버를 구성해 “AI가 워크플로우를 직접 다루게” 만드는 과정을 정리한다. 핵심은 설치 절차 나열이 아니라, 도구 호출의 안전성(권한/키/범위 제한)과 운영 관점의 체크포인트를 잡는 것이다.
이 글의 목표(성공 기준)
- n8n MCP 서버가 정상 기동하고, 클라이언트에서 연결된다.
- API 키/토큰 등 민감정보가 안전하게 관리된다.
- 도구 실행 범위가 최소화되고, 문제 발생 시 로그 기반으로 진단할 수 있다.
이 글은 “AI가 내 n8n(자동화)을 직접 만들고/수정하고/디버깅하게 만들기”를 목표로 합니다. 초보자 기준으로, 오늘 당장 따라 하면 로컬/홈서버의 n8n에 AI를 붙일 수 있게 구성했습니다.
우리가 n8n을 셀프호스팅하는 이유는 보통 비슷합니다.
- 집(홈서버)에서 자동화를 내 마음대로 굴리고 싶고
- 웹훅, 스케줄, 알림 같은 것들을 내 데이터로 처리하고 싶고
- 무엇보다 “한 번 만들어두면” 반복 작업이 사라지니까요.
그런데 막상 n8n을 써보면, 자동화는 자동화인데… 정작 워크플로우를 만드는 과정 자체는 수동인 경우가 많습니다.
- 노드가 많아지면 화면에서 연결선 따라가다가 눈이 아프고
- “이 조건이면 여기로, 아니면 저기로” 같은 분기 로직이 늘어나면 수정이 겁나고
- 실패한 실행(Execution)을 봐도, 어디서 왜 망가졌는지 추적이 귀찮아집니다.
여기서 등장하는 키워드가 MCP(Model Context Protocol) 입니다.
MCP는 쉽게 말해 AI(클라이언트)가 외부 도구(서버)를 안전하게 호출할 수 있게 만드는 표준 규격입니다. 요즘은 그대로 n8n mcp server(또는 “n8n MCP 서버”)라고 검색하면 관련 자료가 꽤 늘었고, 실제로 써보면 “자동화를 만드는 과정”이 훨씬 빨라집니다.
n8n을 MCP로 붙여두면, AI가 “말로” 요청을 받아 워크플로우를 만들고/수정하고/활성화하고/실행 로그까지 확인할 수 있습니다.
이번 글에서 다룰 조합은 아래입니다.
- n8n (셀프호스팅): 자동화 엔진
- n8n-mcp 서버(오픈소스): MCP 요청을 n8n REST API로 중계
- MCP 클라이언트(예: Claude Desktop, Cursor 등): 실제로 AI와 대화하는 앱
오늘 만들 것(완료 기준)
완료 기준은 딱 4가지입니다.
1) Docker로 n8n을 실행한다 2) n8n에서 API 키를 만든다 3) n8n-mcp 서버를 실행해 MCP 클라이언트에 등록한다 4) AI에게 요청해서 Webhook → 응답 같은 간단한 워크플로우를 “생성/활성화”까지 시킨다
준비물(초보자 기준)
- (권장) Ubuntu 22.04/24.04 서버 1대
- Proxmox를 쓰는 분이라면: VM이나 LXC 안의 Ubuntu에 Docker 올려도 됩니다.
- Docker / Docker Compose
- n8n 접속 가능한 브라우저
- MCP 클라이언트 1개
- 예: Claude Desktop, Cursor 등
참고: n8n을 인터넷에 바로 노출할 필요는 없습니다. 처음엔 내 PC에서만 접속 가능한 내부망으로 두고, 잘 돌아가는 걸 확인한 뒤에 공개 범위를 넓히는 걸 추천합니다.
1) n8n 셀프호스팅 설치(Docker)
n8n 공식 문서는 Docker 설치를 가장 권장합니다. (공식 문서 출처는 아래 “이미지/출처”에 정리해두겠습니다.)
(1) Docker 준비
이미 Docker가 있다면 건너뛰세요.
# 무엇: Docker 설치 확인
# 왜: n8n을 컨테이너로 실행하기 위해
# 확인: 버전 출력이 나오면 OK
docker --version
docker compose version || docker-compose --version
(2) 가장 단순한 실행(공식 예시 기반)
처음엔 단순한 docker run으로 띄우는 게 이해가 빠릅니다.
# 무엇: n8n 데이터용 볼륨 생성
# 왜: 컨테이너를 재시작해도 워크플로우/설정이 날아가지 않게
# 확인: docker volume ls에서 n8n_data가 보임
docker volume create n8n_data
# 무엇: n8n 실행
# 왜: 5678 포트로 n8n 웹 UI 접근
# 확인: 브라우저에서 http://서버IP:5678 접속
export TZ="Asia/Seoul"
docker run -d \
--name n8n \
-p 5678:5678 \
-e GENERIC_TIMEZONE="Asia/Seoul" \
-e TZ="Asia/Seoul" \
-e N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=true \
-e N8N_RUNNERS_ENABLED=true \
-v n8n_data:/home/node/.n8n \
docker.n8n.io/n8nio/n8n
실행 후 확인:
# 무엇: 컨테이너 상태/로그 확인
# 왜: 실행이 안 되면 여기서 바로 티가 남
# 확인: "Editor is now accessible" 같은 로그가 보이면 성공
docker ps --filter name=n8n
docker logs -n 50 n8n
실전 팁: 처음 설치 때 가장 흔한 실수는 방화벽(UFW) 때문에 5678이 막혀 있는 경우입니다. 내부망에서만 테스트할 거면, 아예 서버에서
curl http://localhost:5678로 먼저 확인해도 됩니다.
2) Docker Compose로 운영하기(권장)
docker run으로 한 번 띄우는 건 이해하기 쉽지만, 운영을 생각하면 Compose가 확실히 편합니다.
- 컨테이너 재시작 정책(restart)
- 환경변수/비밀값 관리(.env)
- Postgres 같은 외부 DB 연동
- 버전 업그레이드(이미지 태그 변경)
아래는 가장 흔한 조합(n8n + Postgres) 예시입니다. (초보자 기준으로 “일단 안정적으로” 굴리는 쪽)
# 무엇: n8n + Postgres를 docker compose로 실행
# 왜: 데이터(워크플로우/자격증명/실행 기록)를 좀 더 안정적으로 관리
# 확인: docker compose up -d 후 http://서버IP:5678 접속
services:
postgres:
image: postgres:16
restart: unless-stopped
environment:
- POSTGRES_USER=n8n
- POSTGRES_PASSWORD=change-me
- POSTGRES_DB=n8n
volumes:
- n8n_pg:/var/lib/postgresql/data
n8n:
image: docker.n8n.io/n8nio/n8n:latest
restart: unless-stopped
ports:
- "5678:5678"
environment:
- TZ=Asia/Seoul
- GENERIC_TIMEZONE=Asia/Seoul
- DB_TYPE=postgresdb
- DB_POSTGRESDB_HOST=postgres
- DB_POSTGRESDB_DATABASE=n8n
- DB_POSTGRESDB_USER=n8n
- DB_POSTGRESDB_PASSWORD=change-me
volumes:
- n8n_data:/home/node/.n8n
depends_on:
- postgres
volumes:
n8n_data:
n8n_pg:
실전 팁: “일단 빨리” 시작하고 싶으면 SQLite(기본 DB)로도 충분합니다. 다만 워크플로우가 늘어나면 백업/이관/복구 시점에 Postgres가 편한 경우가 많습니다.
3) 리버스 프록시/HTTPS에서 자주 터지는 설정 3가지
내부망에서 http://서버IP:5678로만 쓰면 큰 문제가 없는데, 도메인(예: https://n8n.example.com)을 붙이면 갑자기 웹훅이 안 되거나 로그인 리다이렉트가 꼬이는 경우가 있습니다.
이럴 때 점검할 대표 설정 3가지는 아래입니다.
1) WEBHOOK_URL – 외부에서 접근하는 “정식 URL”을 n8n이 알아야 합니다.
2) N8N_HOST / N8N_PROTOCOL / N8N_PORT – 프록시 뒤에서 실제 접속 URL과 컨테이너 내부 포트가 다를 수 있습니다.
3) 프록시가 전달하는 헤더(X-Forwarded-Proto 등) – 프록시가 HTTPS 종료(TLS termination)한다면, n8n은 “겉보기 프로토콜이 https”인 걸 알아야 합니다.
초보자 기준으로는 아래처럼 환경변수를 잡아두면(예시) 문제를 줄일 수 있습니다.
# 무엇: 리버스 프록시 뒤 n8n URL 정합성 확보
# 왜: 웹훅/리다이렉트/자산 URL이 엉키는 문제 예방
# 확인: n8n에서 생성되는 Webhook URL이 https://도메인/... 형태로 나오는지
export N8N_HOST="n8n.example.com"
export N8N_PROTOCOL="https"
export N8N_PORT="443"
export WEBHOOK_URL="https://n8n.example.com/"
팁: 프록시 설정(nginx/traefik/caddy)에 따라 필요한 값이 조금씩 달라질 수 있습니다. 중요한 건 “내가 브라우저로 접속하는 URL”과 “n8n이 스스로 생성하는 URL”이 일치하도록 맞추는 겁니다.
4) n8n API 키 만들기(그리고 30초 테스트)
n8n-mcp 서버는 n8n REST API에 붙어야 합니다. 그래서 API 키가 필요합니다.
n8n 공식 문서 기준으로는 아래 흐름입니다.
- n8n 로그인
- Settings → n8n API로 이동
- Create an API key 클릭
- 라벨/만료 기간 설정
- 생성된 키를 복사
(1) API 키 생성
UI에서 만들고 복사해두세요. (이 키는 비밀번호급입니다.)
(2) API 키가 진짜 동작하는지 테스트
가장 빠른 방법은 curl로 워크플로우 목록을 한번 호출해보는 겁니다.
# 무엇: n8n API 키로 인증 테스트
# 왜: 키가 틀리면 MCP 연결도 100% 실패
# 확인: 200 OK + JSON 응답이 오면 성공
export N8N_HOST="http://<n8n-서버IP>:5678"
export N8N_API_KEY="<내_API_키>"
curl -sS -H "X-N8N-API-KEY: ${N8N_API_KEY}" \
"${N8N_HOST}/api/v1/workflows?limit=5" | head
401 Unauthorized가 나오면: 키가 틀렸거나, 헤더 이름이 틀렸거나, URL이 틀렸습니다.404가 나오면: n8n이 프록시 뒤에서 경로(prefix)가 붙어있을 수 있습니다.
5) n8n-mcp 서버 설치/실행(오픈소스, n8n mcp server)
이번 글에서 사용할 MCP 서버는(즉, n8n mcp server 구성은) AnonJon/n8n-mcp 프로젝트입니다.
이 서버는 대략 이런 일을 합니다.
- MCP 클라이언트(Claude Desktop 등)와는 stdio(JSON-RPC) 로 대화
- 내부적으로는 n8n에 HTTP + API Key로 요청
- 워크플로우 목록/생성/수정/활성화, 실행(Execution) 조회 같은 도구를 제공합니다.
(1) Bun 설치 확인
이 프로젝트는 Bun을 예시로 사용합니다.
# 무엇: bun 설치 확인
# 왜: n8n-mcp 서버 실행에 필요
# 확인: 버전 출력
bun --version
Bun이 없다면 공식 사이트의 설치 안내를 따라 설치하세요.
(2) 프로젝트 다운로드 및 의존성 설치
# 무엇: 소스 내려받기
# 왜: MCP 서버 실행
# 확인: 폴더 생성 및 bun install 성공
git clone https://github.com/AnonJon/n8n-mcp.git
cd n8n-mcp
bun install
(3) (중요) N8N_API_URL / N8N_API_KEY 준비
이 서버는 환경변수 두 개를 필요로 합니다.
N8N_API_URL: n8n의 베이스 URL (예: http://localhost:5678)N8N_API_KEY: 방금 만든 API 키
여기서 초보자가 자주 하는 실수:
- 끝에 슬래시(
/) 를 붙여서http://localhost:5678/로 넣고, 어떤 도구에서 URL 합칠 때//api/...가 되어 꼬이는 경우 - n8n을 리버스 프록시로
/n8n같은 경로에 붙여둔 경우
가능하면 처음엔 경로(prefix) 없는 기본 설치로 테스트하는 걸 추천합니다.
6) MCP 클라이언트에 n8n-mcp 서버 등록하기
여기서부터가 “AI에게 맡기기”의 핵심입니다.
(1) Claude Desktop 예시
Claude Desktop은 설정 파일에 MCP 서버를 등록합니다.
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json
예시(공식 README 기반, 경로만 내 환경에 맞게 수정):
{
"mcpServers": {
"n8n": {
"command": "bun",
"args": ["run", "/absolute/path/to/n8n-mcp/src/index.ts"],
"env": {
"N8N_API_URL": "http://localhost:5678",
"N8N_API_KEY": "n8n_api_..."
}
}
}
}
저장 후 Claude Desktop을 재시작하면, n8n 관련 도구가 잡힙니다.
(2) Cursor 예시
Cursor는 .cursor/mcp.json을 쓸 수 있습니다.
{
"mcpServers": {
"n8n": {
"command": "bun",
"args": ["run", "/absolute/path/to/n8n-mcp/src/index.ts"],
"env": {
"N8N_API_URL": "http://localhost:5678",
"N8N_API_KEY": "n8n_api_..."
}
}
}
}
7) 실제로 AI로 워크플로우 만들기(가장 안전한 데모)
처음 데모는 외부 서비스(슬랙, 지메일, 텔레그램) 를 붙이지 않는 게 좋습니다.
외부 서비스는 자격증명(credential) 설정이 추가로 필요해서, 데모가 복잡해지고 “뭐가 문제인지”가 잘 안 보이거든요.
그래서 가장 안전한 데모는 아래입니다.
- Webhook Trigger로 요청을 받고
- 들어온 JSON에서 필요한 값만 뽑아서
- “Respond to Webhook”으로 다시 응답
(1) AI에게 이렇게 요청해보세요
아래는 프롬프트 예시입니다.
n8n에 새로운 워크플로우를 만들어줘. Webhook 트리거(POST)로
/demo경로를 만들고, 본문 JSON의name값을 읽어서{"ok": true, "hello": "<name>"}형태로 응답해줘. 워크플로우 이름은MCP Demo - Hello로 해줘. 만든 다음 워크플로우를 활성화해줘.
성공하면 AI가 내부적으로 대략 이런 순서로 움직입니다.
1) (필요하면) 사용 가능한 노드 참고 자료를 읽고
2) create_workflow 도구를 호출해 워크플로우를 생성하고
3) activate_workflow로 활성화하고
4) 필요하면 list_executions로 디버깅합니다.
(2) 실제 호출 테스트
워크플로우가 활성화되면, 이제 webhook URL로 요청을 보내보세요.
# 무엇: Webhook 트리거 테스트
# 왜: 진짜로 동작하는지 확인
# 확인: ok=true, hello=... 형태의 JSON 응답
curl -sS -X POST "http://<n8n-서버IP>:5678/webhook/demo" \
-H 'Content-Type: application/json' \
-d '{"name": "Namwoong"}'
팁: n8n의 웹훅 경로는 설정에 따라
/webhook-test/같은 테스트용 URL이 따로 있을 수 있습니다. (실행 모드/활성화 여부에 따라) 테스트가 안 되면, 워크플로우 화면에서 Webhook 노드의 URL을 그대로 복사해 쓰세요.
8) 트러블슈팅(자주 터지는 것만)
- API 키가 틀림
- 헤더 이름이 틀림(
X-N8N-API-KEY) - 키를 복사할 때 공백/줄바꿈이 섞임
체크:
curl -i -H "X-N8N-API-KEY: ${N8N_API_KEY}" "${N8N_HOST}/api/v1/workflows?limit=1"
Connection refused / timeout
- n8n이 실제로 떠 있지 않음
- n8n이
localhost에만 바인딩되어 있고 외부에서 못 들어오는 환경 - 방화벽에서 5678이 막힘
체크:
docker ps --filter name=n8n
ss -lntp | grep 5678 || netstat -lntp | grep 5678
URL(prefix) 문제
리버스 프록시에서 https://example.com/n8n처럼 경로를 붙여서 운영하면:
N8N_API_URL도 그 경로를 포함해야 합니다.- 예:
https://example.com/n8n
그리고 어떤 설정은 웹훅 URL도 같이 영향을 받습니다. 처음엔 단순 구성으로 성공시킨 뒤에, 프록시/도메인을 붙이는 걸 추천합니다.
9) 비교: ‘AI + MCP + n8n’이 언제 유리할까?
아래는 제가 초보자에게 설명할 때 자주 쓰는 기준입니다.
| 선택지 | 좋은 점 | 아쉬운 점 | 이런 분에게 추천 |
|---|---|---|---|
| n8n만 단독 사용 | 안정적이고, UI가 명확함 | 워크플로우 설계/수정이 수동 | 자동화는 하고 싶지만 AI 연동은 필요 없는 분 |
| n8n + MCP(이번 글) | 말로 설계/수정/디버깅 가능, 반복 작업 속도가 확 빨라짐 | API 키 관리가 필요, “무엇을 허용할지” 판단이 필요 | 자동화가 늘어나서 ‘만드는 과정’이 병목인 분 |
| Zapier/Make | 시작이 쉬움 | 비용/제한, 데이터가 외부로 나감 | 빠른 프로토타입이 우선인 분 |
| 직접 스크립트(Python 등) | 자유도가 최대 | 유지보수 난이도 상승 | 개발/운영 경험이 있고 복잡한 요구가 있는 분 |
10) 기본 보안 설정(최소한)
AI에게 자동화를 맡길수록 “편한 만큼 위험도 같이” 옵니다. 그래서 아래만은 지키는 게 좋습니다.
- API 키는 만료 기간을 두고, 테스트용/운영용을 분리
- 키는 텍스트 파일에 평문으로 여기저기 복사하지 말기
- n8n은 처음엔 내부망에서만 접근(또는 VPN/Tailscale 뒤)
- 워크플로우에 외부로 나가는 HTTP 요청을 만들기 전에, 어떤 데이터가 나가는지 먼저 확인
마무리
n8n은 원래도 강력하지만, MCP로 AI를 붙이면 “자동화의 자동화”가 됩니다.
- 내가 하고 싶은 말을 사람에게 설명하듯 말하면
- AI가 워크플로우를 만들어주고
- 필요하면 실행 로그까지 같이 보고 고쳐줍니다.
다음 단계로는:
- 텔레그램/슬랙 알림 워크플로우를 AI에게 맡기기
- 특정 에러 패턴이 나오면 자동으로 이슈를 만들기(GitHub 등)
- 홈서버 상태(디스크/컨테이너)를 n8n으로 점검하고 리포트 받기
이런 확장이 가능합니다.
참고/관련 글(내부 링크)
- n8n 설치 기본: https://homelablog.com/셀프-호스팅-자동화의-심장-n8n-설치-가이드/
- 로컬 LLM에 도구 붙이기(MCP 기초): https://homelablog.com/ollama-mcp-시작하기2026-로컬-llm에-도구파일-웹-깃-연결하는-실/
출처(공식/원문)
- n8n Docker 설치(공식 문서): https://docs.n8n.io/hosting/installation/docker/
- n8n API 인증/키(공식 문서): https://docs.n8n.io/api/authentication/
- n8n-mcp GitHub(원문): https://github.com/AnonJon/n8n-mcp
참고(공식 링크): n8n Docker Installation · n8n API Authentication · AnonJon/n8n-mcp
관련 글(내부 링크): n8n 설치 가이드 · Ollama MCP 시작하기