| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 | 31 |
- modelcontextprotocol
- 스프링부트
- SQLD
- 자바스크립트기초
- springboot 크롤링
- CI/CD
- mcp
- 깃허브
- 개발자튜토리얼
- 브랜치관리전략
- 백엔드개발
- github
- rest api
- 네이버 크롤링
- mcpserver
- selenium
- 깃플로우
- Nan
- 자바스크립트
- SpringBoot
- gitflow
- restful
- 모던 자바스크립트
- springboot크롤링
- llm연동
- springframework
- spring
- Github action
- CRUD
- 회원관리
- Today
- Total
JUNEee
[Spring Boot] MCP(Model Context Protocol) 기본 개념 및 테스트(1) 본문

MCP 란 무엇인가?!
MCP는 여러 LLM 모델이 외부 세계와 통신하기 위해 엔트로픽 에서 정의한 표준 프로토콜 이라고 할 수 있다.
여러 mcp를 소개하는 글에서는 mcp를 USB-C 포트로 비유하는 경우가 많은데, 이는 mcp 공식문서에서도 확인할 수 있는 내용이다.
Think of MCP like a USB-C port for AI applications. Just as USB-C provides a standardized way to connect your devices to various peripherals and accessories, MCP provides a standardized way to connect AI models to different data sources and tools.
"MCP를 AI 애플리케이션의 USB-C 포트라고 생각하세요. USB-C가 다양한 주변 기기 및 액세서리에 장치를 연결하는 표준화된 방식을 제공하는 것처럼 MCP는 AI 모델을 다양한 데이터 소스 및 도구에 연결하는 표준화된 방식을 제공합니다."
그래서 MCP로 뭘 할 수 있는데?
필자가 mcp를 접하고 가장 먼저 떠오른 생각은 "LLM 모델의 종류와 관계없이 다양한 편의 기능을 구현할 수 있겠는데?" 라는 생각이였다. 이에 대해 매우 단순한 예를 하나 들자면 사용자가 분석을 원하는 파일을 업로드 하고 이를 분석해줄 LLM 모델을 바꿔가며 (GPT, claude 등) 이용할 수 있다.
(파일 업로드를 지원하지 않는 모델이라 하더라도..)
모델에 의존하지 않고 사용자에게 일관된 인터페이스를 제공할 수 있다는 의미이기도 하다.
한계점
MCP 의 한계점은?
앞서 MCP는 USB-C 포트와 유사하다고 하였다. USB-C 포트는 스마트폰 포함 대부분의 기기에 일관된 충전 규격을 제공함으로써 생태계의 호환성과 효율성을 높였듯이 mcp 또한 LLM모델의 종류와 상관없이 MCP서버가 사용자와 LLM사이를 중계하여 사용자에게 일관된 경험을 제공할 수 있도록 서비스 개발이 가능해진다
다만 이 방식에는 한계점이 존재하는데 (개인적으로 느끼는 한계점으로 그냥 참고만 하길..)- 모델의 독립성을 완전히 보장하지는 못한다.
- MCP 구조 부분에서 언급하겠지만, MCP는 크게 세 부분으로 나뉜다
"MCP 호스트", "MCP 클라이언트", "MCP 서버"
간단히만 알아보자면 사용자가 입력한 자연어는 먼저 MCP 호스트 내에서 LLM모델로 전달되게 된다 LLM모델은 이를 MCP 클라이언트가 이해할 수 있는 구조화된 데이터로 변환 후 MCP 클라이언트에게 전달하게 되는데 이때 문제가 발생한다.
만약 우리가 사용하려는 LLM 모델의 성능 이슈로 인해 사용자가 입력한 자연어를 적절하게 해석하지 못한다면 전반적인 MCP 흐름에 부정적인 영향을 주게 된다
- 데이터 주입 방식이 비효율 적이다.
- 앞서 언급했듯이 MCP 구조는 세 부분으로 나뉜다.
만약 사용자가 "내 깃허브 README 파일을 분석해줘"라고 요청한다면, MCP 서버는 README 파일을 읽고 데이터를 MCP 클라이언트에게 전달할 것이다.
MCP 클라이언트는 받은 데이터를 LLM 모델이 이해할 수 있는 형태로 변환한 후, 사용자의 요청과 함께 프롬프트 형식으로 데이터를 주입하게 된다. 이 과정에서 문제가 발생한다.
간단한 파일 내용을 분석하는 것은 프롬프트 주입 방식이 적합하지만, 대용량 파일을 분석할 경우 이러한 방식은 과도한 토큰을 소모하게 되고, 이는 곧 비용 증가로 직결된다.
MCP 구조
- MCP(Model Context Protocol) 는 크게 3가지 부분으로 나뉜다
- MCP 호스트
- MCP 클라이언트
- MCP 서버
MCP 호스트 : MCP 호스트는 Claude Desktop, 통합 개발 환경, 또는 기타 AI 도구와 같이 MCP를 통해 데이터에 접근하고자 하는 애플리케이션 프로그램을 의미한다
MCP 클라이언트 : MCP 클라이언트는 다양한 MCP 서버와 MCP 프로토콜을 통해 연결될 수 있으며 서버에서 데이터를 가져와 LLM 모델에게 제공한다
MCP 서버 : 표준화된 Model Context Protocol을 통해 특정 기능을 제공한다.(MCP 클라이언트가 요청한 데이터를 MCP 서버는 내부의 다양한 도구들(web api, sql 등)을 활용하여 데이터를 조회하고 이를 제공한다)
전체 구조를 보면 다음과 같다.
이어서 [Spring Boot] MCP(Model Context Protocol) 기본 개념 및 테스트(2) 편에서 스프링부트를 사용해 실제 MCP서버를 구현해보도록 하겠다
'BE > 스프링' 카테고리의 다른 글
| [Spring Boot] rest api 스프링부트 회원관리 기능 구현하기! (CRUD) (1) | 2025.05.29 |
|---|---|
| [Spring Boot] REST Api 란 무엇일까? (1) | 2025.05.22 |
| [Spring Boot] Github Actions 를 활용한 CI/CD 파이프라인 구축(개념) (0) | 2025.04.17 |
| [Spring Boot] selenium 을 사용한 네이버 플레이스 리뷰 크롤링(2) (0) | 2025.03.30 |
| [Spring Boot] selenium 을 사용한 네이버 플레이스 리뷰 크롤링(1) (4) | 2025.03.29 |