MCP 심층 분석, 제1부: MCP가 대체 뭔가요?

AI 분야를 주시하고 계시다면, 모델 컨텍스트 프로토콜(MCP)에 대해 들어보셨을 것입니다. Anthropic이 2024년 11월 이 새로운 표준을 발표한 이후, 그 인기는 폭발적으로 증가했다. 이메일 전송 MCP, 웹 검색 MCP, 다른 MCP 실행 MCP가 있습니다. MCP들이 겸손한 대규모 언어 모델(LLM)들에게 풀 리퀘스트와 비행기 예약을 맡기고 있다. 5월에는 마이크로소프트가 Windows용 MCP 레지스트리를 발표했는데, 앱이 AI 에이전트에 기능을 노출할 수 있도록 하는

감사합니다! 그런데 어떻게? MCP란 무엇인가요? 어떻게 사용하나요? 왜 이전의 노력들보다 훨씬 더 인기를 얻게 되었는가? 어떻게 챗봇이 현실 세계에서 일을 할 수 있게 하는가? 그리고 어떻게 자신만의 것을 만들 수 있을까요?

DeepL API용 자체 MCP 서버 구축을 결정했을 때 DeepL API용 자체 MCP 서버를 구축하기로 했을 때, 그것은 위협적으로 보였습니다. 하지만 MCP가 어떻게 작동하는지, 에이전트가 도구를 발견하고 사용하는 방식을 MCP가 어떻게 지원하는지, 그리고 단 10줄의 코드로 기본적인 MCP 서버를 구축할 수 있다는 점을 진정으로 이해하게 되면, 그리 무섭지 않습니다. 이 연재 글에서 우리는 이 주제를 쉽게 이해할 수 있도록 설명하고자 합니다. 우리는 다음을 탐구할 것입니다:

  • MCP란 무엇인가
  • AI 고객님에서 MCP를 사용하는 방법
  • MCP 서버 구축 방법

가자!

MCP는 무엇을 의미합니까?

MCP는 모델컨텍스트프로토콜(Model Context Protocol)을 의미합니다.

"모델"은 AI 모델입니다. 이는 어떤 종류의 AI 인터페이스라도 될 수 있지만, 일반적으로 대규모 언어 모델(LLM)을 기반으로 구축됩니다. 여기서는 이를 AI 에이전트 또는 AI 어시스턴트라고 부를 것입니다.

"컨텍스트"는 AI 에이전트가 작동하는 환경을 의미합니다. AI 분야에서 우리는 종종 "컨텍스트 윈도우"에 대해 이야기합니다. 이는 대규모 언어 모델(LLM)이 프롬프트에 대한 응답을 생성할 때 통합하는 모든 컨텍스트를 의미합니다. 여기에는 대화 기록, 시스템 프롬프트 등이 포함됩니다. MCP가 작동하려면 AI 표면이 기본 LLM에 사용할 수 있는 도구와 사용 방법을 명시하는 추가 프롬프트를 제공합니다.

"프로토콜"은 두 개체가 네트워크를 통해 통신하는 방식을 규정하는 규칙 집합이다. 매일 사용하는 프로토콜 중 하나는 HTTP(HyperText Transfer Protocol)로, 웹 서버와 웹 클라이언트의 통신 방식을 규정합니다.

이것을 종합하면: "모델 컨텍스트 프로토콜 " 은 AI 모델이 외부 도구와 리소스를 활용할 수 있도록 하는 컨텍스트를제공하는 프로토콜입니다.

MCP는 두 명의 Anthropic 엔지니어가. JSON-RPC를 사용합니다 JSON-RPC를 사용합니다. 그리고 그것은 Language Server Protocol에서 영감을 받았습니다. 이는 마이크로소프트가 IDE에서 코딩 언어 처리의 논리를 분리하기 위해 만든 것입니다.

MCP는 소프트웨어, 앱 또는 API가 아닙니다. 하지만 이 모든 것에 AI 에이전트가 접근할 수 있게 해줍니다!

MCP는 무엇을 하나요?

