일타 저스틴의 MCP 강의 1. MCP란?

여러분, 지난 몇 년간 우리를 열광시켰던 건 뭐였죠? 바로 “챗봇”과 “거대 언어 모델(LLM)”이었습니다. 기가 막힌 프롬프트를 짜고, LLM이 마법처럼 결과물을 뿜어내는 걸 보면서 우리는 감탄했죠.

“2025년? 바로 AI 에이전트의 해입니다!”  이건 단순한 유행이 아니라, AI 기술의 거대한 패러다임 전환을 의미합니다. 챗봇과 LLM 다음에 무엇이 올까 궁금했다면, 바로 이 ‘AI 에이전트’가 그 답이라는 거죠.

그럼 AI 에이전트가 도대체 뭔데 이렇게 난리냐구요?

간단하게 설명해 드릴게요. “단 하나의 똑똑한 비서에게 질문하는 대신, 생각하고, 계획하고, 함께 일해서 실제 문제를 해결할 수 있는 ‘도우미 봇들의 팀’을 만드는 것.” 어떠세요? 감이 오시나요? 단순히 질문에 답하는 수준을 넘어, 특정 작업을 자동화하고, 주제를 연구하고, 이력서를 검토하고, 콘텐츠를 번역하고, 심지어 코드를 작성하는 등 AI 에이전트가 조용히 ‘진짜 일꾼’이 되고 있다는 겁니다. 핵심은 이거예요. “AI가 이제 토큰만 뱉는 게 아니라, 진짜로 무언가를 ‘실행(execute)’할 수 있게 되었다!” 이게 바로 게임 체인저입니다.

Anthropic이 작년에 도입한 ‘Model Context Protocol (MCP)’의 등장으로 에이전트에 대한 우리의 사고방식이 완전히 바뀌었습니다. 더 이상 프롬프트와 도구를 연결하는 단순한 수준이 아니라는 겁니다. MCP는 ‘구조’, ‘메모리’, ‘통신’, 그리고 ‘진정한 협업’을 가능하게 합니다.

“AI 에이전트는 단순한 유행이 아니라, 소프트웨어 작동 방식의 미래입니다!”


Model Context Protocol (MCP) 은 AI 앱과 외부 도구 및 데이터 소스 간의 통합을 표준화하기 위해 설계된 ‘오픈 프로토콜’입니다. 쉽게 말해, AI 모델이 세상의 모든 정보를 다 가지고 있을 수 없으니, 필요할 때 외부에서 필요한 정보를 불러와서 쓸 수 있도록 약속된 통신 규약이라고 생각하시면 됩니다.

MyAISmateasy는 C#으로 구현 되었으니, MCP C# SDK를 사용합니다.


 MCP 아키텍처 완전 해부! 클라이언트-서버 구조의 비밀

그럼 MCP가 어떻게 작동하는지 좀 더 깊이 들어가 볼까요? MCP는 클라이언트-서버 아키텍처를 사용합니다. 이건 마치 우리가 식당에 가서 주문하고 음식을 받는 것과 비슷합니다. AI 앱이 “손님”(호스트)이고, 외부 데이터나 도구가 “주방”(서버) 역할을 하는 것이죠. 그리고 이 둘을 연결해주는 “웨이터”(클라이언트)가 있습니다.

  1. MCP Hosts (호스트): AI 모델의 능력을 확장하기 위해 MCP를 통해 컨텍스트 자원을 사용하는 AI 도구, 코드 에디터 또는 기타 소프트웨어입니다. 예를 들어, Visual Studio Code의 GitHub Copilot이 MCP 호스트 역할을 하여 그 기능을 확장할 수 있습니다.
  2. MCP Clients (클라이언트): 호스트 애플리케이션이 MCP 서버에 연결하여 컨텍스트 데이터를 검색하는 데 사용되는 클라이언트입니다. 앞서 말한 “웨이터”입니다!
  3. MCP Servers (서버): MCP를 통해 클라이언트에게 기능을 노출하는 서비스입니다. 예를 들어, MCP 서버는 REST API나 로컬 데이터 소스 위에 추상화를 제공하여 AI 모델에 비즈니스 데이터를 제공할 수 있습니다. “주방” 역할을 하는 곳이죠.

MCP 클라이언트와 서버 간의 표준 메시지!

