안녕하세요,
요즘 AI에게 다양한 기능을 연동해주는 MCP(Model Context Protocol) 서버가 많은 주목을 받고 있습니다. OpenAI 역시 이러한 흐름에 발맞춰, GPT와 MCP를 연동할 수 있는 기능을 지원하고 있습니다.
이번 포스팅에서는 GPT에게 MCP 기반의 외부 도구 기능을 어떻게 연동할 수 있는지, 그 구체적인 방식과 예제를 소개해드리겠습니다.
GPT + MCP 연동 개요
GPT와 MCP 서버를 연동하려면, OpenAI API를 통해 Tool Call 기능과 Streaming API 기능을 함께 활용해야 합니다. 현재 웹 기반 GPT(ChatGPT 웹 인터페이스)에서는 사용자 정의 MCP 서버와의 연동을 직접 지원하지 않기 때문에, 반드시 OpenAI API를 사용해야 합니다.
OpenAI의 GPT는 이제 단순한 텍스트 생성기를 넘어, 외부 도구(Function)를 직접 호출할 수 있는 기능을 제공합니다. 이때 사용되는 기능이 바로 Tool Call 기능입니다. 이 기능을 활용하면 GPT는 사용자의 질문을 분석하여 적절한 도구를 자동으로 선택하고, 필요한 입력값을 구조화된 JSON 형태로 생성하여 호출합니다. 여기에 Streaming API 기능을 함께 사용하면, GPT의 응답을 실시간으로 수신하면서 Tool Call이 발생하는 시점을 정확히 감지할 수 있습니다. 이를 통해 GPT가 호출한 도구 요청을 즉시 외부 MCP 서버로 전달하고, 실행 결과를 다시 GPT로 연결해 자연스러운 대화를 이어가는 구조를 구현할 수 있습니다.
GPT는 다음의 흐름으로 MCP 서버와 작동하게 됩니다.
- 사용자 질문 분석
- 필요한 도구 자동 선택 (Tool Call)
- MCP 서버에 요청 전송 (Streaming API기능)
- MCP 결과를 받아 최종 답변 생성
이러한 구조를 통해 GPT는 단순한 대화형 모델을 넘어, 실제 기능을 수행할 수 있는 지능형 AI 에이전트로 확장됩니다.
[Tool Call 기능]
Tool Call 기능은 GPT가 단순히 텍스트를 생성하는 것을 넘어, 외부 도구(Function)를 직접 호출할 수 있도록 해주는 기능입니다. 사용자의 질문을 분석한 뒤, GPT는 미리 정의된 도구 목록 중 적절한 함수를 자동으로 선택하고, 필요한 인자(argument)를 JSON 형식으로 구조화하여 도구 호출 요청을 생성합니다. 이 기능을 활용하면, GPT는 단순한 응답 생성기를 넘어, 외부 시스템과 상호작용하는 지능형 에이전트처럼 동작할 수 있습니다.
[Streaming API]
Streaming API는 GPT의 응답을 한 번에 모두 받는 방식이 아닌, 토큰 단위로 실시간 스트리밍 방식으로 받아볼 수 있게 해주는 기능입니다. 이 기능을 사용하면 GPT가 응답을 생성하는 즉시 바로바로 처리할 수 있어, Tool Call 같은 중간 단계 이벤트를 빠르게 감지하고, 외부 도구(MCP 등)와의 연동도 더 유연하게 구현할 수 있습니다.
예를 들어, Tool Call이 발생하는 순간 이를 실시간으로 감지해 곧바로 외부 서버로 요청을 보내고, 그 결과를 다시 GPT에게 연결하는 흐름을 만들 수 있습니다.
[요약 정리]
기능명 | 제공 주체 | 설명 |
Tool Call | OpenAI | GPT가 사용자 입력에 따라 외부 도구(function)를 자동으로 선택하고 호출하는 기능. 함수 이름과 인자를 JSON 형식으로 구조화함. |
Streaming 응답 (GPT) |
OpenAI | GPT 응답을 실시간으로 받아볼 수 있는 기능. stream=True로 설정 시 토큰 단위 스트리밍 가능. |
Streaming 응답 (MCP) |
FastMCP | 도구(MCP)의 실행 결과를 text/event-stream 형식으로 스트리밍 전달하는 기능. JSON-RPC와 호환됨. |
준비사항
이와 같은 기능을 활용하면, OpenAI의 GPT 모델은 단순한 대화 응답을 넘어서, 외부 시스템과 연동되는 지능형 에이전트로 확장할 수 있습니다. 이번 포스팅에서는 GPT가 Notion에서 프로젝트 목록을 조회하고 데이터를 분석하는 기능을 직접 구현해보겠습니다. 이를 통해 Tool Call, Streaming API, MCP의 실제 활용 방식을 자세히 살펴보게 됩니다.
그에 앞서, 아래 두 가지 정보를 사전에 준비해 주세요. 이 예제에서 사용할 GPT 모델은 OpenAI API 키를 통해 호출되며, Notion 프로젝트에 접근하려면 별도의 통합 토큰(Integration Token)이 필요합니다.
- OpenAI API 키 발급 (➡️ OpenAI 플랫폼에서 발급)
- OpenAI 플랫폼 접속
- 로그인 후 상단 메뉴에서 “API keys” 탭 클릭
- “Create new secret key” 버튼을 눌러 API 키 생성
- 발급된 Secret Key를 복사하여 안전한 곳에 저장
※ 이 키는 .env 파일에 사용되며, 외부에 노출되지 않도록 주의하세요.
- Notion 통합 토큰 발급 (➡️ Notion 개발자 포털에서 발급)
- Notion 개발자 포털사이트 접속
- "새로운 통합(New integration)” 버튼 클릭
- API 통합 설정 구성 -> 사용 권한 -> 페이지 선택에서 페이지 선택 -> 사용 권한 업데이트 순서로 설정
※ 이 과정에서 선택된 페이지(또는 데이터베이스)에 접근 가능하게 됩니다. - 생성된 Internal Integration Token (프라이빗 API 통합 시트릿)을 복사
※ 이 키는 .env 파일에 사용되며, 외부에 노출되지 않도록 주의하세요.
1. 실행 환경
- 운영체제 : Windows 11
- uv : 0.6.14
- python : 3.10.17
- mcp : 1.9.4
- fastmcp : 2.8.1
2. 환경 설정
Python 기반의 개발 환경을 먼저 준비합니다. 이 단계에서는 패키지 관리 도구인 uv를 설치하고, 가상환경을 생성한 뒤 필요한 패키지들을 설치합니다.
[uv 설치] (선택사항)
MCP 서버를 Python 환경에서 구성할 때, 패키지 및 가상환경 관리를 위해 uv를 사용하는 것을 권장합니다. uv는 pip과 venv를 대체할 수 있는 더 빠르고 효율적인 패키지 관리 도구입니다. 아래 명령어로 간단히 설치할 수 있습니다.
※ 선택사항이지만, 향후 개발 및 의존성 관리를 고려하면 설치하는 것을 추천드립니다.
- uv 깃허브 : https://github.com/astral-sh/uv
# Windows PowerShell
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
[가상 환경 생성] (선택사항)
uv 설치가 완료되면, 프로젝트 디렉토리를 초기화하고 가상환경을 생성한 뒤 필요한 패키지를 설치합니다. 가상환경을 사용하는 것을 권장하며, 아래 명령어를 순서대로 실행해 주세요.
# Windows PowerShell
cd \path\to\mcp # 1. 원하는 작업 디렉토리로 이동 (예: D:\mcp)
uv init notion_mcp # 2. 'notion_mcp' uv 프로젝트 폴더 생성
cd gpt_mcp_toolcaller_gradio # 3. 생성된 프로젝트 폴더로 이동
uv venv --python=python3.10 # 4. Python 3.10 기반 가상환경 생성 (.venv 디렉토리 생성)
.venv\Scripts\activate # 5. 가상환경 활성화 (Windows 기준)
3. 코드 및 필요 패키지 다운로드
OpenAI API와 MCP 서버가 연동된 예제 코드를 아래 깃허브에서 제공하고 있습니다. 해당 코드를 다운로드하고 압축을 푼 후, 위에서 생성한 gpt_mcp_toolcaller_gradio 폴더 내로 파일을 이동해 줍니다.
이제 가상환경을 활성화한 상태에서, 아래 명령어를 실행해 프로젝트에 필요한 패키지를 설치합니다.
※ 가상환경을 사용하지 않는 경우에도, 동일한 명령어로 시스템 환경에 설치할 수 있습니다.
# Windows PowerShell
cd \path\to\notion_mcp\gpt_mcp_toolcaller_gradio # 깃허브에서 다운로드한 폴더
uv pip install . # 필요한 패키지 설치
📌 주의: 프로젝트 폴더(gpt_mcp_toolcaller_gradio)는 반드시 notion_mcp 폴더 내부에 위치해야 합니다. uv는 루트 기준으로 .venv를 자동 인식하기 때문에 디렉토리 구조를 유지하는 것이 중요합니다.
4. 환경 설정
gpt_mcp_toolcaller_gradio 폴더(깃허브에서 받은 코드) 안에는 환경 변수를 관리하기 위한 .env 파일이 포함되어 있습니다.
이 파일을 메모장 등 텍스트 편집기로 열어, 내부에 있는 OpenAI API 키와 Notion 토큰 값을 본인의 것으로 수정합니다.
# .env 파일
OPENAI_API_KEY=your_openai_api_key # 이 부분은 실제 api key로 변경해야합니다.
NOTION_TOKEN=your_notion_token # 이 부분은 실제 notion_token으로 변경해야합니다.
※ 이 API 키와 토큰은 개인 인증 정보이므로 절대 외부에 노출되면 안 됩니다.
5. Notion 프로젝트 분석 요청
이제 모든 준비가 완료되었습니다. 아래 명령어를 실행하여 MCP 서버를 먼저 구동하고, 이후 Gradio 인터페이스를 통해 GPT에게 Notion 프로젝트 분석을 요청할 수 있습니다.
[MCP 서버 실행]
# Windows PowerShell (1)
cd \path\to\notion_mcp\gpt_mcp_toolcaller_gradio # 깃허브에서 다운로드한 폴더
python notion_mcp_server.py # MCP 서버 실행
MCP 서버가 정상적으로 실행되면, 아래와 같이 "Uvicorn running on http://0.0.0.0:8000" 문구가 출력됩니다. 이는 서버가 성공적으로 구동되어 요청을 받을 준비가 되었다는 의미입니다.
아래는 실행 예시 화면입니다.
[Gradio 인터페이스 실행 (GPT모델)]
이제 MCP 서버가 실행된 상태에서, GPT와 연동되는 Gradio 인터페이스를 실행해보겠습니다. 아래 명령어를 입력하여 Gradio 앱을 실행합니다.
# Windows PowerShell (2)
cd \path\to\notion_mcp\gpt_mcp_toolcaller_gradio # 깃허브에서 다운로드한 폴더
python gpt_mcp_toolcaller_gradio.py # GPT Gradio 실행
Gradio가 정상적으로 실행되면, 아래와 같이 "Running on local URL: http://127.0.0.1:7860" 문구가 출력됩니다. 이 주소를 통해 Gradio 웹을 실행할 수 있습니다.
아래는 실행 예시 화면입니다.
Gradio 웹 페이지가 정상적으로 실행되었다면, 이제 GPT에게 Notion 프로젝트와 관련된 질문을 직접 해볼 수 있습니다. 아래와 같이 예시 프롬프트를 입력했습니다.
[입력 프롬프트]
- 내 노션 프로젝트 목록 확인해줘.
- 내 노션 프로젝트 분석 해줄래?
실행 결과는 전반적으로 만족스러웠습니다. GPT는 Notion 프로젝트에 대한 통합 토큰 기반의 접근 권한을 활용하여, 실제로 데이터를 정상적으로 조회하고 분석하는 기능을 수행할 수 있었습니다. MCP 서버와의 통신도 안정적으로 이루어졌으며, 프로젝트 목록을 불러오고, 상태·우선순위·진행률 등 주요 지표를 기반으로 한 통계 분석까지 정확하게 작동했습니다. 특히 Tool Call이 발생하는 시점에서 MCP 서버로 요청이 전송되고, 해당 도구의 결과가 다시 GPT에게 전달되어 최종 응답으로 이어지는 전반적인 흐름이 매우 자연스럽게 연결되었습니다.
물론, 일부 자유형 질문에 대해서는 아직 GPT가 의도한 도구를 정확히 선택하지 못하거나, 데이터의 구조를 잘못 해석하는 경우도 있었지만, 기본적인 연동 구조와 기능 구현은 성공적으로 작동했습니다. 이번 예제를 바탕으로 향후에는 더 다양한 MCP 도구를 등록하거나, Notion 외 다른 외부 시스템과의 연동, 또는 대화 흐름 최적화, 역할 기반 응답 개선 등으로 확장해볼 수 있는 가능성도 충분히 확인할 수 있었습니다.
이번 포스팅에서는 OpenAI의 GPT 모델과 MCP(Model Context Protocol) 서버를 연동하여, Notion 프로젝트 데이터를 조회하고 분석하는 기능을 직접 구현해보았습니다. 이를 통해 GPT의 Tool Call 기능, 실시간 응답을 위한 Streaming 처리, 그리고 외부 시스템과의 연동을 위한 MCP 구조가 어떻게 맞물려 작동하는지 구체적으로 살펴볼 수 있었습니다. 비록 아직 완벽하지는 않지만, 이 구조만 잘 갖춰두면 GPT는 단순한 대화형 모델을 넘어 실제 데이터를 다루고 분석하는 AI 도구로 발전시킬 수 있습니다.
앞으로는 다음과 같은 방향으로 확장해볼 수 있습니다.
- ✅ 더 다양한 도구 추가: 캘린더, 메일, 파일 시스템 등
- ✅ 복합 분석 기능: 프로젝트 간 비교, 리스크 예측 등
- ✅ 대화 흐름 최적화: 멀티턴 대화와 자연스러운 응답 개선
- ✅ 배포 및 실서비스 적용: Gradio → 웹앱 또는 실제 사용자 인터페이스 연동
이 글이 GPT와 MCP를 연동하여 실질적인 기능을 구현하고자 하는 분들께 조금이나마 도움이 되었기를 바랍니다. 궁금한 점이나 개선 아이디어가 있다면 언제든지 댓글로 알려주세요!
감사합니다. 🙌
'MCP' 카테고리의 다른 글
Gemma3 + MCP 서버 연동하기: 로컬 AI 모델로 외부 도구 활용하는 방법 (6) | 2025.06.07 |
---|---|
AI 자동화를 위한 필수 도구, MCP 서버 모음 (0) | 2025.05.13 |
[MCP 서버] PDF 문서에서 답을 찾는 Claude AI 만들기 (0) | 2025.04.23 |
MCP를 활용해서 나만의 AI 에이전트 만들기 (데스크톱 Claude 활용) (1) | 2025.04.16 |
클로드에서 공개한 MCP(Model Context Protocol), 그 개념과 특징 (1) | 2025.03.29 |