LLM은 사용자 입력에 대해 지능적이고 유용한 응답을 제공할 수 있습니다. 그러나 그들은 외부 서비스에 접근할 수 없고, 다른 소프트웨어와 통신할 방법이 없으며, 최신 정보를 가져올 수단이 없습니다. MCP는 모든 AI 인터페이스가 어떤 소프트웨어 서비스에도 요청을 보내고 응답을 받을 수 있는 기능을 제공합니다. 이는 AI 에이전트가 외부 도구, 자원 및 데이터에 접근할 수 있는 표준적인 방법을 제공합니다.

MCP 없이는 AI 고객님은 단지 몸이 없는 뇌에 불과하며, 외부 세계에 접근할 방법이 없습니다. MCP를 통해 AI 고객님도 에이전트가 될 수 있습니다!

누가 MCP를 사용할 수 있나요?

MCP는 개방형 표준이므로 누구나 MCP 고객님이나 MCP 서버를 구현할 수 있습니다.

고객님은 LLM을 기반으로 한 어떤 앱이든 될 수 있습니다. MCP를 다음과 같은 앱에서 사용할 수 있습니다. Claude Desktop, VSCode, Windsurf커서. 또는 LangChain과 같은 프레임워크로 구축한 AI 에이전트와 함께 MCP를 사용할 수도 있습니다. LangChain 또는 CrewAI와 함께 구축한 AI 에이전트와 함께 MCP를 사용할 수도 있습니다.

MCP가 왜 이렇게 인기가 많아졌을까?

한 가지 이유는 그것이 개방형 표준이기 때문이다. 모든 AI 에이전트는 MCP를 구현할 수 있으며, 모든 도구도 마찬가지입니다. 이는 특정 기업의 제품용 솔루션(예: OpenAI의)보다 더 폭넓은 매력을 제공합니다. 함수 호출.

이 범용 솔루션을 개발하는 과정에서 MCP의 창시자들은 언어 서버 프로토콜(LSP)에서 영감을 얻었습니다. LSP 이전에는, 특정 언어에 대한 자동 완성이나 구문 강조와 같은 기능을 구현하려는 IDE가 자체적인 통합을 구축해야 했습니다. 그 결과는 제작진이 최근에 언급한 바와 같이 m × n 문제으로, 개발자들은 가능한 모든 IDE/언어 조합마다 언어 서비스를 별도로 구현해야 했습니다. LSP를 사용하면 각 언어(코딩 언어)는 하나의 통합 라이브러리만 필요로 합니다. LSP를 지원하는 IDE는 그러한 모든 언어를 지원할 수 있습니다. 마찬가지로, 서비스가 MCP 서버를 구현하면 MCP를 지원하는 모든 AI 클라이언트가 이를 사용할 수 있습니다. 고객님은 MCP만 지원하면 됩니다.

MCP는 다른 방식으로도 유연합니다. 로컬에서 또는 네트워크를 통해 실행할 수 있습니다. 그리고 이는 Anthropic에서 나온 것으로, 이 회사는 높은 평가를 받고 있으며 개방형 표준의 혜택을 공유할 것입니다.

AI 에이전트에게 표준 프로토콜이 필요한 이유는 무엇인가요?

LLM이 정보를 이해하고 적용하는 데 매우 뛰어나다면, 훈련 데이터에 포함된 설명을 가진 소프트웨어 서비스는 이미 사용할 수 있지 않을까요? 결국 대규모 언어 모델(LLM)은 이미 많은 인기 API를 사용하는 방법을 이해하고 있습니다. 코파일럿이나 소스그래프 같은 코딩 어시스턴트에게 도움을 요청해 보면 알 수 있듯이 말이죠.

하지만 LLM에게 훈련 데이터 내 모든 API에 대한 접근 권한을 부여한다면 혼란이 초래될 것이다. 어떻게 어떤 API를 호출해야 하는지, 그리고 언제 호출해야 하는지 알 수 있을까요? 어떻게 API 키와 인증 정보를 획득할 수 있으며, 다른 유형의 접근 권한이 필요한 서비스를 어떻게 사용할 수 있나요? 캔자스시티에서 디모인까지의 운전 거리를 알고 싶다면? 아니면 방콕의 현재 기온을 알고 싶다면? 이 정보를 찾는 방법은 여러 가지가 있습니다. 사용자로서, 당신은 LLM이 선택하는 행동에 대한 통제권을 원합니다. 특히 정보를 검색하는 것이 아니라, 이메일이나 피자를 주문하는 것처럼 세상에 영향을 미치는 행동을 취할 때 더욱 그러하다.

