Search

MCP(Model Context Protocol)

대분류
인공지능/데이터
소분류
LLM 정리 노트
LangChain/RAG
유형
LLM
MCP
부유형
기초
주요 레퍼런스
https://modelcontextprotocol.io/introduction
https://wikidocs.net/268792
https://blog.logto.io/ko/what-is-mcp
https://www.youtube.com/watch?v=ISrYHGg2C2c
https://arxiv.org/pdf/2501.00539
최종 편집 일시
2025/03/31 05:03
생성 일시
2025/03/30 14:06
13 more properties

MCP란?

Model Context Protocol
LLM에 컨텍스트를 제공하는 방법을 표준화하는 개방형 프로토콜
LLM(Large Language Model) 애플리케이션과 외부 데이터 소스 및 도구들 간의 원활한 통합을 가능하게 하는 개방형 프로토콜

목적

1.
데이터 및 도구 통합 표준화
LLM이 다양한 데이터 소스(예: 파일 시스템, 데이터베이스, API 등) 및 도구(예: 개발 환경, 협업 툴 등)와 연결될 때 각각의 커스텀 통합 방식 대신 단일 표준 인터페이스를 제공하여 개발 복잡성을 대폭 줄인다.
LLM이 직접 연결할 수 있는 사전 구축된 통합의 증가하는 목록
LLM 공급자와 벤더 간 전환의 유연성
인프라 내에서 데이터를 보호하기 위한 모범 사례
사전 구축 통합
MCP는 파일 시스템, 데이터베이스(PostgreSQL, SQLite), 개발 도구(Git, GitHub, GitLab), 네트워크 도구(Brave Search, Fetch), 생산성 도구(Slack, Google Maps) 등을 포함한 다수의 사전 제작된 서버 통합을 제공한다.
2.
실시간 컨텍스트 제공 및 LLM 전환 지원
MCP가 LLM의 한계를 보완하기 위해 최신 컨텍스트 정보를 실시간으로 제공하고, 특정 LLM에 종속되지 않고 유연하게 전환할 수 있도록 지원한다.
MCP를 사용하면 전체 애플리케이션의 통합 로직을 다시 작성할 필요가 없다. 단지 하위 모델을 변경하면, 모든 데이터 및 도구 통합은 그대로 유지된다.
3.
도구와 기능 노출
AI 시스템에 로컬 또는 원격 도구들을 안전하게 노출
표준화된 방식으로 기능을 정의하고 호출
도구의 능력을 명확하게 기술하고 제어
4.
통합 워크플로우 구축
여러 데이터 소스와 도구를 조합한 워크플로우 생성
재사용 가능한 프롬프트 템플릿 제공
모듈식 구성을 통한 유연한 확장

주요 특징

1.
JSON-RPC 기반 양방향 통신
표준 JSON-RPC 2.0 메시지 포맷 사용
상태 기반 연결 및 유틸리티(진행 추적, 오류 처리 등)를 지원
서버와 클라이언트 간 능력 협상
MCP가 LLM과 외부 시스템 간의 지속적인 양방향 연결을 유지한다
2.
보안 중심 설계
MCP 구현 시 사용자 동의, 데이터 프라이버시, 접근 제어 등을 최우선으로 고려
데이터 프라이버시 보호
도구 사용에 대한 명시적 승인 필요
3.
유연한 확장성
미리 구축된 다양한 커넥터와 SDK를 통해 손쉽게 확장 가능
다양한 리소스 타입 지원
커스텀 도구 및 프롬프트 정의 가능
표준화된 방식의 기능 확장

아키텍처

MCP: 호스트 애플리케이션, 클라이언트, 서버 간의 표준화된 통신을 위한 프로토콜
JSON-RPC를 기반으로 하며, 안전하고 효율적인 데이터 및 기능 교환을 가능하게 함
기본적으로 호스트 애플리케이션이 여러 서버에 연결할 수 있는 클라이언트-서버 아키텍처를 따른다.
MCP 호스트
: MCP를 통해 데이터에 액세스하려는 Claude Desktop, IDE 또는 AI 도구와 같은 프로그램
MCP 클라이언트
: 서버와 1:1 연결을 유지하는 프로토콜 클라이언트
MCP 서버
: 표준화된 모델 컨텍스트 프로토콜을 통해 각각 특정 기능을 노출하는 경량 프로그램
로컬 데이터 소스
: MCP 서버가 안전하게 액세스할 수 있는 컴퓨터의 파일, 데이터베이스 및 서비스
원격 서비스
: MCP 서버가 연결할 수 있는 인터넷(예: API를 통한)을 통해 사용 가능한 외부 시스템

MCP 호스트 (Host)

Claude Desktop, IDE(Cursor 등), 또는 MCP를 통해 데이터를 액세스하고자 하는 AI 도구와 같은 프로그램
Logto
기능
interface HostResponsibilities { // 사용자 인터페이스 관리 userInterface: { displayResults: () => void; collectUserInput: () => Promise<UserInput>; showProgress: () => void; }; // 클라이언트 관리 clientManagement: { initializeClients: () => void; manageConnections: () => void; handleErrors: () => void; }; // 보안 관리 security: { authenticateUser: () => Promise<boolean>; authorizeOperations: () => Promise<boolean>; managePermissions: () => void; }; }
TypeScript
복사
주요 역할
사용자 인터페이스 제공
LLM과의 통합
여러 MCP 클라이언트 관리
보안 정책 실행

MCP 클라이언트 (Client)

LLM과 MCP 서버를 연결하는 브리지
Logto
기능
interface ClientCapabilities { // 기본 기능 roots?: { listChanged?: boolean; }; // 샘플링 지원 sampling?: object; // 실험적 기능 experimental?: { [key: string]: object; }; }
TypeScript
복사
주요 역할
서버와의 통신 관리
메시지 변환 및 처리
연결 상태 관리
에러 핸들링
구현 시 고려사항
1.
연결 관리
연결 수립 및 유지
재연결 로직
타임아웃 처리
2.
메시지 처리
직렬화/역직렬화
메시지 큐잉
응답 매칭
3.
오류 처리
네트워크 오류
프로토콜 오류
비즈니스 로직 오류

MCP 서버 (Server)

LLM이 사용할 수 있는 도구와 데이터 액세스 기능을 제공하는 프로그램
Logto
기능
interface ServerCapabilities { // 로깅 지원 logging?: object; // 프롬프트 지원 prompts?: { listChanged?: boolean; }; // 리소스 지원 resources?: { subscribe?: boolean; listChanged?: boolean; }; // 도구 지원 tools?: { listChanged?: boolean; }; }
TypeScript
복사
주요 역할
리소스 제공
도구 실행
프롬프트 처리
보안 구현
서버 구현 유형
1.
파일 시스템 서버
interfaceFileSystemServer { readFile: (path: string) =>Promise<string>; writeFile: (path: string, content: string) =>Promise<void>; listDirectory: (path: string) =>Promise<string[]>; }
TypeScript
복사
2.
데이터베이스 서버
interfaceDatabaseServer { query: (sql: string) =>Promise<any>; connect: () =>Promise<void>; disconnect: () =>Promise<void>; }
TypeScript
복사
3.
도구 서버
interfaceToolServer { listTools: () =>Promise<Tool[]>; executeTool: (name: string, args: any) =>Promise<any>; }
TypeScript
복사

MCP Workflow

MCP를 기반으로 구축된 AI 애플리케이션

핵심 MCP 개념

도구(Tools)

: LLM에서 호출할 수 있는 기능(사용자 승인 필요)