n8n MCP 활용한 업무프로세스 자동화 - (1) 구글 캘린더 자동화

개요

나 뿐만 아니라, 생산관리 컨설턴트라면 늘 고객사의 업무 효율화에 대해 고민할 것이다. 내 불편한 업무의 한 켠에는 구글 캘린더도 있다. 브라우저를 열고 캘린더 앱에서 일정을 등록하거나 확인하는 번거로움 가운데 일정관리 자동화의 필요성을 느끼고 있었다. 그러던 중, 스터디장 세임님과 함께 n8n을 활용한 자동화를 실습하는 과정에서, 새로운 가능성이 생겼다.

구글 캘린더 자동화 프로젝트 시작

이번 프로젝트의 목표는 간단하다. AI 어시스턴트에게 일정을 물어보거나 등록해달라고 요청하면, 내 구글 캘린더를 실시간으로 확인하고 처리해주는 워크플로우를 만드는 것이다. AI 노드를 활용한 워크플로우와 에이전트 생성 방법 모두 실습했다.

이중에서 MCP(Model Context Protocol) 구현 과정은 스쳐지나가듯 짧았지만 나에게는 인상 깊었다. 이를 기업 업무프로세스에 적용하면 효과가 클꺼라는 불이 들어왔고, n8n을 활용한 자동화와 Airtable, Apps Script 등의 도구까지 결합한다면, 분명히 실용적인 도구를 개발할 수 있을 꺼라는 확신이 들었다.

첫 실습에선 우선 n8n, MCP, Google Calendar를 사용했다. 구글 캘린더는 내가 주로 사용하는 'Study' 캘린더를 연동했다.

워크플로우는 다음과 같이 구성했다.

1. MCP 서버 제작: 자동화 시스템의 핵심이 될 서버를 구축했다.

2. 캘린더봇 제작: 도구로 MCP Client를 가져와 캘린더봇을 만들었다.

3. Chat URL 설정: 웹훅 채팅 인터페이스를 통해 필요한 사람은 시스템에 접근할 수 있도록 웹 주소 링크도 확보했다.

1. MCP 서버 제작

MCP 서버를 만드는 데는 별 문제가 없었다.

우선 'Study' 캘린더에 적용했다.

AI 에이전트에 구글 캘린더에 일정을 등록하고, 수정하고, 삭제하는 네 가지(CRUD) 도구를 연결시키고 작동시켜 본 후 캘린더에서 확인해보니 잘 작동했다.

2. 캘린더봇 제작

AI 에이전트의 주요 노드는 다음과 같다.

* When chat message received (트리거): 웹훅을 통해 채팅 메시지를 수신하는 역할을 한다.

* AI Agent (메인): 사용자 질문을 해석하고, 필요한 도구를 선택하여 호출하는 핵심 노드이다.

* MCP Client (외부 연동): 앞서 만든 MCP 서버 SSE Endpoint를 불러와서 적용했다

3. Chat 인터페이스 URL 설정

버튼이있는 채팅 창의 스크린 샷

4. MCP 응용

구글 캘린더용 MCP 서버에 CRUD 기능을 적용할 수 있다면 다른 캘린더에도 적용할 수 있지 않을까? 실제로 캘린더를 하나만 사용하는 경우는 적을테니 말이다.

MCP를 '컨설팅캘린더''S-OJT캘린더'라는 두 개의 다른 캘린더에도 적용해봤더니 잘 작동했다. 아! 이거 좋네

이제 더 많은 일정 관리가 자동화될 수 있는 기반을 마련한 것이다.

AI 에이전트 시스템 프롬프트에는 일정을 조회하고, 생성(등록)하고, 수정(업데이트)하고, 제거할 수 있도록 명시했다. 또한, 자연스러운 한국어로 응답하도록 설정했다.

Microsoft Word 문서의 양식 스크린 샷

5. 에러

그런데테스트를 시작하자 예상치 못한 두 가지 에러가 발생했다.

1. MCP 서버 연결 실패: "MCP 서버 연결에 실패했다"는 메시지를 받았다. 아무리 워크플로우를 들여다봐도 원인을 알 수 없었다. 한참을 헤맨 끝에, MCP를 활성화시키지 않은 것이 눈에 들어왔다. 활성화하자마자 문제는 바로 해결되었다. 기본적인 설정 실수였다.

SaaS에서 흐름도의 스크린 샷

