개발을 하다보면 현업 혹은 네트워킹 자리에서 많은 사람들을 만나곤 합니다.
이렇게 만남을 가지게 되면 개발 관련한 이야기를 많이 하게 되는데, 최근 들어서는 MCP 관련 키워드가 굉장히 많이 나온다는 것을 느낄 수 있었습니다.
또한, 제목에서도 언급했듯이 인터넷에서도 MCP를 혁신적인 패러다임이라고 많이들 이야기 하고 있습니다.
이렇게 사방에서 MCP라는 키워드를 듣다보니 이에 대해 자연스럽게 의문점을 가지게 되었습니다.
썸네일에서도 볼 수 있듯이, 많은 매체에서 MCP를 USB 포트에 비유해서 많이들 설명하고 있습니다.
MCP 서버만 있으면 외부 서비스를 AI에 손쉽게 마구마구 연결할 수 있다는 것입니다.
근데, 여기서 들었던 의문점은, 마치 HTTP와 Json처럼 상호간의 주고받는 데이터의 형식이 정해져 있다는 말인가? 그렇다면 이것만으로, 진짜 USB 포트와 같이 외부 서비스를 손쉽게 연결할 수 있는 것인가? 라는 생각이 들었습니다.
이런 의문점을 해결하기 위해서 조금 더 딥하게 알아보았습니다.

MCP는 다음과 같이 구성됩니다.
Host With MCP Client가 MCP Protocol을 통해 MCP Server와 통신을 하면서 외부 서비스를 연결하는 역할을 해줍니다.
그렇다면 MCP Host, MCP Client, MCP Server 는 무엇인지 디테일하게 알아보고 이어서 MCP Protocol이 어떤 형식의 규약인지에 대해 다루어보겠습니다.
MCP를 활용해보기 위해서 Claude, Cursor를 사용해보신 분이 있으실 것입니다.
그렇다면 Host와 Client가 어떤 것을 의미하는 것인지 쉽게 이해할 수 있지만, 그렇지 않다면 아래의 영상을 보고 오시는 것을 추천드립니다.
What is MCP? (simplest explanation + how to use it) - YouTube
장담하건데 가장 쉬운 MCP영상이 될 겁니다 |클로드로 mcp 연결하는 법 - YouTube
MCP Host는 MCP Protocol을 통해 데이터를 외부 서비스로부터 액세스 하려고 하는 주체입니다.
그렇다면 Client는 무엇일까요?
Host의 Client는 정말 MCP Server와 1대 1 연결을 유지하는 프로토콜 클라이언트입니다.
정리하면, Host의 하위에 Client들이 존재하는 것입니다.
MCP Protocol에서 MCP Server란 핵심입니다.
MCP Host, Client가 존재하더라도 MCP Server가 존재하지 않으면 무용지물입니다.
MCP Server는 MCP Client와 통신하며 아래와 같은 역할을 해줍니다.

출처 : MCP Explained: The New Standard Connecting AI to Everything | by Edwin Lisowski | Medium
MCP Client에게 해당 MCP Server로 무엇을 할 수 있는지 알려줍니다.
웹 백엔드 개발자에게 특화해서 비유를 들어보자면, API를 열어놓고 해당 API로 어떠한 데이터를 얻을 수 있는지 알려주는 것이죠. MCP에서는 이를 Tool 이라고 부릅니다.
그리고 명령을 해석하고 실행시키고, 결과를 AI가 이해할 수 있도록 Formating 해줍니다.
또한, Error를 Handling 해주고, 의미있는 피드백을 줍니다.
여기까지 보았다면 우리는 대충 MCP의 플로우를 아래와 같이 상상하고 그릴 수 있습니다.

