일타 저스틴의 MCP 강의 1. MCP란?

자, 수강생 여러분 반갑습니다! 대한민국 최고의 일타 강사, 저스틴입니다. 여러분이 왜 이 자리에 있는지 저는 정확히 알고 있습니다. Claude, GPT, Gemini 같은 거대 언어 모델(LLM)의 엄청난 힘을 직접 목격했기 때문이죠. 이걸로 멋진 결과물도 만들고, 창의적인 글을 생성하고, 심지어 꽤 괜찮은 코드까지 짜는 걸 보셨을 겁니다.

하지만 동시에, 거대한 벽에 부딪힌 경험도 분명히 있으실 겁니다.

컴공과 1학년 학생이라면 눈 감고도 할 간단한 일을 LLM에게 시켰다가 처참하게 실패하는 모습을 본 적 있으시죠? “와, 이거 대단한데?” 하는 경외감과 “아니, 이걸 못한다고?” 하는 좌절감을 동시에 느끼면서, 이 강력한 모델들이 사실은 창문도, 도구도 없는 디지털 방 안에 갇혀 있다는 것을 깨달으셨을 겁니다.

오늘 강의는 바로 그 방의 문을 부숴버리는 방법에 대한 이야기입니다. 여러분의 AI에게 현실 세계와 상호작용할 도구를 쥐여주는 것, 그리고 그 모든 것의 열쇠가 될 혁신적인 새 표준, 바로 **MCP(Model Context Protocol)**에 대한 것입니다.

LLM의 치명적인 약점, ‘아킬레스건’

LLM은 언어와 패턴의 대가이지만, 컴퓨터가 하는 방식대로 ‘계산’하지는 않습니다. 가장 확률이 높은 토큰 순서를 ‘예측’할 뿐이고, 그건 종종 그냥 ‘추측’에 불과하다는 거죠.

LLM이 다음과 같은 문제에 취약합니다.

  • 정확한 산수: 10자리 숫자 두 개를 곱하라고 시키면, 아주 자신감 넘치게 틀린 답을 내놓습니다.
  • 실시간 정보: LLM의 지식은 훈련 시점에 멈춰 있습니다. 오늘 날씨, 현재 주가, 최신 뉴스를 전혀 알지 못하죠.
  • 개인 데이터 접근: 여러분의 로컬 파일, 회사 데이터베이스, 개인 캘린더를 읽을 수 없습니다.

한마디로 LLM의 세계는 현실 세계와 완벽하게 격리된 ‘순수한 텍스트의 세계’인 셈입니다.


임시방편 해결책, ‘함수 호출(Function Calling)’

그렇다면 이 간극을 어떻게 메워왔을까요? 지금까지의 최선책은 ‘함수 호출’ 또는 ‘도구 사용’이라 불리는 방식이었습니다.

아이디어는 간단합니다. LLM을 감싸는 프로그램을 하나 만드는 거죠. 일종의 ‘지휘자(Orchestrator)’ 역할을 하는 프로그램입니다. 예를 들어 문자열이 몇 개의 문자를  포함하고 있는 지 알려고 한다면,

  1. 사용자의 질문을 받습니다.
  2. 질문과 함께 사용 가능한 ‘도구’ 목록(예: len 함수)을 LLM에게 전달합니다.
  3. LLM은 직접 답하는 대신, “나 character_counter라는 도구를 이 문자열에 사용해야겠어”라는 특별한 메시지를 보냅니다.
  4. 여러분이 만든 ‘지휘자’ 프로그램이 이 메시지를 보고, 실제 파이썬 len() 함수를 호출합니다.
  5. 결과값(488)을 받아서 다시 LLM에게 전달합니다.
  6. 이제서야 LLM은 정확한 정보를 바탕으로 “이 문자열은 정확히 488개의 문자를 포함하고 있습니다”라고 최종 답변을 생성합니다.

이렇게 하는 것도 대단하지만, 이런 걸 ‘덕테이프 해결책(Duct Tape Solution)’ 이라고 부릅니다. 임시방편이라는 거죠. 표준도 없고, 모델마다 방식도 제각각입니다.


게임 체인저의 등장, AI의 USB-C 포트 ‘MCP’

자, 드디어 오늘의 주인공이 등장합니다. 2024년, Claude 모델을 만든 Anthropic이라는 회사가 MCP(Model Context Protocol) 라는 명세를 발표합니다.