클라이언트와 서버는 서로 데이터를 주고받아야겠죠? 이때 사용하는 것이 바로 ‘표준 메시지’입니다. 마치 우리가 식당에서 “메뉴 주세요”, “이거 주문할게요” 하는 것처럼요. 마이크로소프트는 다음과 같은 메시지 유형을 소개하고 있습니다.

  • InitializeRequest: 클라이언트가 서버에 처음 연결할 때 초기화를 시작하도록 요청하는 메시지입니다. (식당에 가서 “저 왔어요!” 하는 느낌)
  • ListToolsRequest: 서버가 가진 도구 목록을 요청하는 메시지입니다. (“어떤 요리가 가능해요?” 메뉴판 요청!)
  • CallToolRequest: 서버가 제공하는 도구를 호출하는 데 사용됩니다. (“이 요리 주문할게요!”)
  • ListResourcesRequest: 사용 가능한 서버 리소스 목록을 요청하는 메시지입니다. (“지금 재료 뭐가 있어요?”)
  • ReadResourceRequest: 특정 리소스 URI를 읽기 위해 서버에 전송됩니다. (“그 재료 어디서 가져왔어요?”)
  • ListPromptsRequest: 서버에서 사용 가능한 프롬프트 및 프롬프트 템플릿 목록을 요청합니다. (“추천 메뉴 있어요?”)
  • GetPromptRequest: 서버가 제공하는 프롬프트를 가져오는 데 사용됩니다. (“그 추천 메뉴 알려주세요!”)
  • PingRequest: 서버 또는 클라이언트가 상대방이 아직 살아있는지 확인하기 위해 발행하는 핑입니다. (“아직 연결되어 있나요?”)
  • CreateMessageRequest: 클라이언트를 통해 LLM을 샘플링하도록 서버가 요청하는 것입니다. 클라이언트는 어떤 모델을 선택할지 전적인 재량권을 가집니다. 또한 클라이언트는 샘플링을 시작하기 전에 사용자에게 알림을 제공하여 요청을 검사하고 승인 여부를 결정할 수 있도록 해야 합니다. (이건 좀 특별한 요청입니다. 서버가 “야, 클라이언트야. 네가 가진 AI 모델한테 이거 좀 물어봐줘!” 라고 하는 거죠.)
  • SetLevelRequest: 클라이언트가 서버에게 로깅을 활성화하거나 조정하도록 요청하는 것입니다. (“로그 좀 더 자세히 남겨줘요.”)

.NET 개발자를 위한 MCP C# SDK 활용법!

마이크로소프트는 MCP C# SDK를 통해 여러분의 앱을 커스텀 통합으로 강화할 수 있다고 말합니다. 복잡하게 각 통합 지점마다 고유한 커넥터를 구축하는 대신, 이 SDK를 사용하면 AI 모델을 다양한 도구, 서비스, 데이터 소스에 연결하는 복잡성을 줄일 수 있습니다.

공식 MCP C# SDK는 NuGet을 통해 이용 가능하며, .NET 앱과 라이브러리용 MCP 클라이언트 및 서버를 구축할 수 있게 해줍니다. 이 SDK는 마이크로소프트, Anthropic, 그리고 MCP 오픈 프로토콜 조직 간의 협력을 통해 유지 관리된다고 하니, 신뢰할 수 있겠죠?

시작하려면 프로젝트에 다음 명령어로 SDK를 추가할 수 있습니다:

또한, 이 SDK는 Microsoft.Extensions.AI 라이브러리에 의존합니다. 이 확장 라이브러리들은 AI 서비스와 상호작용하기 위한 핵심 타입과 추상화를 제공하여, 개발자들이 특정 플랫폼이나 공급업체 구현에 얽매이지 않고 개념적인 AI 기능 코딩에 집중할 수 있도록 돕는다고 합니다.

더 많은 .NET MCP 개발 리소스!

마이크로소프트는 .NET 및 Azure 생태계에서 MCP 클라이언트 및 서버를 구축하거나 기존 MCP 서버와 통합하는 데 도움이 되는 다양한 도구, 서비스 및 학습 리소스가 있다고 설명합니다.

주요 개발 도구로는 다음이 있습니다.

  • Semantic Kernel: MCP 서버용 플러그인을 추가할 수 있습니다. 로컬 MCP 서버와 원격 서버를 모두 지원합니다.
  • Azure Functions remote MCP servers: MCP 표준과 Azure Functions의 유연한 아키텍처를 결합합니다.
  • Azure MCP Server: Azure Storage, Cosmos DB 등 주요 Azure 서비스와 AI 에이전트를 원활하게 연결하기 위해 MCP 사양을 구현합니다.

관련 학습 자료들도 풍부하게 제공하고 있으니, 관심 있는 분들은 마이크로소프트 Learn 페이지에서 직접 확인해보시는 것을 추천합니다.

About the Author
(주)뉴테크프라임 대표 김현남입니다. 저에 대해 좀 더 알기를 원하시는 분은 아래 링크를 참조하세요. http://www.umlcert.com/kimhn/

Leave a Reply

*