MCP 즉 Model Context Protocol은 특정 애플리케이션이 LLM에 Context를 제공하는 방법의 규약을 의미한다. 이를 통해 LLM은 외부 리소스에 쉽게 접근할 수 있어, 더 강력한 AI 어플리케이션 구축이 쉬워진다.
기존의 LLM은 한계가 있었다.
학습 기간의 문제
기본적으로 LLM은 학습을 통해 본인의 문맥을 파악하는데, 보통 LLM의 학습 기간은 매우 긴 시간이 필요하다. 때문에 새로 갱신되는 최신 지식에 관련해서는 Knowledge Cutoff가 발생하기 마련이다.
특정 도메인의 지식 부족
LLM은 학습이 되어있다면 해당 분야에 대한 지식에 관련해서 답변은 잘 하지만, 학습이 되어있지 않다면 Hallucination이 발생할 확률이 높다. 즉, 보편적인 도메인이 아니라면 LLM을 활용하기 어렵다는 뜻이다.
외부 리소스 접근 방식의 다양성
위의 2 문제로 인하여 LLM에는 추가 정보를 적용하기 위한 방법이 있다. 검색 기반 생성인 RAG 방식, 로컬 지식 기반, 인터넷에 검색을 하게 하는 등의 여러 방법이 있다. 하지만 도메인 별로 겪고 있는 문제는 다양하고 해당 문제를 통일화 시키기에는 너무 많은 노력이 필요하다.
위와 같이 MCP는 외부 도메인의 지식을 LLM으로 가져오는 데 발생하는 비용의 최소화를 도와줄 수 있다.
하지만 아직 MCP는 HTTP나 TCP/IP처럼 전 세계적으로 통용되는 단일 표준 형식이 확립된 상태는 아니다. 현재 MCP는 개념적인 프레임워크에 가깝고, 실제 구현은 사용하는 LLM, 플랫폼, 라이브러리 등에 따라 다르다.
하지만 공통적으로 나타나는 구조와 필수 요소가 존재한다. 통상적으로 JSON 형식을 많이 사용한다. 그 이유로 가독성, 구조화, 호환성이 있다.
content : 실제 컨텍스트 내용이다. 문서의 일부, 검색 결과, 데이터베이스 레코드 등을 여기에 담는다.metadata : 컨텍스트 내용에 대한 부가 정보이다. 이 메타데이터가 LLM이 컨텍스트를 더 잘 이해하고 활용하는 데 도움을 준다.source : 정보의 출처type : 컨텍스트의 유형id : 각 컨텍스트 조각의 고유 식별자relevance_score : 검색 시스템 등이 판단한 해당 컨텍스트 조각과 사용자 질문 간의 관련성 점수timestamp : 정보가 생성되거나 검색된 시간page_number, chunk_index : 원본 문서 내 위치 정보[
{
"id": "doc_xyz_chunk_003",
"source": "file://internal_docs/product_manual_v3.pdf",
"type": "document_chunk",
"page_number": 5,
"relevance_score": 0.92,
"content": "모델 B의 주요 기능은 향상된 배터리 효율성과 자동 업데이트입니다. 특히..."
},
{
"id": "search_result_8a4f",
"source": "https://news.example.com/article/12345",
"type": "search_result",
"timestamp": "2025-04-13T14:20:00Z",
"relevance_score": 0.85,
"content": "최근 발표된 보고서에 따르면, 모델 B는 경쟁 제품 대비 15% 더 긴 배터리 수명을 제공합니다."
},
{
"id": "user_pref_001",
"source": "user_database/profiles",
"type": "user_preference",
"content": "사용자는 기술 사양과 배터리 수명에 특히 관심이 많음."
}
]
MCP를 사용하는 이유는 LLM의 성능과 신뢰도를 향상시키기 위함이다.