‘AI를 위한 USB-C’ 라는 비유는 탁월 합니다. USB-C가 나오기 전을 생각해 보세요. 스마트폰 충전 케이블, 카메라 케이블, 외장 하드 케이블… 서랍 속에 온갖 종류의 케이블이 뒤엉켜 있었죠. 하지만 USB-C가 이 모든 것을 하나의 표준 커넥터로 통합했습니다. 우리는 그냥 꽂기만 하면 전원이든 데이터든 알아서 작동할 거라고 믿습니다.

MCP가 바로 AI 도구를 위해 똑같은 역할을 합니다. AI 모델이 외부 도구나 데이터 소스를 발견하고 통신하는 방법표준화한 ‘공개 프로토콜’인 것이죠. 그 도구가 간단한 파이썬 함수든, 복잡한 API든, 데이터베이스 쿼리든 상관없습니다. MCP라는 언어로 ‘말’할 수만 있다면, 어떤 MCP 호환 AI든 거기에 연결할 수 있습니다.

이건 그냥 이론이 아닙니다. 마이크로소프트는 2025년 빌드 행사에서 MCP를 윈도우 11의 AI 에이전트를 위한 기본 레이어로 통합하겠다고 발표했고, 구글은 자사 클라우드에 MCP 서버를 배포하는 튜토리얼을 공개하고 있습니다. 업계 전체가 MCP를 중심으로 뭉치고 있는 겁니다.

MCP는 클라이언트-서버 구조로 움직입니다.

  • MCP 호스트 (지휘자): 여러분이 쓰는 AI 앱 그 자체입니다. (예: VS Code, Claude.ai)
  • MCP 클라이언트 (메신저): AI 앱(호스트)이 각 서버와 1대1로 통신하도록 돕는 ‘전담 메신저’입니다.
  • MCP 서버 (정보원): 파일 시스템, 데이터베이스처럼 실질적인 정보와 능력을 제공하는 ‘전문가’입니다.

AI 앱 하나가 여러 서버(정보원)와 동시에 대화하기 위해, 각 서버마다 전담 클라이언트(메신저)를 하나씩 만들어 소통하는 그림을 상상하시면 됩니다.

MCP는 두 개의 층으로 이루어져 있습니다.

  • 데이터 계층 (뼈대): AI와 서버가 어떤 언어(JSON-RPC)로, 어떤 내용(도구, 리소스, 프롬프트)을 주고받을지 정하는 핵심 규칙입니다.
  • 전송 계층 (피부): 그 대화가 어떤 통로(인터넷, 컴퓨터 내부 등)를 통해 오고 갈지 정하는 외부 규칙입니다.

MCP는 AI 세계의 USB-C 포트와 같은 표준이며, 서버는 도구, 리소스, 프롬프트를 통해 AI에게 실질적인 능력을 제공하는 엔진입니다. 클라이언트는 Elicitation, Roots, Sampling이라는 슈퍼파워로 사용자와 AI 사이의 상호작용을 안전하고 스마트하게 조율하는 심장과도 같습니다.

MCP는 AI가 단순히 똑똑한 대답 기계를 넘어, 우리를 대신해 실제 세상에서 행동하고, 우리의 삶을 극적으로 변화시킬 진정한 ‘에이전트’가 되기 위한 핵심 기반 기술입니다.

서버는 AI에게 세 가지 핵심적인 ‘능력 빌딩 블록’을 제공합니다.

  1. 도구 (Tools) – AI의 ‘손과 발’:
    • 정의: AI가 필요할 때 능동적으로 호출하여 실제 행동을 수행하는 기능입니다.
    • 예시: 항공편 검색, 이메일 전송, 캘린더에 일정 등록하기.
    • 핵심: AI가 스스로 판단해서 사용하는 ‘행동 능력’입니다. 하지만 모든 행동은 사용자의 승인 같은 ‘인간의 통제’ 아래에 둘 수 있어 안전합니다.
  2. 리소스 (Resources) – AI의 ‘교과서’:
    • 정의: AI가 똑똑한 판단을 내리기 위해 필요한 읽기 전용의 배경지식, 데이터입니다.
    • 예시: 특정 문서의 내용, 데이터베이스의 정보, 내 캘린더의 비어있는 시간.
    • 핵심: AI가 직접 수정할 수는 없지만, 행동하기 전에 반드시 참고해야 할 ‘상황 정보’입니다.
  3. 프롬프트 (Prompts) – AI의 ‘작업 매뉴얼’:
    • 정의: “휴가 계획 짜기”처럼 복잡한 작업을 수행하기 위해 **미리 만들어 놓은 ‘명령어 세트’**입니다.
    • 예시/휴가계획 명령어를 입력하면 목적지, 예산 등을 순서대로 물어보며 작업을 처리.
    • 핵심: 사용자가 직접 선택해서 AI에게 복잡한 일을 효율적으로 시킬 수 있는 ‘자동화 템플릿’입니다.

