본문 바로가기
인공지능 (AI,GPT)

AI 에이전트 시대 n8n MCP OAuth/토큰 인증 Claude·ADK 워크플로우 실행

by 날으는물고기 2025. 12. 22.

AI 에이전트 시대 n8n MCP OAuth/토큰 인증 Claude·ADK 워크플로우 실행

728x90

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 공통)

  1. ⚙️ Settings > Instance-level MCP 이동
  2. Enable MCP access 토글 ON (인스턴스 owner/admin 권한 필요)
  3. 활성화되면 워크플로우 목록/연결된 OAuth 클라이언트 목록/Connect 버튼 등을 볼 수 있습니다.

(Self-hosted) “완전 비활성화/기능 제거”

  • 기능 자체를 제거하려면 환경변수로 모듈을 비활성화합니다.
    N8N_DISABLED_MODULES=mcp → MCP 엔드포인트 제거 + 관련 UI 숨김

인증 방식: OAuth2 vs Access Token

n8n Connect 팝업에서 OAuth2 / Access Token 두 가지를 제공합니다.

OAuth2 방식(권장: “누가 연결했는지” 추적/회수에 유리)

  • OAuth 탭의 서버 URL로 클라이언트를 설정하면,
  • 연결 과정에서 n8n으로 리다이렉트되어 승인합니다.
300x250

클라이언트 권한 회수(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가지

  1. 클라이언트별 권한 분리가 안 됨
    → 한 번 연결되면 “MCP로 공개된 워크플로우 전체”가 보입니다.
  2. Access Token 유출 = 즉시 침해
    → 토큰은 “사용자 계정에 귀속”되고, 유출 시 외부에서 실행 호출이 가능해질 수 있습니다.
  3. 공개 워크플로우의 입력(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 필요
728x90
그리드형(광고전용)

댓글