AI 챗봇을 만들다가 등장한 MCP 프로토콜!
중요한 개념인지라 정리하고 넘어가보자.
✅ MCP 프로토콜(Model Context Protocol)
MCP는 Anthropic에서 발표한 프로토콜로 LLM 모델이 외부 애플리케이션과 연동할 수 있도록 해주는 스펙으로, 예를 들어 클로드 모델이 학습된 결과로 답변만할 수 있는데 비해서 MCP를 이용하여 외부 애플리케이션과 연동하게 되면, 구글 검색 결과를 통해서 최신 정보를 가지고 답변을 하거나, Spotify를 이용해서 음악을 플레이하도록 할 수 있다.
이 개념을 먼저 알기 전에 LLM의 개념을 알아야 한다.
✔️ LLM (Large Language Model)
기본적으로 학습 당시에 습득된 지식을 통해서, 질문에 대해서 답변을 한다. 즉 학습되지 않은 정보에 대해서는 답변을 할 수 없고, 질문에 대한 답변 이외에 음악을 튼다가나, 컴퓨터내에서 파일을 검색한다던가의 추가적인 행동을 할 수 없다.
✔️ Agent와 Tool

LLM의 한계를 극복하고, LLM 애플리케이션의 기능을 확장하기 위해서 우리는 LLM이 다른 애플리케이션이나 데이터 소스와 상호 작용을 하도록 할 수 있다.
예를 들어서, 이번달의 대학 입시 정보가 필요하면 구글 검색 엔진을 통해서 최신 자료를 검색하여,
그 자료를 기반으로 답변을 하도록 하거나, 현재 프로젝트 진행상황을 알고 싶다면 JIRA 사이트를 통해서 얻어 올수 있다.
이렇게 LLM과 연동되는 외부 애플리케이션이나 데이터 소스를 Tool이라고 한다.
그리고 무슨 Tool을 써서 답변해야하는지 생각하고 의사결정을 해야하는데 그걸 하는 놈이 Agent 이다.
✔️ Agent Framework
Agent를 구현하려면 직접 처음부터 구현할 수 도 있지만, 적절한 Tool을 선택하는 로직이나, 또는 Tool에서 리턴된 결과를 질문을 답변하는데 사용하기 위한 처리까지 많은 로직이 필요하기 때문에, 미리 만들어진 프레임웍을 사용한다. 이런 Agent Framework 에는 Langchain이 대표적이며, Crew AI, AutoGen, Llama Index와 같은 오픈 소스 프레임워크 에서 부터, Anthropic의 Agent framework 과 같은 수많은 상용 프레임워크들이 있다.
Agent framework들은 Tool과 연동하기 위해서, 각자 Tool SDK를 제공한다. 예를 들어 Langchain에는 Google search와 연동하기 위한 SDK 들이 있는데 이는 Langchain이 각각의 서비스 provider와 협업을 해서 서로 연동 스펙을 맞춰서 SDK을 개발해서 제공한것이다. 이렇게 제공된 SDK는 Langchain에서만 사용이 가능하다.
이 말은 즉슨 Langchain, CrewAI,AutoGen과 같은 Agent Framework 제공자들이 각각의 Tool에 대한 SDK를 개별로 만들어야 한다는 이야기가 되고,
반대로 Tool 제공자 입장에서는 이 각각의 Agent Framework 제공자들과 협업을 통해서 LLM 애플리케이션과 연동되도록 해야하기 때문에, 커뮤니케이션 부하가 엄청나고, Tool의 기능이 하나가 업데이트 되면, 각 Agent Framework의 SDK로 업데이트 하도록 해야 하기 때문에, 개발 관리 입장에서 부담이 엄청나게 늘어난다.
그래서 등장한게 MCP 프로토콜이다.
서로 SDK 스펙을 맞출 필요없이 업계의 표준화된 프로토콜을 이용하여, 개발을 하게 되면, 어느 Agent Framework이던지, 어떤 Tool과도 연동될 수 있도록 할 수 있다.
✔️ MCP 프로토콜
JSON-RPC/HTTP 를 이용하는 LLM 애플리케이션과 Tool 서버가 어떻게 통신하는지를 정의한 규약이다. 이 말은 이 규약만 따르면 어떤 SDK나 어떤 프로그래밍 언어등 사용할 수 있다는 것이다.
간단한 동작원리를 보면 다음과 같다.
먼저 LLM application은 Tool 서버에서 어떤일을 할 수 있는지 툴의 목록을 요청한다. 이를 List tools 호출이라고 한다. 이를 통해서 LLM application은 Tool이 어떤 기능을 제공할 수 있는지를 이해할 수 있다.