시너지 효과: MCP의 진정한 힘은 여러 서버가 협력할 때 나옵니다! 여행 서버의 ‘항공편 검색(도구)’, 캘린더 서버의 ‘내 스케줄(리소스)’, 그리고 사용자가 호출한 ‘휴가 계획(프롬프트)’이 합쳐져, 몇 시간이 걸릴 여행 예약을 단 몇 분 만에 끝내는 기적을 만들어내는 것이죠!

클라이언트는 단순히 서버의 말을 전달만 하는 게 아닙니다. 오히려 서버가 더 똑똑하게 일하도록 돕고, 사용자를 안전하게 보호하는 세 가지 슈퍼파워를 가지고 있습니다.

  1. Elicitation (정보 요청) – ‘잠깐만요! 이거 알려주세요!’:
    • 정의: AI(서버)가 작업 도중 정보가 부족하면, 잠시 멈추고 사용자에게 정중하게 추가 정보를 요청하는 기능입니다.
    • 예시: 항공편 예약을 거의 마친 AI가 “결제하시기 전에 좌석은 창가 쪽으로 하시겠어요, 복도 쪽으로 하시겠어요?”라고 물어보는 상황.
    • 핵심: AI와의 대화가 끊기지 않고 물 흐르듯 자연스럽게 이어지게 합니다. 물론, 비밀번호 같은 민감 정보는 절대 묻지 않도록 설계되었습니다!
  2. Roots (접근 범위 지정) – ‘이 폴더 밖은 위험해!’:
    • 정의: AI(서버)가 내 컴퓨터의 파일에 접근할 때, 지정된 ‘안전 폴더’ 안에서만 작업하도록 경계를 설정하는 보안 기능입니다.
    • 예시: ‘여행 계획’ 폴더를 Root로 지정하면, AI는 그 폴더 안의 파일만 읽고 쓸 수 있고 다른 개인 파일은 절대 건드릴 수 없습니다.
    • 핵심: AI의 강력한 능력을 활용하면서도 내 데이터의 보안을 완벽하게 지킬 수 있습니다.
  3. Sampling (LLM 완성 요청) – ‘네 생각은 어때? AI야!’:
    • 정의: 서버가 복잡한 판단이 필요할 때, 직접 LLM을 호출하는 대신 클라이언트에게 “이 문제에 대해 LLM에게 물어봐 줘”라고 요청하는 기능입니다.
    • 예시: 47개의 항공편 옵션을 찾은 서버가, “이 중에서 가격, 시간, 사용자 선호를 모두 고려했을 때 가장 좋은 선택이 뭔지 LLM에게 분석을 요청해 줘”라고 클라이언트에게 부탁하는 것.
    • 핵심: 서버는 비싼 LLM을 직접 연결할 필요 없이 클라이언트의 LLM을 빌려 쓸 수 있고, 사용자는 AI가 AI에게 시키는 모든 과정을 검토하고 승인하며 **’인간 중심의 통제권’**을 잃지 않을 수 있습니다.

마지막으로, 이 모든 복잡한 통신이 어떻게 질서정연하게 유지될까요? 바로 ‘버전 관리’ 덕분입니다.

  • 버전 형식: ‘2025-06-18’처럼 **’마지막으로 큰 변화가 있었던 날짜’**로 버전을 표기합니다.
  • 하위 호환성: 사소한 업데이트로는 버전을 올리지 않습니다. 옛날 버전과도 잘 통신할 수 있도록 안정성을 최우선으로 합니다.
  • 버전 협상: AI(클라이언트)와 서버가 처음 만날 때, “우리 어떤 버전으로 대화할까요?”라고 서로 확인하고 합의하는 과정을 거칩니다. 말이 통하지 않으면 안전하게 연결을 종료하죠.

