brunch

모든 AI가 'USB-C'로 통신하는 시대가 온다

MCP(모델 컨텍스트 프로토콜) 완벽 해설

by 위키북스
모든 AI가 'USB-C'로 통신하는 시대가 온다: MCP(모델 컨텍스트 프로토콜) 완벽 해설


AI는 이제 단순히 질문에 답하는 챗봇을 넘어, 이메일을 보내고, 일정을 등록하며, 코드를 수정하는 등 실제 작업을 수행하는 'AI 에이전트'로 진화하고 있습니다. 하지만 이런 똑똑한 AI 에이전트가 캘린더, 이메일, GitHub 등 세상의 수많은 외부 도구들과 소통하려면 어떻게 해야 할까요? 지금까지는 각 도구의 API에 맞춰 개별적으로 연동 코드를 짜는, 비효율적인 '맞춤형 배선 작업'이 반복되어야 했습니다.


이러한 복잡성을 해결하기 위해 등장한 것이 바로 MCP(Model Context Protocol)입니다. MCP는 AI 에이전트가 모든 외부 도구와 하나의 표준화된 방식으로 소통할 수 있도록 만든 '통합 통신 규약'입니다. 책 『LLM과 RAG로 구현하는 AI 애플리케이션』에서는 이를 'AI 애플리케이션의 USB-C 포트'에 비유합니다. 다양한 기기를 하나의 포트로 연결하는 USB-C처럼, MCP는 수많은 AI 기능과 서비스를 하나의 프로토콜로 연결하는 핵심 허브 역할을 합니다.


오늘은 『LLM과 RAG로 구현하는 AI 애플리케이션』 10장의 내용을 바탕으로, AI 에이전트의 미래를 바꿀 MCP의 개념과 작동 방식, 그리고 실제 구현 사례까지 쉽고 자세하게 알아보겠습니다.





MCP 이전의 세상: M x N 문제


MCP가 없던 시절, AI 개발은 매우 복잡했습니다. M개의 AI 애플리케이션과 N개의 외부 도구가 있다면, 이 둘을 연결하기 위해 총 M x N개의 개별적인 인터페이스를 구현해야 했습니다.


예를 들어 4개의 AI 앱이 각각 3개의 도구(캘린더, 이메일, 문서 검색)를 사용하려면 총 12번의 연동 개발이 필요했습니다. 이는 개발 비용과 시간을 기하급수적으로 증가시키는 비효율의 극치였습니다.


Screen_Shot_2025-09-10_at_8.17.05_PM.png?type=w966





MCP의 등장: AI를 위한 통합 규격

MCP는 이러한 M x N 구조를 M + N 구조로 획기적으로 단순화합니다. 이제 각 도구는 MCP 표준에 맞춰 한 번만 'MCP 서버'로 만들어두면 되고, AI 애플리케이션은 'MCP 클라이언트' 기능만 탑재하면 됩니다. 그러면 어떤 AI 앱이든 표준화된 방식으로 모든 MCP 서버의 도구들을 자유롭게 사용할 수 있습니다.



MCP는 다음과 같은 핵심 요소로 구성됩니다.


툴 (Tool): '이메일 발송', '문서 검색'처럼 AI가 호출할 수 있는 구체적인 기능 단위입니다.

MCP 서버 (MCP Server): 정의된 툴을 실제로 실행하고 결과를 반환하는 실행 주체입니다.

MCP 클라이언트 (MCP Client): AI 애플리케이션(LLM) 측에서 MCP 서버의 툴을 호출하는 인터페이스입니다.

통신 규약 (JSON-RPC 2.0): 클라이언트와 서버가 요청과 응답을 주고받는 메시지 형식입니다.

Screen_Shot_2025-09-10_at_8.18.00_PM.png?type=w966





실전! 문서 검색 AI 에이전트에 MCP 적용하기


이제 개념을 넘어 실제 코드로 MCP를 구현해 보겠습니다. 책의 10.3절 예제처럼, 라마인덱스 관련 문서와 GitHub 문서를 각각 검색할 수 있는 2개의 도구를 MCP 서버에 등록하고, 클라이언트가 사용자의 질문에 맞춰 적절한 도구를 호출하도록 만들어 보겠습니다.



1단계: MCP 서버 구축하기 (feat. @mcp.tool() 데코레이터)

먼저 server.py 파일을 만들어 라마인덱스 기반의 문서 검색 엔진 두 개를 준비합니다.

