본문 바로가기
Automation Tool

n8n, 나만의 MCP Server 만들기

by 그때 그때 끄적 2025. 7. 21.

지난번에 MCP와 RAG이란 개념에 대해 간단히 정리한 적이 있다.
https://cord-ai.tistory.com/189

 

AI의 똑똑함을 완성하는 두 축 - MCP와 RAG란?

1. 한눈에 이해하는 차이점 MCP (Model Context Protocol)RAG (Retrieval-Augmented Generation)설명사용자 정보와 맥락을 기억하고 반영하는 기술외부 문서나 데이터베이스에서 정보를 검색해 답변 생성초점“누

cord-ai.tistory.com

이번에 MCP를 실전에서 어떻게 활용할 수 있을까?에 대해 기록해보려 한다.

 

Sense Stock을 개발하는 과정에서 실적 캘린더, 경제 이벤트, 섹터 데이터, 시가총액 등
매일 크롤링해서 Google Sheet에 정리해두고는 있었지만, 문제는 그 다음이었다.

“정작 데이터는 있는데, 활용을 못 한다.”

  • 사용자 성향에 맞는 데이터만 골라서 보여주기 어려웠고
  • 프롬프트에 데이터를 직접 넣는 방식은 최신성 문제(데이터 갱신 누락)나 응답 한계가 있었다

그래서 생각한 방향은
GPT가 실시간으로 시트를 조회하고, 응답에 그 값을 포함하게 만들 수 없을까? 였다.

MCP는 이걸 아주 자연스럽게 해준다.
특히 SQL 한 줄 없이, 그냥 “요즘 테슬라 주가 어때?”만 물으면 알아서 Symbol을 찾아 Sheet를 조회하고, 결과를 응답에 반영해준다.


다만 초기에 부딪혔던 문제는 예상대로 Rate Limit. Google Sheet API를 다수 호출하면 금방 제한에 걸린다.
그래서 지금은 서버에 데이터를 정적으로 저장해서 참조하는 방식도 병행 실험 중이다.

https://cord-ai.tistory.com/244

 

Sense Stock, D+19

📅 Sense Stock 개발 일지 (2025-07-15)n8n, 사용자 질의 기반 경제/시장/주식 분석 자동화 파이프라인 구축 중 진행한 작업들을 정리합니다.오늘은 n8n 기반으로 수집한 Market Data를 Google Sheet에서 불러오

cord-ai.tistory.com

 

이번 글에서는 Rate Limit 문제보다,
MCP를 어떻게 구성했는지, 그리고 GPT가 어떤 방식으로 데이터를 읽고 응답하게 했는지 그 구현 중심으로 정리해보려 한다.

 

📌 MCP가 뭔데? 왜?

MCP는 Model Context Protocol의 약자로,
GPT 같은 LLM이 외부 툴(Google Sheet, DB, API 등)을 자연어 기반으로 호출할 수 있게 해주는 프로토콜이다.

한마디로, 사용자가 텍스트로 “테슬라 실적 보여줘”라고 하면 GPT가 내부적으로 MCP 툴을 호출해서 구글시트에서 TSLA 데이터를 검색하고, 그걸 바탕으로 답변을 생성하는 방식이다.

 

데이터를 다루다 보면, 가장 귀찮은 게 결국 “필터링 + 검색”이다.
예를 들어 실적이나 주가 데이터를 보려고 할 때마다 Sheet 열고, 필터 걸고, 심지어 SQL 쓰거나 VLOOKUP 쓰는 건 너무 비효율적이다.

그래서 생각한 게,

“차라리 GPT가 직접 데이터를 읽고 응답해주면 안 될까?”

 

이러한 흐름에서 MCP(Model Context Protocol)를 실험하게 됐다.

추후, LLM모델을 사용해서 단순 Text를 통해서 데이터를 조회해볼 수 있고,

또 관련 데이터들을 취합해 대시보드를 만들어 볼 수도 있겠다.

 

🧱 Workflow 구조

Step 1. MCP Server Workflow 구성

  • Google Sheet 노드를 불러와서 데이터를 조회하는 기능을 구성
  • 이 MCP Server는 데이터를 제공하는 API 역할

MCP Server Workflow 및 해당 URL Main Workflow MCP Client SSE Endpoint - 입력

Step 2. Main Workflow에 MCP Client Node 추가

  • SSE 방식으로 MCP Server를 호출하도록 설정
  • MCP Client Node에 MCP Server URL (=SSE Endpoint)만 넣으면 자동으로 연결됨

Main Workflow

## 지침 프롬프트:

{{ $json.chatInput }}

MCP Server에 접근해서, 데이터(Google Sheet) 조회
해당 데이터들을 기반으로 최종 응답

Step 3. Tool Name 없이도 자동 인식

  • 원래는 MCP에서 Tool 이름을 명시해야 GPT가 호출할 수 있는걸로 아는데,
  • 이상하게도 Tool 이름을 설정하지 않아도 GPT가 알아서 인식해서 호출했다.
    • 예: 연동된 Sheet는 2개이고, 각 Sheet마다 여러개의 작업 Sheet가 있다.
    • 근데 GPT는 "테슬라 가장최근 데이터 좀 확인해봐"라는 질문만으로 Sector_SP500 Tool을 자동으로 선택해서 데이터를 조회했다.
    • 이건 아직도 미스터리긴 한데... 어떻게 한번에 접근을 한거지??😕(= 결과값 확인 필요)

MCP Server 접근
MCP 접근: Input / Output

 

✔ 진행 중 고민한 점

  • 가장 먼저 부딪힌 문제는 Rate Limit.
    여러 사람이 동시에 사용하거나, GPT가 너무 자주 MCP를 호출하면 Google Sheet API 제한에 걸린다.
  • 그래서 정적인 파일(JSON/CSV)로 내려받고, n8n 서버에 저장해서 참조하는 방향도 병행 실험 중이다.
  • 아직 더 결과값을 확인해봐야겠지만, 자연어 질의 정확도가 중요한것 같다.
    • 어쩔때는 결과값을 제대로 못 가져오는 경우가 있는데, 못찾는건지.. 아님 접근을 못 했던건지 모르겠다.
    • GPT가 데이터를 “실제로 참조했는지”는 응답 내 근거에 따라 유추 가능하긴 한데,
      향후에는 응답 내 “출처 표시”나 “참조된 행 정보”도 포함시키면 좋을 듯

 

🏸 사용하면서 느낀 점

이번 시도는 그냥 실험적으로 한번 해본 거다.
GPT가 단순 텍스트만이 아니라 외부 Sheet에 연결된 데이터를 직접 조회하고 응답에 반영할 수 있을까?
라는 질문에서 시작한 실험이었다. 결론적으로 말하자면, 잘 된다.
생각보다 자연어 질의의 정확도가 중요했고,
GPT가 시트 구조를 파악하려면 데이터 구조에 대한 설명 + 질의 템플릿을 사전에 잘 설계해줘야 했다.

예를 들어

“테슬라 최근 수익률 어때?”
라고 물으면, GPT는 Symbol TSLA를 자동 추출해서 "S&P500 Daily" 시트에서 조회한다.
이런 식으로 MCP Tool과 시트 구조가 잘 매핑되면 꽤 직관적으로 작동하는 것 같다.

다만 GPT가 실제로 시트를 참조해서 답한 건지 확신하려면,
응답 안에 근거가 있는지를 눈으로 봐야 한다.
향후에는 참조된 행 정보나 출처 표시까지 같이 넣는 구조로 확장하면 더 신뢰도 있는 응답이 될 듯하다.

댓글