
n8n “내장 MCP 서버(Instance-level MCP)”가 뭐고, 뭐가 가능한가요?
n8n의 내장 MCP 서버는 Lovable, Claude Desktop 같은 MCP 클라이언트(에이전트/IDE/데스크톱 앱)가 n8n 인스턴스에 “안전하게” 연결해, MCP로 공개된 워크플로우를 검색/메타데이터 조회/실행할 수 있게 해주는 기능입니다.
가능한 작업(클라이언트 관점)
- MCP로 공개된 워크플로우 검색
- 워크플로우 메타데이터/트리거 정보 조회
- 공개된 워크플로우 실행(트리거)
Instance-level MCP vs “MCP Server Trigger 노드” 차이
Instance-level MCP (인스턴스 단위)
- 인스턴스당 연결 1개(중앙 인증) 를 만들고,
- “어떤 워크플로우를 MCP에 공개할지”를 목록에서 선택/관리합니다.
- 운영 관점에서 표준화/거버넌스에 유리합니다.
MCP Server Trigger 노드(워크플로우 단위)
- 특정 단일 워크플로우 안에 MCP Server Trigger를 두고,
- 그 워크플로우에서 노출하는 도구만 제공하는 방식입니다.
- “한 워크플로우 안에서 MCP 서버처럼 동작을 설계”하고 싶을 때 유용합니다.
Instance-level MCP 설계/운영 시 핵심 고려사항(중요)
n8n 문서에서 명시한 포인트가 보안/통제 측면에서 특히 중요합니다.
- AI 클라이언트로 워크플로우를 만들거나 수정하는 기능이 아님(작성/편집은 n8n에서만)
- 전체 워크플로우가 자동 공개되지 않음 → 인스턴스에서 MCP 활성화 후, 워크플로우별로 개별 공개
- 클라이언트별로 스코프가 갈리지 않음 → “연결된 어떤 MCP 클라이언트든” MCP로 공개한 모든 워크플로우를 봄
➡️ 결론: Instance-level MCP는 “클라이언트 단위 권한분리”가 약하므로, 공개 워크플로우 선정/설계가 곧 권한관리입니다.
Instance-level MCP 활성화 절차(Cloud / Self-host 공통)
- ⚙️
Settings > Instance-level MCP이동 - Enable MCP access 토글 ON (인스턴스 owner/admin 권한 필요)
- 활성화되면 워크플로우 목록/연결된 OAuth 클라이언트 목록/Connect 버튼 등을 볼 수 있습니다.
(Self-hosted) “완전 비활성화/기능 제거”
- 기능 자체를 제거하려면 환경변수로 모듈을 비활성화합니다.
N8N_DISABLED_MODULES=mcp→ MCP 엔드포인트 제거 + 관련 UI 숨김


인증 방식: OAuth2 vs Access Token
n8n Connect 팝업에서 OAuth2 / Access Token 두 가지를 제공합니다.
OAuth2 방식(권장: “누가 연결했는지” 추적/회수에 유리)
- OAuth 탭의 서버 URL로 클라이언트를 설정하면,
- 연결 과정에서 n8n으로 리다이렉트되어 승인합니다.
클라이언트 권한 회수(Revocation)
Settings > Instance-level MCP > Connected clients에서 특정 OAuth 클라이언트를 revoke
Access Token 방식(간편하지만 “토큰 유출”이 곧 사고)
- Connect 메뉴의 Access Token 탭에서 서버 URL + 개인 MCP 토큰 사용
- 처음 MCP Access 페이지 방문 시 토큰이 자동 생성되며, 즉시 복사하지 않으면 이후 화면에선 마스킹되어 재복사가 제한됩니다.


토큰 로테이션
- Connect > Access Token 탭에서 새 토큰 생성 → 이전 토큰은 폐기됨 → 모든 클라이언트에 새 토큰 반영