2. 시간 오작동: 두 번째 에러는 에러라고 명확히 표시되지 않고 정상인 것처럼 보였다. 헌데 가만이 보니 문제가 있었다. "이번 주 일정을 알려달라"고 요청했는데, AI는 24년 4월의 일정을 알려주고 있었던 것이다.

오늘이 7월 13일이었으니, AI가 마치 시간 여행을 하는 것처럼 과거 데이터를 보여준 셈이다. 국가별 시간대가 잘못되었다고 해도 이렇게 큰 시차가 날 리는 없었다.

한국어 텍스트가 포함 된 웹 사이트의 스크린 샷
한국 문자 메시지의 스크린 샷

이 불가사의한 현상에 대한 원인을 추정하기 시작했다.

* 캐시 데이터 사용: AI가 이전에 학습한 캐시된 데이터를 사용했을까?

* 날짜 파라미터 오류: 현재 날짜를 AI에게 전달하는 과정에서 문제가 발생했을까?

* MCP 서버 설정 오류: 엔드포인트 URL이나 인증 문제로 데이터가 잘못 전달되었을까?

* 구글 캘린더 API 필터링 버그: 날짜 범위 필터링 로직에 오류가 있었을까?

자동화 시스템 구축이 생각보다 복잡하고 예측 불가능한 변수가 많다는 것을 다시 한번 깨달았다.

두 번째 오류, 즉 AI가 과거 데이터를 보여주는 문제는 바로 해결하기가 어려웠다. 당장 어떤 부분에서 문제가 발생하는지 정확히 파악하기가 힘들었다. 이 부분은 좀 더 심도 깊은 디버깅과 분석이 필요하다고 판단했고, 이번 글에서는 오류 발생까지만 다루고 다음 단계에서 해결해나가기로 했다.

결론 (교훈과 향후계획)

1. 교훈

이번 구글 캘린더 자동화 과정에서 비록 예상치 못한 오류를 겪었지만, 교훈도 얻었다.

* 실시간 로그 확인 습관: 복잡한 워크플로우를 만들 때는 각 노드마다 로그 출력을 추가하여 실시간으로 상태를 확인하는 것이 중요하다

* MCP 연결 안정성 확보: MCP 연결 실패 시를 대비한 fallback 로직이 필요하며, 연결 전 항상 health check 노드를 추가하는 것이 좋겠다.

* 모듈별 개별 테스트 후 통합: 각 노드를 개별적으로 테스트한 후 통합하는 것이 효율적이다.

* 시간대 변환 주의: 날짜 관련 처리는 UTC(세계 표준시)와 로컬 시간대 변환에 특히 주의해야 한다.

구글 캘린더 일정에 CRUD 기능을 적용한 MCP가 가능하다면, 다른 도구에도 MCP를 적용할 수 있지 않을까? 생각이 여기에 이르자 내가 지도하는 기업의 주문처리프로세스에 적용해 봐야겠다는 생각이 들었다.

그러니까 구글 시트로 주문접수 및 처리 테이블을 만들고, 여기에도 동일한 MCP를 만들어서 적용한다면, 기업의 주문처리시스템도 자동화할 수 있을꺼란 아이디어다.

나중에는 Airtable(DB/Table/View), 앱스 스크립트(자동화), 루커 스튜디오(시각화)와 같은 도구들과도 연계해서, 기업에 실질적인 도움을 줄 수 있는 앱 서비스 시스템까지 발전시켜나갈 수 있을 것 같다. 이제 더 많은 자동화 기반을 마련할 수 있게 됐다.

2. 향후계획

다음 단계에서는 이 경험을 응용하여 구글 시트(주문처리대장)를 MCP로 활용하는 주문처리 시스템을 구축해보고자 한다.

아직 해결되지 않은(다음에 해결할) 과제들도 남아있다.

  • AI가 4월 데이터를 어디서 가져왔는지, 왜 그렇게 행동했는지 **문제원인 파악**

  • 현재 날짜 기준으로 정확한 필터링을 구현하는 **효율적인 방법** 모색

  • 연결 실패 시 사용자에게 더욱 **명확한 에러 메시지를 전달하는 방법** 구현

이 과제들은 다음 포스팅에서 해결해서 더 발전된 자동화시스템을 만들어 보려고 한다.

n8n MCP 구현사례를 참고해보려고 했지만 별로 찾을 수 없었다. (Claude MCP 사례가 대부분이다. 어쩌면 귀차니즘 핑게일 수도 있다 ㅋㅋ)

3
1개의 답글

뉴스레터 무료 구독

👉 이 게시글도 읽어보세요