ByteByteGo의 EP165: AI Agent versus MCP에 MCP가 소개되어 아티클 읽어보다가 좀더 알아보고 싶어서 찾은 내용을 정리하였습니다.
MCP
- AI가 DB, 파일시스템 등 외부 데이터 소스 또는 도구에 대한 연결을 정의한 개방형 프로토콜
- 엔트로픽에서 만듦
- 현실 세계의 데이터와 도구의 접근을 통해 관련성 높고 유용한 응답의 생성을 돕고 고립 상태의 데이터에서 벗어나게 한다.
특징
- AI 모델이 외부의 지식이나 데이터의 획득을 돕는다.
- 표준 프로토콜을 통해 API, 데이터베이스, 파일 등에 안전하게 접근 및 사용할 수 있도록 해준다.
주요 구성 요소
Host
- AI 모델을 운용하는 주체 애플리케이션
- 사용자로부터 요청을 받아 모델에게 전달하고, 모델로부터 요청에 대한 응답을 받아 사용자에게 전달한다.
Client
- 호스트 애플리케이션 내부에서 동작하며 하나의 MCP 서버와 1:1 연결을 담당하는 컴포넌트
- MCP 클라이언트는 AI 모델 측에서 MCP 프로토콜을 구현하여 서버로 요청을 보내고 응답을 받아 모델에 전달하는 역할을 한다.
Server
- 외부 데이터나 기능을 제공하는 곳.
- MPC의 표준화된 형태를 이용하여 모델이 이해할 수 있는 형태로 맥락을 전달한다.
MCP 서버가 제공하는 context
Resource
- 모델이 참고할 읽기 전용 데이터
- 파일의 내용, 데이터베이스의 레코드, 문서 등의 구조화된 정보를 포함하며, 모델의 지식 기반을 확장
- API 주소 지정하는 기능
- 모델이 호출할 수 있는 기능 또는 함수
- 소스코드 내에서 함수를 프레임워크에 함수를 등록하는 것과 비슷
Prompts
프로토콜
- JSON-RPC 2.0 기반의 표준 메시지 형식을 사용
- 표준 입출력
- HTTPS 사용
동작 방식과 흐름
- 초기화
- 클라이언트가 서버에 연결을 위해 초기화 메시지를 서버에 보냄으로서 시작한다.
- 메시지에는 MCP 프로토콜 버전등의 클라이언트 정보가 담겨있다.
- 서버는 클라이언트가 보낸 메시지에서 서버가 지원하는 기능과 버전을 확인하여 호환성 교섭을 진행한다.
- 이 과정을 완료하면 세션이 생성된다.
- 기능 협상 및 발견
- 클라이언트는 서버가 어떤 맥락 기능을 제공하는지 확인한다.
- 이렇게 획득한 맥락 기능들을 AI 모델에게 알려주거나 사용자 인터페이스에 표시하여 사용자가 선택할 수 있도록 한다.
- 모델의 요청 처리
- 사용자가 AI 호스트 애플리케이션에게 질문을 하면 호스트는 AI 모델에게 질문한다.
- 외부 도구의 필요성을 모델은 판단 한 후 도구를 어떻게 사용할지 확인을 하고, 필요시 사용할 수 있는 요청의 형태를 도출한다.
- 도구 호출 요청
- 모델이 MCP 도구를 사용하고자 할 때, 호스트의 MCP 클라이언트가 개입하여 해당 도구 호출을 실제로 수행한다.
- 요청에 대한 데이터는 모델이게만 보이며, 사용자에게 직접적으로 노출되지 않는다.
- 모델 응답 생성
- AI 모델이 만든 데이터와 MPC 서버에서 전달받은 데이터를 바탕으로 맥락 정보를 답변에 반영
- 사용자에게 응답 전달
MCP를 통해 모델이 외부 도구를 사용할 때 항상 사용자의 승인이나 사전에 정의된 정책에 따라 이뤄진다.
-> 보안과 통제의 상태에서도 모델의 자율성을 부여할 수 있다.
참고