사실, 에이전트는 저수준 OpenAPI 사양이나 API 기술문서 전체를 읽고 이해한 후 그에 따라 API 호출을 수행할 수 있습니다. 그러나 MCP는 도구 제작자가 AI 에이전트에게 특히 유용한 상위 수준 서비스를 정의할 수 있게 하여, 해당 에이전트를 유용한 방향으로 이끌 수 있도록 합니다. 지금까지 이 분야는 인간이 여전히 뛰어난 영역이다.

따라서 현재로서는 LLM이 사용할 수 있는 도구와 자원을 명시적으로 정의하고, 이를 활용하는 방법을 규정하는 것이 최선의 방법임이 밝혀졌다. MCP는 구식 방식, 즉 결정론적으로 이를 수행합니다. 대규모 언어 모델(LLM)의 마법을 이용하는 것이 아니라 코드와 JSON을 통해 이루어집니다.

하지만 LLM이 도구를 어떻게 사용할 수 있나요?

근본적으로 LLM은 토큰을 생성하는 기계입니다. 인간이 텍스트, 이미지, 오디오 등으로 접하는 바로 그 토큰들입니다. 그렇다면 그런 기계가 어떻게 도구와 자원에 접근할 수 있을까? 어떻게 그런 접근 권한이 있는지 알 수 있으며, 어떤 것을 사용해야 하는지 어떻게 알 수 있나요?

핵심은, 실제로 막시밀리안 슈바르츠뮐러가 지적하듯LLM은 토큰을 통해서만 외부 세계와 소통할 수 있다는 점입니다. 그들은 토큰을 입력으로 받아 토큰을 출력으로 생성합니다. 그리고 그 토큰에는 "도구를 사용하고 싶다"는 의미를 지닌 개체들이 포함될 수 있습니다. 따라서, 특정 도구나 리소스를 사용하고자 할 때, 그리고 실제로 사용하기 위해, 대규모 언어 모델(LLM)은 주변 소프트웨어가 도구 호출로 인식하고 가로챌 수 있는 표준 토큰을 생성합니다. 해당 소프트웨어는 서비스를 호출한 후 출력을 LLM에 반환합니다.

LLM은 여기서 특수 토큰을 사용할 수 있습니다. 하지만 일반적으로 특정 구분자와 언어를 사용합니다. 이렇게 하면 기존 대규모 언어 모델(LLM)을 미세 조정하여 이 기능을 추가할 수 있습니다. 예를 들어, JSON을 둘러싸는 대괄호 안의 시작 및 종료 태그를 사용할 수 있습니다. 다음 샘플 에이전트 출력처럼:

네! 새 스프레드시트를 만들어 드릴 수 있습니다. 잠깐만…

[tool-start] { "tool": "spreadsheets", "action": "create" } [tool-end]

연구자들은 바로 이 작업을 수행했습니다. 2023년 툴포머(Toolformer) 논문에서에서 보여준 바와 같습니다. 제목이 말해주듯, "언어 모델은 스스로 도구를 사용하는 법을 배울 수 있다"는 것을 입증했습니다. 본 연구에서 저자들은 API 호출과 그 결과의 평문 표현을 포함한 훈련 데이터를 생성하였다. 이 추가 데이터로 LLM을 미세 조정하여, 프롬프트에 대한 유망한 응답을 생성하기 위해 해당 API를 호출하는 LLM을 제작했습니다.

그들은 일반적인 형식을 사용했습니다:

[function_name(data) → result]

예를 들어, 대규모 언어 모델(LLM)이 수학에 취약하다는 점을 인지하고 계산기 도구를 제공했습니다. 그런 다음 훈련 데이터에 다음과 같은 문자열을 포함시켰습니다:

1,400명의 참가자 중 400명(또는 [계산기(400 / 1400) → 0.29] 29%) 시험에 합격했습니다.

그리고

이 이름은 스페인어로 '거북이'를 뜻하는 'la tortuga'에서 유래되었습니다. [MT(“tortuga”) → 거북이] 거북이를 뜻하는 스페인어 "la tortuga"에서 유래되었습니다.

이러한 데이터로 LLM을 미세 조정함으로써, 그들은 주어진 프롬프트에 대해 가장 유망한 응답을 생성하기 위해 API 호출하는 방법을 아는 LLM을 만들었다.

