LangChain4j - Spring AI MCP 구축기 (1)

김주엽·2025년 5월 16일
post-thumbnail

✨ 들어가며

요즘 자주 보이는 MCP, 도대체 어떻게 구현하는 걸까요?

공식 문서를 보면 너무 어렵게 설명되어 있어서…
저도 처음엔 번역기 돌려가며 새벽까지 GitHub 리포지토리들 이리저리 뒤지느라 힘들었습니다..

그런데 막상 구조를 이해하고 나면 기존에 우리가 써오던 다른 프로토콜들과 크게 다르지 않다는 걸 알 수 있어요.

그래서! 이 글에서는 MCP가 무엇인지, 그리고 어떻게 동작하는지 위주로 작성했습니다.

한 번 읽고 나면 전체 흐름이 대충은(?) 머릿속에 딱! 잡히실 거예요.


🧠 MCP란?

MCP(Model Context Protocol)는 LLM이 외부 시스템이나 데이터와 연동할 수 있도록 돕는 개방형 프로토콜입니다.

기존 AI는 DB 조회나 외부 서비스(예: 인터넷 검색, 실시간 데이터 제공) 연동처럼
복잡한 기능 확장에 한계가 있었고, 학습된 데이터에 의존하기 때문에 실시간 정보 활용이 어려웠습니다.

이러한 한계를 극복하기 위해 AnthropicMCP를 개발했습니다.

MCP를 사용하면 LLM이 외부의 다양한 시스템, 도구, 데이터와 자유롭게 소통할 수 있어 활용도가 훨씬 높아집니다.


🧩 MCP의 핵심 구성 요소

MCP는 Client - Server 아키텍처를 기반으로 구성되며, 핵심은 다음의 세 가지입니다.

🏠 Host

  • LLM을 담고 조정하는 중앙 컨트롤러 역할을 합니다.
  • MCP Client의 생성과 연결을 관리하죠.
  • 👉 예시: 스프링부트 백엔드 서버가 Host 역할을 합니다.

📡 Client

  • Host가 생성하며 MCP Server와의 연결을 담당합니다.
  • 요청을 서버에 전달하고 결과를 받아오는 중간 전달자 역할이에요.
  • 👉 예시: 백엔드 서버에서 생성한 MCP Client가 MCP Server에 연결됩니다.

🛠️ Server

  • 실제 기능(도구, 리소스, 프롬프트 등)을 전달하는 서비스 제공자입니다.
  • MCP Client가 검색하고 실행할 수 있도록 리소스를 노출합니다.
  • 👉 Spring AI에서 제공하는 MCP Server를 사용하면 쉽게 구축할 수 있어요.

공식 문서에서 제공하는 MCP 아키텍처 이미지

공식 문서에서 제공하는 MCP 아키텍처 이미지


⚙️ MCP 동작 흐름

  1. Host가 MCP Client를 생성하고, 클라이언트는 MCP Server와 연결합니다.

  2. MCP Server는 "저 이런 도구/리소스 있어요!" 하고 클라이언트에 알리고,

    클라이언트는 이 정보를 Host에 전달합니다.

  3. LLM이 특정 작업을 하기 위해 필요한 도구를 요청합니다.

  4. Host는 요청을 MCP Client로 전달하고, MCP Client는 Server에 도구 사용 요청을 보냅니다.

  5. Server는 작업을 수행한 뒤 결과를 MCP Client에게 전달합니다.

  6. MCP Client는 결과를 Host에 전달하고, Host는 이를 LLM에게 전달합니다.

  7. 최종적으로 LLM이 해당 결과를 바탕으로 프롬프트를 생성합니다.


✅ 마무리하며

MCP는 처음 보면 어려워 보이지만, 구조만 익히면 충분히 다룰 수 있습니다.

기존에 우리가 해왔던 API 통신이나 메시지 기반 구조와도 유사한 점이 많아서

조금만 익숙해지면 생각보다 빠르게 적용할 수 있어요.

이 문서가 MCP 이해에 작은 도움이 되었길 바랍니다😊


📄 참고자료

profile
나야 루이지

0개의 댓글