MCP가 열어젖힐 미래는 어떤 모습일까요?

  • 진정한 개인 비서: 내 캘린더와 노션을 AI가 읽고 “오늘 오후 3시 회의, 자료 준비 다 됐습니다!”라고 알려줍니다.
  • 개발의 혁신: 디자이너가 피그마로 그린 화면만 보고 AI가 웹사이트 코드를 통째로 만들어냅니다.
  • 데이터 분석의 민주화: “작년 4분기 부산 지점 매출 현황 보고서 초안 좀 써줘”라고 채팅만으로 회사 전체 데이터 분석이 가능해집니다.

파이썬 개발자를 위한 두 개의 검, mcp vs fastmcp

자, 이제 우리 파이썬 개발자들은 뭘로 시작해야 할까요? 이 바닥에는 아주 흥미로운 이야기를 가진 두 개의 라이브러리가 있습니다.

1. 공식 라이브러리: mcp MCP를 만든 Anthropic이 직접 관리하는 공식 파이썬 라이브러리입니다. 특징은 다음과 같습니다.

  • 엄격함: MCP 명세를 칼같이 준수합니다.
  • 표준: 모든 구현의 기준이 되는 ‘레퍼런스’입니다.
  • 활발한 개발: 프로토콜을 정의하는 팀이 직접 관리합니다. 안정적이고 표준을 완벽히 따르는 ‘교과서’ 같은 존재라고 할 수 있습니다.

2. 실전 끝판왕:  fastmcp 

fastmcp의 스토리는 전형적인 오픈소스 성공 신화입니다. ‘제레마이어 로윈’이라는 개발자가 MCP 서버를 놀랍도록 간단하고 파이썬답게 만들 수 있는 고수준 라이브러리 fastmcp를 만들었습니다. 이게 너무 좋아서 초기 버전은 아예 공식 mcp 라이브러리에 통합되기도 했습니다.

하지만 그는 멈추지 않았습니다. 공식 명세보다 더 빠르게 혁신하고, 더 많은 기능을 추가하고 싶었던 그는 독립적인 새 라이브러리를 만들었고, 이것이 바로 지금의 fastmcp입니다.

  • 자유로움: 아직 공식 명세에는 없는 유용한 기능들을 많이 포함합니다.
  • 고수준: 데코레이터 하나로 파이썬 함수를 뚝딱 도구로 만들어버리는 아름답고 깔끔한 API를 제공합니다.
  • 높은 인기: 훌륭한 문서와 사용 편의성 덕분에 커뮤니티의 사랑을 듬뿍 받고 있습니다. 심지어 구글 공식 튜토리얼에서도 이 라이브러리를 사용합니다.

어떤 걸 써야 할까요? mcp가 좀 더 정석적이고 절차적이라면, fastmcp는 훨씬 간결하고 직관적입니다.

결론은? “둘 다 알아야 한다!” 입니다. 이 생태계는 아직 초창기이고, mcp가 안정적인 기반을 제공하는 동안 fastmcp는 개발의 편의성과 가능성의 경계를 넓히고 있기 때문입니다. 그래서 이 책에서는 두 라이브러리를 모두 다룬다고 합니다. 우리도 그 길을 따라갈 겁니다.


자, 오늘 정말 중요한 첫발을 내디뎠습니다. 코딩에 들어가기 전에, 오늘 배운 핵심 개념들을 머릿속에 각인시키고 끝내겠습니다.

  • LLM은 강력하지만 근본적인 한계가 있다. 정확한 계산이나 실시간 데이터 접근이 불가능하다.
  • 기존의 ‘함수 호출’은 표준이 없는 임시방편이다.
  • MCP는 AI를 위한 USB-C 같은 ‘공개 표준’이다. 어떤 AI든 MCP를 지원하는 도구와 연결할 수 있다.
  • MCP는 ‘우연한 만능 플러그인’ 생태계를 만들어낸다. 한 가지 목적으로 만든 도구를 모두가 재사용할 수 있다.
  • 파이썬 개발자에게는 공식 라이브러리 mcp와 실전 끝판왕 fastmcp라는 두 개의 핵심 도구가 있다.

About the Author
(주)뉴테크프라임 대표 김현남입니다. 저에 대해 좀 더 알기를 원하시는 분은 아래 링크를 참조하세요. http://www.umlcert.com/kimhn/

Leave a Reply

*