하지만 도구를 사용하도록 LLM을 미세 조정할 필요는 없습니다. 결국 필요한 건 프롬프트 하나뿐이었다. 이 글은 LLM이 [[qwen-tool-start]]와 [[qwen-tool-end]]로 구분된 JSON을 사용하여 도구를 활용하도록 가르치는 방법을 보여줍니다. 이는 단순히 적절한 프롬프트를 제공하는 것만으로 가능합니다. 직접 시도해 보세요! 좋아하는 챗봇을 방문해서 이렇게 말해 보세요:

축하합니다! 이제 곱셈을 수행하는 도구를 사용할 수 있습니다. 계산을 수행해야 할 때는 다음 구문을 출력하기만 하면 됩니다: 

[수학] { "arg1": {value}, "arg2": {value} } [/Math] 

여기서 물론 각 {값}은 곱하고 싶은 값을 나타냅니다. 확인? 

그런 다음 LLM에 수학 문제를 주고, 당신이 수학 도구에 제공한 구문을 충실히 출력하는 모습을 지켜보세요.

현대적인 대규모 언어 모델(LLM)도 여전히 도구를 거의 동일한 방식으로 사용한다. 예를 들어, Anthropic은 여기서 API에서 도구를 사용하도록 클로드(Claude)를 위한 시스템 프롬프트를 구성하는 방식을 설명합니다.

LLM은 도구의 출력을 어떻게 처리합니까?

LLM은 어떻게 도구 출력을 수신합니까? 다시 한번, 모든 것은 토큰에 관한 것이다. AI 고객이 도구로부터 출력을 수신하면, 이를 LLM에 입력으로 다시 공급하지만, LLM이 이를 최종 사용자 입력물이 아닌 도구 출력물임을 인지할 수 있도록 처리합니다.

모든 것을 종합해 보면

요약하자면, LLM이 도구를 사용할 때 발생하는 현상은 다음과 같습니다:

  • 사용자가 입력을 입력합니다.
  • LLM이 이 입력을 처리합니다
  • 출력을 생성하는 동안, LLM은 도구를 호출하는 것이 출력을 완성하는 최선의 방법이라고 '결정'합니다. 이는 훈련을 통해 도구를 호출할 수 있게 해줄 토큰 집합을 출력한다는 의미입니다.
  • AI 고객님은 해당 토큰을 도구를 호출해야 하는 것으로 인식하고, 이를 가로채어 JSON을 파싱하여 요청 내의 매개변수 및 기타 모든 정보를 추출한 후, 이를 적절한 도구로 전송합니다.
  • 해당 도구는 출력을 생성하며, 이 과정에서 API 사용이 포함될 수도 있고 포함되지 않을 수도 있습니다. 이것을 AIClient에 반환하면, AIClient은 이를 LLM으로 전송합니다.
  • LLM은 도구 출력을 처리합니다
  • LLM은 이 출력을 사용하여 사용자를 위한 응답을 계속 생성합니다.

그리고 이것이 MCP가 무엇이며 대규모 언어 모델(LLM)에 어떻게 구현되는지에 대한 간략한 소개입니다. 다음 글에서는 여러분만의 AI 고객님에서 MCP를 활용하는 방법을 보여드리겠습니다!


저자 소개

딥엘(DeepL)의 개발자 전도사(Developer Evangelist)인 벤 모스(Ben Morss)는 누구나 DeepL API를 활용해 세계 최고 수준의 AI 번역 서비스를 이용할 수 있도록 지원합니다. 구글 재직 당시 그는 Chrome 제품 관리자이자 더 나은 웹을 위한 개발자 옹호자였습니다. 그 이전에는 뉴욕 타임스와 AOL에서 소프트웨어 엔지니어로 근무했으며, 한때는 전업 음악가이기도 했다. 그는 하버드 대학교에서 컴퓨터 과학 학사 학위를, 캘리포니아 대학교 데이비스 캠퍼스에서 음악 박사 학위를 취득했다. 아직도 밴드와 함께 음악을 만들고 있는 그를 발견할 수도 있다 Ancient Babies와 함께 음악을 만들고, 록 이론에서 팝송을 분석하고, 스티브 잡스에 관한 건 아닌 뮤지컬을 쓰고 있을지도 모릅니다.

공유