본문 바로가기

인공지능

AI에 USB-C가 생긴다면? LangChain과 함께하는 Model Context Protocol(MCP) 활용법

728x90
반응형

 

LLM의 고립을 깨다

대형 언어 모델(LLM)이 아무리 똑똑해도, 외부 데이터와 도구에 접근할 수 없다면 그 능력은 제한적입니다. 바로 이 문제를 해결하기 위해 Anthropic에서 만든 **Model Context Protocol(MCP)**이 등장했습니다.

이 블로그에서는 MCP의 개념부터, 왜 필요한지, 어떤 기능을 제공하는지, 그리고 LangChain과 함께 실제 예제를 통해 어떻게 MCP를 사용할 수 있는지까지 자세히 다룹니다.

반응형

1. MCP란 무엇인가?

MCP(Model Context Protocol)는 Anthropic이 개발한 오픈 소스 프로토콜입니다. 주된 목적은 LLM 기반 애플리케이션이 외부 시스템(데이터, 도구, API 등)과 표준화된 방식으로 연결될 수 있도록 하는 것입니다.

쉽게 말해, AI 에이전트와 외부 리소스 간의 'USB-C' 같은 인터페이스 역할을 수행한다고 볼 수 있습니다.

MCP는 클라이언트-서버 구조를 따릅니다:

  • MCP 호스트 (클라이언트): LLM 기반 애플리케이션
  • MCP 서버: 데이터 제공자 또는 도구 제공자 역할을 하는 외부 시스템

2. 왜 MCP가 필요한가?

LLM이 가진 본질적인 한계 중 하나는 ‘외부 세계와의 단절’입니다. 아무리 정교하게 학습돼도 최신 데이터나 실시간 정보에 접근하지 못하면 실용성은 떨어지게 됩니다.

이를 해결하기 위한 기존 방법들:

  • RAG(Retrieval-Augmented Generation)
  • 파인튜닝(Fine-Tuning)
  • Web search 기반 툴 연동

그러나 이 방식들은 대부분 커스텀 통합이 필요하고, 보안이나 유지보수 측면에서도 복잡합니다.

MCP는 이런 복잡함을 없애고, 안정적이고 재사용 가능한 통합 방식을 제공합니다.


3. MCP의 주요 특징

✅ 표준화된 연결 구조

MCP는 표준 프로토콜이기 때문에, 하나의 MCP 서버를 만들어두면 다양한 애플리케이션에서 재사용이 가능합니다.

✅ 오픈 소스 기반

누구나 MCP를 확장하고 커스터마이징할 수 있어, 개발자 생태계 중심의 발전이 가능합니다.

✅ 모듈화 & 커뮤니티 생태계

MCP 서버는 모듈 단위로 도구를 정의하고 배포할 수 있어, 하나의 서버에서 다양한 기능을 제공할 수 있습니다.

✅ 보안 중심 설계

세분화된 권한 관리를 통해 보안 문제도 함께 해결할 수 있습니다.


4. LangChain과 함께하는 MCP 실습 예제

이제 실제로 MCP를 LangChain과 어떻게 연동해 사용하는지 알아보겠습니다.

🧪 예제 개요

간단한 수학 연산 도구를 MCP 서버로 만들고, LangChain 기반 AI 에이전트를 통해 "(3 + 5) x 12"라는 문제를 해결하는 예제입니다.

🛠️ 준비 작업

  1. 가상 환경 생성
python3 -m venv MCP_Demo
source MCP_Demo/bin/activate
  1. 필수 패키지 설치
pip install langchain-mcp-adapters
  1. OpenAI API Key 환경 변수 등록
export OPENAI_API_KEY=<your_api_key>

🖥️ MCP 서버 코드 (math_server.py)

from mcp.server.fastmcp import FastMCP

mcp = FastMCP("Math")

@mcp.tool()
def add(a: int, b: int) -> int:
    return a + b

@mcp.tool()
def multiply(a: int, b: int) -> int:
    return a * b

if __name__ == "__main__":
    mcp.run(transport="stdio")

서버 실행:

python3 math_server.py

🧠 MCP 클라이언트 (LangChain Agent) 코드 (client.py)

from mcp import ClientSession, StdioServerParameters
from mcp.client.stdio import stdio_client
from langchain_mcp_adapters.tools import load_mcp_tools
from langgraph.prebuilt import create_react_agent
from langchain_openai import ChatOpenAI
import asyncio

model = ChatOpenAI(model="gpt-4o")

server_params = StdioServerParameters(
    command="python",
    args=["math_server.py"],
)

async def run_agent():
    async with stdio_client(server_params) as (read, write):
        async with ClientSession(read, write) as session:
            await session.initialize()
            tools = await load_mcp_tools(session)
            agent = create_react_agent(model, tools)
            agent_response = await agent.ainvoke({"messages": "what's (3 + 5) x 12?"})
            return agent_response

if __name__ == "__main__":
    result = asyncio.run(run_agent())
    print(result)

실행 결과:

The result of (3 + 5) x 12 is 96.

MCP 서버와 LangChain 기반 LLM이 성공적으로 연동되어 도구를 호출하고 계산을 수행한 것을 확인할 수 있습니다.


728x90

MCP가 여는 AI의 새로운 지평

MCP는 단순한 프로토콜이 아닙니다. AI 에이전트를 단순한 챗봇이 아닌, 실제로 디지털 환경에 깊이 통합된 ‘지능형 시스템’으로 전환시키는 핵심 도구입니다.

특히 LangChain과의 연동을 통해, 기존보다 훨씬 더 유연하고 확장 가능한 AI 솔루션을 구축할 수 있습니다.

앞으로 MCP 기반의 다양한 MCP 서버들이 생태계를 이루게 되면, 개발자들은 더욱 빠르고 효율적으로 LLM 기반 시스템을 현실 문제에 적용할 수 있게 될 것입니다.

https://cobusgreyling.medium.com/using-langchain-with-model-context-protocol-mcp-e89b87ee3c4c

 

Using LangChain With Model Context Protocol (MCP)

The Model Context Protocol (MCP) is an open-source protocol developed by Anthropic, focusing on safe and interpretable Generative AI…

cobusgreyling.medium.com

728x90
반응형