스크린샷 2025-09-11 225039.png


여기서 가장 중요한 부분은 @mcp.tool() 데코레이터입니다. 이 한 줄만 함수 위에 추가하면, 평범한 파이썬 함수가 LLM이 이해하고 호출할 수 있는 표준화된 '툴'로 변신하여 MCP 서버에 자동으로 등록됩니다.



2단계: MCP 클라이언트와 에이전트 생성하기

다음으로 client.py 파일을 만들어 MCP 서버에 연결하고, 등록된 툴을 사용할 AI 에이전트를 생성합니다.

스크린샷 2025-09-11 225131.png


BasicMCPClient로 서버에 연결한 뒤, McpToolSpec을 사용하면 서버에 등록된 search_llama_docssearch_github_docs 툴의 명세(이름, 설명, 파라미터 등)를 자동으로 가져와 라마인덱스 에이전트가 사용할 수 있는 형태로 변환해 줍니다.



3단계: AI 에이전트에게 질문하기

이제 에이전트에게 질문을 던져볼 차례입니다.

스크린샷 2025-09-11 225206.png



실행 결과

=== 에이전트 응답 ===
LlamaIndex를 사용하여 문서 검색을 수행하려면 다음과 같은 절차를 따릅니다.
1. `SimpleDirectoryReader`를 사용하여 로컬 문서 데이터를 불러옵니다.
2. 불러온 문서 데이터를 `VectorStoreIndex`로 변환하여 인덱스를 생성합니다.
3. 생성된 인덱스를 기반으로 `as_query_engine()`을 통해 쿼리 엔진을 만들고, 검색 쿼리를
수행할 수 있습니다. ...
(이하 예시 코드)





작동 방식 심층 분석


위 예제는 어떻게 작동했을까요? 그 흐름은 다음과 같습니다.


도구 목록 조회: client.py의 McpToolSpec이 server.py에 "어떤 도구들을 가지고 있니?"라고 묻습니다. 서버는 "라마인덱스 문서 검색 도구와 GitHub 문서 검색 도구가 있어"라고 각 도구의 설명서와 함께 알려줍니다.

질문 분석 및 도구 선택: 사용자가 "Llama-Index 활용법"을 질문하자, FunctionAgent는 LLM의 지능을 이용해 "아, 이 질문은 라마인덱스에 대한 것이니 search_llama_docs 도구를 써야겠군!"이라고 판단합니다.

도구 호출: 클라이언트는 서버에게 " search_llama_docs 도구를 'Llama-Index 활용법'이라는 입력값으로 실행해줘"라는 표준화된 요청(JSON-RPC)을 보냅니다.

실행 및 결과 반환: 서버는 요청에 따라 llama_query_engine을 실행하고, 검색된 문서 내용을 클라이언트에게 돌려줍니다.

최종 답변 생성: 에이전트의 LLM이 검색된 내용을 바탕으로 사용자 친화적인 최종 답변을 생성하여 보여줍니다.






결론: 행동하는 AI의 미래를 열다


MCP는 단순히 기술적인 표준을 넘어, AI가 진정으로 '행동하는 에이전트'로 발전하기 위한 핵심 기반입니다. OpenAI, Microsoft, Google 등 거대 빅테크 기업들이 MCP 생태계에 적극적으로 참여하고 있는 이유도 바로 이 때문입니다.


오늘 살펴본 MCP의 개념과 실습은 『LLM과 RAG로 구현하는 AI 애플리케이션』 10장에서 다루는 최신 기술의 일부입니다. 이 책을 통해 여러분도 직접 MCP 서버와 클라이언트를 구축하고, 다양한 외부 도구와 소통하는 강력한 AI 에이전트를 만들어 '행동하는 AI'의 미래를 여는 개발자가 되어보시길 바랍니다.




https://wikibook.co.kr/llm-rag/


이 책은 빠르게 진화하는 AI 기술 트렌드를 단순히 따라가는 데 그치지 않고 실제 구현과 통합에 필요한 핵심 통찰과 실용적인 해법을 제시하는 완성도 높은 실무 가이드입니다. 생성형 AI 기술의 주요 흐름을 실무 관점에서 체계적으로 다뤄 개발자와 기획자 모두가 RAG 시스템을 손쉽게 구축할 수 있도록 구성했습니다.



keyword
작가의 이전글HTML, CSS, JS로 팝업(모달)창 구현하기