정리하면 다음과 같습니다.
그러면 마지막으로 MCP Protocol을 알아보겠습니다.
{
"version": "1.0",
"type": "request" | "response" | "error",
"id": "uuid",
"method": "server.methodName", // request일 때
"result": { ... }, // response일 때
"params": { ... }, // request일 때
"error": { "code": ..., "message": ... } // error일 때
}
{
"type": "request",
"id": "abc123",
"method": "model.complete",
"params": {
"prompt": "function foo() {",
"language": "javascript"
}
}
{
"type": "response",
"id": "abc123",
"result": {
"completion": " return 42; }"
}
}
MCP Protocol은 위에서도 알아보았듯이 MCP Client와 MCP Server가 서로 통신할 때 사용하는 프로토콜(규약)입니다.
메시지 구조는 위와 같은 구조(JSON-RPC)를 띄고 Trasport는 gRPC, Websocket, HTTP 등의 방식을 지원하며 gRPC 방식을 가장 추천한다고 합니다.
사실 MCP에 대한 흥미를 가지게 되었던 이유 중 또 하나는 활용해보고 싶은 마음이 강했던 것도 있었습니다.
나날이 AI는 발전하고 있고, 시대의 흐름을 발맞춰 따라가기 위해서, 그리고 효율성을 더 챙기기 위해서는 이러한 기술들을 활용하는 것도 좋아보였습니다.
하지만, 아직 MCP를 지원하는 서비스가 한정적인 점을 미루어 보았을 때, 개인적으로 사용하기에는 시기 상조라는 느낌이 들었습니다. (물론, MCP Server를 직접 제가 구축해서 다양한 외부 서비스를 연결하면 가능하다고 생각하지만, 드는 코스트가 거둬들이는 코스트보다 크다고 생각했습니다.)
하지만, MCP Server 구축하는 과정을 설명한 문서를 읽을 때(For Server Developers - Model Context Protocol), 회사의 서비스에 적용해보고 싶다는 생각이 강하게 들었습니다.
자체적인 MCP Server를 구축하고, 사용자가 질문을 했을 때, MCP Host -> Client -> Mcp Server -> Our Service로 흐르는 파이프라인을 잘 구축해놓는다면 굉장히 어려운 우리의 서비스를 외부 사용자가 조금 더 잘 이해할 수 있게 하고, 또한 내부 개발자들도 유용하게 쓸 수 있지 않을까 싶었습니다. (예를 들어, 현재 멈춰 있는 선박 리스트를 뽑아줘라고 하면 멈춰있는 선박들의 리스트를 쭈욱 뽑아서 주는 것입니다. 혹은 Delay된 선박이라든가 말이죠.)
하지만, 이건 개발 코스트도 크고, 또한 회사에서 감당해야 하는 비용적인 측면에서도 부담감이 있기 때문에 생각만 하고 있습니다. 나중에 말할 수 있는 기회가 생기면 정말 좋을 것 같습니다.
AI가 발전하면서, 점점 많은 패러다임이 나오고, 이에 따라 시대가 빠르게 발전하는 것 같습니다.
시간이 조금만 더 지나도 각각 서비스의 포멀한 MCP Server(자체적으로 기업에서 제공)가 우후죽순 생겨나게 되고, 그렇게 되면 우리는 신뢰도 높게 그리고 손쉽게 MCP를 활용하여 우리의 AI Agent를 만들 수 있게 됩니다.
그 때가 되면 정말 지금보다도 더 많은 변화가 폭풍처럼 몰아칠 것 같습니다.
그런 미래가 참 기대가 되네요 호호호
What is MCP? (simplest explanation + how to use it) - YouTube
MCP는 AI 업계의 표준이 될까요?
[번역] 나만의 MCP 서버 구축 방법
[번역] 모델 컨텍스트 프로토콜(MCP)이란 무엇인가요?
Introducing the Model Context Protocol \ Anthropic
MCP Explained: The New Standard Connecting AI to Everything | by Edwin Lisowski | Medium
Title Unavailable | Site Unreachable
For Server Developers - Model Context Protocol