업무자동화 with n8n 특강 따라하기 2/2

07.15 17기 2주차 워크샵 - 자동화 툴 n8n 활용법, MCP 활용까지 강의의 2교시 내용을 따라해 보았습니다.

1교시 내용은 아래 링크 클릭하시면 됩니다.
1/2 따라하기

첫번째 따라하기 할 때 google 관련 설정이 복잡 다단해서 어렵다고 했었는데,
이 부분을 아래 사례에서 박카스님께서 잘 정리해 주셨네요.
필독입니다.!!
n8n에서 Google Sheets 자동화를 위한 OAuth2 연동 과정 A to Z


1교시 때까지는 이미 만들어진 워크플로우의 json 내용을 참조할 수 있어서 그나마 따라하기 편했는데,
2교시에는 흐름과 워크플로우의 모양까지만 알려주신 후 셀프스터디를 해야한다고 하셔서
난이도가 확 올라가네요.

화면캡쳐 보다는 노드별 입력값 위주로 정리해 보겠습니다.

1. 손으로 만드는 워크플로우

  • 선행작업 : 내 메일함에 "일정등록" 이라는 문구가 제목에 포함된 메일 1건을 수신합니다.(다른 메일에서 gmail로 메일하나 쏘면 되겠죠..)

  • 교육 내용에 있던 워크플로우에 등장한 노드들을 일단 하나하나씩 만들어 봅니다.

  • Gmail Trigger : 테스트 모드에서는 1 건만 가져온다고 하네요.

    • Event : Message Received 로 설정

    • Poll Time : 메일함에 새 메일 가져오는 시간 주기 설정

  • Filter : 메일이 여러건 도착했을 때 메일제목에 "일정등록" 이라는 문구가 있는 메일만 걸러내기

    • Conditions : {{ $json.Subject }} contains 일정등록

  • OpenAI

    • Operation: Message a Model

    • Model : CHATGPT-4O-LATEST

    • Output Content as JSON : 체크 꼭체크해주세요

    • prompt :

{{ $json.snippet }}을 읽고, 구글캘린더에 표시해야할 일정이 있다면, 정리해줘.
현재시간: {{ $now.setZone('Asia/Seoul') }}
json으로 대답해 

meeting: Y/N
title: 제목
start: 구글캘린더에 입력할 시작시간
end:구글캘린더에 입력할 종료시간
note: 알아둬야하는 메일내용요약 
  • Filter : ChatGPT가 만들어준 응답값 json에서 meeting이 Y인거만 필터링

    • Conditions : {{ $json.message.content.meeting }} is equal to Y

  • Google Calendar

    • Calendar : 사용하시는 캘린더 선택

    • Start : {{ $json.message.content.start }}

    • End : {{ $json.message.content.end }}

    • Additional Fields

      • Description: {{ $json.message.content.note }}

      • Summary: {{ $json.message.content.title }}

시스템의 다른 부분을 보여주는 다이어그램

구글 캘린더에 잘 등록되네요.

한국어 텍스트가있는 캘린더

2. AI가 만드는 워크플로우

위 1번에서 OpenAI -> Filter -> Google Canlder 세 단게를 AI Agent에게 위임해서 한 단계로 처리하는 워크플로우 입니다.

  • 선행작업

    • 위 1번에서 확인된 calendar 일정은 삭제합니다.

    • 위 1번 워크플로우를 저장하고, 복사해서 새로 하나 만듭니다.

    • 복사한 워크플로우에서 Gmail Trigger와 첫번째 Filter만 남기고 이후 3개 노드는 삭제하빈다.

  • AI Agent

    • OpenAI Chat Model 연결

      • Model : chatgpt-4o-latest

    • Simple Memory 연결

      • Context Window Length : 5

    • Google Calendar Tool 연결

      • Calendar : 사용하시는 캘린더 선택

      • Start / End : 모두 입력 영역 우측의 별3개아이콘 선택(Let the model define this parameter)

      • Additional Fields

        • Description / Summary : Defined automatically by the model 선택

오류발생하여 수정
workflow 그림만 보고 따라하다 보니, 오류가 발생하네요.
여기서부터는 강의 내용에 없는 내용입니다.

오류1

Simple Memory에서 "Error in sub-node ‘Simple Memory‘ No session ID found Open node" 라는 오류가 발생했는데, 이는 AI Agent 이전 노드에서 전달해 주는 json 값 중에 "sessionId" 키에 해당 하는 값이 없어서 발생하는 오류였습니다.

해결) Filter와 AIAgent 노드 중간에 Edit Fields라는 노드를 추가

  • Edit Fields

    • Mode : Manual Mapping

    • Fields to Set 에 Add 클릭하여 sessionId 에 {{ $json.id }} 로 설정

    • Input Fields to Include : All 선택