“어떤 워크플로우가 MCP에 공개 가능한가?” (Eligibility)
MCP로 보이려면 워크플로우가 아래 조건을 만족해야 합니다.
- Published 상태
- 트리거 노드가 아래 중 하나 포함:
- Webhook / Schedule / Chat / Form
추가로 중요한 운영 규칙
- 기본값은 아무 워크플로우도 MCP에 보이지 않음 → 개별 공개 필수
- 자격평가는 Published 버전만 기준 (Draft에 트리거를 달아도 배포 전까진 미노출)
- Unpublish 하면 MCP 공개가 자동 제거 → 다시 publish하면 재활성화 필요
워크플로우를 MCP에 “공개(Enable)”하는 방법
방법 A) 워크플로우 편집기에서
- Workflow 열기 → Settings → Available in MCP 토글 ON
방법 B) 워크플로우 목록에서
- Workflows → 카드 메뉴 → Enable MCP access

워크플로우 설명(Description) 관리가 매우 중요
클라이언트가 “입력 파라미터를 헷갈리는” 경우가 있어, Webhook 입력 스키마/예시를 Description에 적는 것을 권장합니다.
실행(Execution) 동작 / 타임아웃 / 한계
- 클라이언트가 워크플로우를 트리거하면 n8n에서 일반 실행처럼 돌아가며, Executions에서 모니터링 가능합니다.
- MCP 트리거 실행은 최대 5분 타임아웃이 강제됩니다. (워크플로우 설정의 타임아웃과 무관)
- 제한사항
- 트리거가 여러 개면 클라이언트가 첫 번째 트리거만 쓸 수 있는 경우가 있음
- 사람 승인/다단계 폼 등 Human-in-the-loop 형태는 비지원
- 바이너리 입력 비지원, 텍스트 기반 입력만 가능
대표 MCP 클라이언트 연결 예시
Lovable → n8n (OAuth)
- Lovable: Settings > Integrations → MCP Servers에서 n8n Connect
- n8n server URL 입력 → 성공 시 n8n으로 리다이렉트되어 승인
Claude Desktop → n8n
(1) OAuth2
- Claude Desktop: Settings > Connectors → Add custom connector
- Name:
n8n MCP - Remote MCP Server URL: n8n base URL(Instance-level MCP 페이지에 표시)
(2) Access Token (supergateway / Node.js 필요)
최신 Node.js 필요
claude_desktop_config.json 예시
{
"mcpServers": {
"n8n-mcp": {
"command": "npx",
"args": [
"-y",
"supergateway",
"--streamableHttp",
"https://<your-n8n-domain>/mcp-server/http",
"--header",
"authorization:Bearer <YOUR_N8N_MCP_TOKEN>"
]
}
}
}
Claude Code → n8n (CLI)
claude mcp add --transport http n8n-mcp https://<your-n8n-domain>/mcp-server/http \
--header "Authorization: Bearer <YOUR_N8N_MCP_TOKEN>"
또는 claude.json에 등록
{
"mcpServers": {
"n8n-local": {
"type": "http",
"url": "https://<your-n8n-domain>/mcp-server/http",
"headers": {
"Authorization": "Bearer <YOUR_N8N_MCP_TOKEN>"
}
}
}
}
Codex CLI → n8n
~/.codex/config.toml 예시
[mcp_servers.n8n_mcp]
command = "npx"
args = [
"-y",
"supergateway",
"--streamableHttp",
"https://<your-n8n-domain>/mcp-server/http",
"--header",
"authorization:Bearer <YOUR_N8N_MCP_TOKEN>"
]
Google ADK Agent → n8n
ADK에서 Streamable HTTP로 연결하는 예시
from google.adk.agents import Agent
from google.adk.tools.mcp_tool import McpToolset
from google.adk.tools.mcp_tool.mcp_session_manager import StreamableHTTPServerParams
N8N_INSTANCE_URL = "https://localhost:5678"
N8N_MCP_TOKEN = "YOUR_N8N_MCP_TOKEN"
root_agent = Agent(
model="gemini-2.5-pro",
name="n8n_agent",
instruction="Help users manage and execute workflows in n8n",
tools=[
McpToolset(
connection_params=StreamableHTTPServerParams(
url=f"{N8N_INSTANCE_URL}/mcp-server/http",
headers={
"Authorization": f"Bearer {N8N_MCP_TOKEN}",
},
),
)
],
)
n8n이 “외부 MCP 서버”를 쓰고 싶을 때: MCP Client Tool 노드
n8n에는 MCP Client Tool 노드가 있어, n8n 워크플로우/에이전트가 외부 MCP 서버의 도구(tool)를 호출할 수 있습니다.
노드 파라미터 핵심
- SSE Endpoint: 연결할 MCP 서버의 SSE 엔드포인트
- Authentication: Bearer / Generic Header / OAuth2 / None
- Tools to Include
- All / Selected / All Except (노출 도구 범위 제어)
➡️ 즉, “n8n을 MCP 서버로 공개(Instance-level MCP)”하는 것과 별개로, “n8n이 MCP 클라이언트가 되어 외부 도구를 쓰는” 것도 가능합니다.
위협모델 + 내부 가이드/점검포인트
가장 큰 리스크 3가지
- 클라이언트별 권한 분리가 안 됨
→ 한 번 연결되면 “MCP로 공개된 워크플로우 전체”가 보입니다. - Access Token 유출 = 즉시 침해
→ 토큰은 “사용자 계정에 귀속”되고, 유출 시 외부에서 실행 호출이 가능해질 수 있습니다. - 공개 워크플로우의 입력(Webhook 등)이 공격면이 됨
→ 프롬프트 인젝션/파라미터 변조/권한 오남용(삭제·결제·권한부여 등)으로 이어질 수 있음
권장 운영 원칙(정책/가이드로 문서화 추천)
- “MCP 공개 워크플로우”를 프로덕션 API처럼 취급
- 입력 스키마/허용값/검증 로직/감사로그를 필수로
- 최소공개 원칙
- “조회성(read-only)” 워크플로우부터 단계적 허용
- “삭제/권한변경/송금/배포”류는 별도 승인/추가 인증 없이 MCP에 올리지 않기
- OAuth2 우선
- 누가 연결했는지 식별/회수(Revocation)가 쉬움
- 토큰 위생(Access Token 사용 시)
- 정기 로테이션(문서 절차대로)
- 토큰을 로컬 파일(
claude_desktop_config.json,claude.json,.toml)에 두는 경우: OS 권한(600), 디스크 암호화, DLP/EDR 예외 금지 등 통제
- 네트워크 통제
- 가능하면 MCP 엔드포인트를 사내망/VPN/제로트러스트 프록시 뒤로
- Cloud MCP 클라이언트를 쓴다면 “공개 노출”이 필요할 수 있으니, IP allowlist/WAF/Rate limit를 기본값으로
- 로깅/감사
- n8n Executions 로그를 “누가/어떤 워크플로우를/어떤 입력으로” 실행했는지 추적 가능하게 보존
- 이상행위 탐지(짧은 시간 다수 실행, 실패 폭증, 비정상 파라미터)를 SIEM 룰로
워크플로우 설계 체크포인트
- 입력 검증: JSON schema 수준 검증(필수값/타입/길이/패턴), allowlist 기반
- 위험 파라미터 차단: URL/파일경로/명령문/템플릿 문자열 등 “간접 실행” 요소 금지 또는 강제 정규화
- 민감정보 취급: 토큰/키/개인정보를 워크플로우 결과로 반환하지 않기
- 멱등성/재시도 대비: 같은 요청 반복 시 중복 실행 방지키(idempotency key) 설계
- 5분 타임아웃 고려: 긴 작업은 비동기화(큐/분할 실행) 설계
트러블슈팅(연결이 안 될 때 빠른 점검)
- Cloud 기반 MCP 클라이언트를 쓰면 n8n 인스턴스가 외부에서 접근 가능해야 함
- n8n에서 MCP access가 켜져 있는지
- 대상 워크플로우가 MCP Available 상태인지
- 인증 방식(OAuth2/Token) 설정이 맞는지
- n8n 서버 로그에서 MCP 관련 오류 확인
- Claude Desktop 토큰 방식은 최신 Node.js 필요
댓글