위의 그림은 LLM applicaiton 내의 agent가 list tools 요청을 Weather service에게 요청하여, Weather service tool이 무엇을 할 수 있는지를 질의하는 과정이다. Weather service는 get_weather라는 tool을 제공하며, city 를 인자로 받아서, 해당 city의 날씨 정보를 리턴할 수 있다고 agent에게 알려준다.

다음으로는 LLM application이 Tool이 무엇을 할 수 있는지를 알았기 때문에, 추가적인 정보가 필요하다면 LLM application내의 agent가 판단하여, 아래와 같이 특정 Tool을 호출한다. 아래는 날씨 정보를 얻기 위해서 get_weather라는 Tool을 호출하여 “New York”의 날씨 정보를 요청한 것이고, Weather service tool server가 New York의 날씨 정보를 리턴하는 흐름이다.
☑️ MCP SDK

이런 개발을 손쉽게 하기 위해서, Server와 Client의 SDK를 제공한다.
Server SDK는 Kotlin, Python, Typescript등을 위한 여러가지 프레임웍들이 있고, Python의 경우에는 FastMCP라는 프레임웍이 많이 사용된다. (Python API 서버 프레임웍인 FastAPI와 구조가 유사하면 사용이 매우 쉽다).
Client SDK의 경우에는 Agent Framework들이 이 MCP Client SDK를 Agent Framework SDK의 일부로 제공한다. 공식 Anthropic 예제에서는 Anthropic agent framework에서 Client SDK를 제공하는데, Langchain이나 다른 agent framework의 SDK를 사용할 수 있다.
Anthropic의 agent framework은 anthropic 모델만 사용할 수 있지만 Langchain 과 같은 오픈 소스 Agent framework의 경우에는 anthropic 모델뿐만 아니라, chatgpt나 구글의 gemini등의 다른 모델을 agent로 사용할 수 있고, langchain의 경우 agent 기능뿐만 아니라 llm application을 개발할 수 있는 폭넓은 기능을 제공하고 있다.
✔️ 주의 해야할점 (보안)
MCP는 REST처럼 JSON/HTTP 기반의 프로토콜을 정의한 스펙이다. 즉 통신 규약만을 정의하지 실제로 애플리케이션을 구현하기 위한 많은 부분이 생략되어 있다. 특히 보안 인증, 인가나 에러 메시지와 같은 부분이 생략되어 있기 때문에 단순히 튜토리얼만 읽고 MCP server를 구현하게 되면, 보안이나 기타 운영 부분에 많은 부분이 부족할 수 있다.
우리가 REST로 구현을 할때도 API Token이나 JWT토큰, 그리고 메시지에 대한 암호화, 변조 불가와 같은 추가 메커니즘을 고려하듯이 MCP를 구현할때도 단순히 request/response 에 대한 로직뿐만이 아니라 보안, 운영에 대한 구조를 충분히 고려해서 구현해야 한다.
'web > AI' 카테고리의 다른 글
| [AI] RAG 와 VectorDB (1) | 2025.12.17 |
|---|---|
| [AI] Qdrant 로 RAG 구축하기(1) (1) | 2025.12.16 |
| [AI] 챗봇만들기 프로젝트 (1) (0) | 2025.12.04 |
| [AI] JIRA를 연동하여 주간업무 Agent 만들기(2) (0) | 2025.11.28 |
| [AI] JIRA를 연동하여 주간업무 Agent 만들기(1) (0) | 2025.11.18 |