오류2

OpenAI Chat 모델에서 Error in sub-node ‘Simple Memory‘
No session ID found Open node
The resource you are requesting could not be found
tools is not supported in this model. For a list of supported models
라는 오류가 발생했습니다.

해결) Model : chatgpt-4o-latest 로 설정했서 발생한 오류. gpt-4o로 변경하니까 정상동작함.
OpenAI Node를 이용할 때와 AIAgent노드에서 OpenAI ChatModel로 이용할 때
모델명 선택하는 기준이 뭔가 다른것 같습니다

perplexity 에게 물어보니..아래와 같이 답해주네요.

**chatgpt-4o-latest**로 모델명을 설정할 때 오류가 발생하고, **gpt-4o**로 변경하면 정상 동작하는 이유는 현재 n8n의 OpenAI 연동(2025년 7월 기준)에서 `chatgpt-4o-latest` 모델명에 대한 내부 매핑 또는 지원이 제대로 이루어지지 않기 때문입니다.

실제 사례에서 `chatgpt-4o-latest`로 설정 시 `"The limit of 30,000TPM of the GPT-4o model has been exceeded."`와 같이 _기본 gpt-4o 모델의 한도 내에서 에러가 발생했으며_, OpenAI에서는 `chatgpt-4o-latest` 모델의 한도가 맞게 부여돼 있고 자체적으로는 이상이 없다고 답변했습니다. 그러나 n8n에서는 이를 올바르게 전달하지 못하고, 심지어 `chatgpt-4o-latest` 모델을 정확하게 호출하지 못하고 구 버전(gpt-4o)과 혼동하는 현상이 확인됐습니다[](https://github.com/n8n-io/n8n/issues/15887).

제 n8n 환경 보니 n8n 서버 update가 6개나 밀려있네요.
이번 실습 끝나면 최신으로 업데이트 해야겠습니다.

시스템의 다른 부분을 보여주는 다이어그램

구글 캘린더에 잘 등록되네요.

캘린더가 전화 화면에 표시됩니다

3. Calendar MCP 만들어보기

MCP 맛만 보려고 일정 등록하는 거만 해 보았습니다.

  • MCP Server Trigger

    • production url 복사해두기 --> Claude 에서 커스텀 커넥터로 등록

    • Tools : Google Calendar

      • 구글 캘린더 설정은 위에서 설정한 것과 동일하게 설정( 추가 속성 등)

MCPS 서버의 이름 캘린더

claude에서 아래와 같이 명령 날리면

대한민국 시간으로 2025년 7월 17일 AM 10시 부터 AM 11시까지 을지문덕님과 M&A 관련 미팅있어 구글캘린더에 등록해줘. 일정 제목과 내용이 꼭 들어가야 해.


그럼 구글 캘린더에 아래와 같이 일정이 잘 등록됩니다.

캘린더가 전화 화면에 표시됩니다

4. Naver News 검색 MCP

MCP Server Trigger를 새로 만듭니다.

  • 사전작업

  • 주의 사항

    • 네이버 인증은 헤더에 위에서 만든 clientid와 secret를 헤더에 담아서 보내야 함

    • url에 함께 전송되는 쿼리 파라미터의 키는 query임, 값은 ai가 설정함.

  • MCP Server Trigger

    • production url 복사해두기 --> Claude 에서 커스텀 커넥터로 등록

    • Tools : Http Request

      • Method : GET

      • URL : https://openapi.naver.com/v1/search/news.xml

      • Authentication : None

      • Send Query Parameters : 켜기

        • Specify Query Paramters : Using Fields Below

          • Query Parameters

            • Name : query

            • Value : Defined automatically by the model

      • Specify Headers

        • Using Fields Below

          • Name : X-Naver-Client-Id

          • Value: 등록한 client id

          • Name: X-Naver-Client-Secret

          • Value: 등록한 client secret

맵 서버를 만드는 방법을 보여주는 다이어그램


Claude에서 아래처럼 명령 날리면

GPTers 커뮤니티 정보 검색해줘

MCP Server를 통해서 아래와 같이 답해 주네요.

한국어 텍스트가있는 검은 색 화면

느낀점

  • 강의를 통해서 MCP 개념을 쉽게 이해할 수 있었고, 실습을 통해 생각보다 쉽게 구현할 수 있다 라는 걸 느꼈습니다.

  • 처음에는 막막하고, 하나하나 따라하기에 시간이 많이 걸리지만, 막힐 때마다 퍼플렉시티에게 물어봐가면서 진행하니 할만 하네요

  • n8n과 더 친해지기 위해, 선배님들의 주옥같은 사례글 보며 계속 따라해 보아야 겠습니다.

1
2개의 답글

뉴스레터 무료 구독

👉 이 게시글도 읽어보세요