Home
Login

Anthropic 모델 콘텐츠 프로토콜(MCP) 도구를 LangChain 및 LangGraph와 호환되도록 하는 경량 래퍼입니다.

MITPython 2.0klangchain-ai Last Updated: 2025-06-09

LangChain MCP 어댑터 - 프로젝트 상세 소개

프로젝트 개요

LangChain MCP 어댑터는 Anthropic 모델 콘텐츠 프로토콜(MCP) 도구를 LangChain 및 LangGraph 생태계와 원활하게 통합하도록 설계된 경량 래퍼 라이브러리입니다. 이 프로젝트는 서로 다른 AI 도구 프레임워크 간의 호환성 문제를 해결하여 개발자가 LangChain/LangGraph 환경에서 직접 MCP 도구를 사용하여 더욱 강력하고 유연한 AI 에이전트 애플리케이션을 구축할 수 있도록 합니다.

프로젝트 주소: https://github.com/langchain-ai/langchain-mcp-adapters

핵심 기능 및 특징

🔧 도구 변환 및 어댑터

  • MCP에서 LangChain 도구로 변환: MCP 도구를 LangChain 도구 형식으로 자동 변환
  • 원활한 통합: 변환된 도구를 LangGraph 에이전트에 직접 사용 가능
  • 타입 안전: 기존 도구의 타입 정보 및 매개변수 유효성 검사 유지
  • 비동기 지원: 비동기 도구 작업을 완벽하게 지원

📦 다중 서버 클라이언트

  • 다중 서버 연결: 여러 MCP 서버에 동시에 연결
  • 통합 도구 관리: 다른 서버에서 도구를 로드하고 관리
  • 서버 구성: 유연한 서버 매개변수 구성 지원
  • 연결 풀 관리: 효율적인 연결 리소스 관리

🌐 전송 프로토콜 지원

  • STDIO 전송: 표준 입력/출력 전송 프로토콜 지원
  • SSE 전송: 서버 푸시 이벤트 전송 프로토콜 지원
  • 다중 프로토콜 혼합: 다른 서버에서 다른 전송 프로토콜 사용 가능
  • 자동 재연결: 연결 끊김 시 자동 재연결 메커니즘

🤖 LangGraph 통합

  • React 에이전트: LangGraph의 React 에이전트와 완벽하게 통합
  • 비동기 에이전트: 비동기 에이전트 실행 지원
  • 도구 체인 조합: 복잡한 도구 체인 및 워크플로우 지원
  • 상태 관리: 에이전트 실행 상태 유지

기술 아키텍처

핵심 컴포넌트

LangChain/LangGraph Application
         ↓
LangChain MCP Adapters
         ↓
MCP Client Implementation
         ↓
Multiple MCP Servers (Math, Weather, etc.)

도구 변환 프로세스

  1. MCP 도구 검색: MCP 서버에서 사용 가능한 도구 목록 가져오기
  2. 도구 메타데이터 파싱: 도구 이름, 설명, 매개변수 파싱
  3. LangChain 도구 생성: 호환 가능한 LangChain 도구 객체 생성
  4. 에이전트 통합: 도구를 LangGraph 에이전트에 등록
  5. 실행 전달: LangChain 도구 호출을 MCP 서버로 전달

설치 및 사용

빠른 설치

# 기본 설치
pip install langchain-mcp-adapters

# 전체 개발 환경
pip install langchain-mcp-adapters langgraph langchain-openai

환경 구성

# OpenAI API 키 설정
export OPENAI_API_KEY=<your_api_key>

사용 예시

기본 예시: 수학 서버

1. MCP 서버 생성

# math_server.py
from mcp.server.fastmcp import FastMCP

mcp = FastMCP("Math")

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

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

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

2. LangGraph 에이전트 생성

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

# 모델 초기화
model = ChatOpenAI(model="gpt-4o")

# 서버 매개변수 구성
server_params = StdioServerParameters(
    command="python",
    args=["/path/to/math_server.py"],
)

# 에이전트 생성 및 실행
async with stdio_client(server_params) as (read, write):
    async with ClientSession(read, write) as session:
        await session.initialize()
        
        # MCP 도구 로드
        tools = await load_mcp_tools(session)
        
        # 에이전트 생성
        agent = create_react_agent(model, tools)
        
        # 쿼리 실행
        response = await agent.ainvoke({
            "messages": "what's (3 + 5) x 12?"
        })

고급 예시: 다중 서버 통합

1. 날씨 서버

# weather_server.py
from mcp.server.fastmcp import FastMCP

mcp = FastMCP("Weather")

@mcp.tool()
async def get_weather(location: str) -> str:
    """Get weather for location."""
    return f"It's always sunny in {location}"

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

2. 다중 서버 클라이언트

from langchain_mcp_adapters.client import MultiServerMCPClient
from langgraph.prebuilt import create_react_agent
from langchain_openai import ChatOpenAI

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

# 다중 서버 구성
async with MultiServerMCPClient({
    "math": {
        "command": "python",
        "args": ["/path/to/math_server.py"],
        "transport": "stdio",
    },
    "weather": {
        "url": "http://localhost:8000/sse",
        "transport": "sse",
    }
}) as client:
    # 에이전트 생성
    agent = create_react_agent(model, client.get_tools())
    
    # 수학 연산
    math_response = await agent.ainvoke({
        "messages": "what's (3 + 5) x 12?"
    })
    
    # 날씨 쿼리
    weather_response = await agent.ainvoke({
        "messages": "what is the weather in NYC?"
    })

LangGraph API 서버 통합

1. 그래프 구성 파일

# graph.py
from contextlib import asynccontextmanager
from langchain_mcp_adapters.client import MultiServerMCPClient
from langgraph.prebuilt import create_react_agent
from langchain_anthropic import ChatAnthropic

model = ChatAnthropic(model="claude-3-5-sonnet-latest")

@asynccontextmanager
async def make_graph():
    async with MultiServerMCPClient({
        "math": {
            "command": "python",
            "args": ["/path/to/math_server.py"],
            "transport": "stdio",
        },
        "weather": {
            "url": "http://localhost:8000/sse",
            "transport": "sse",
        }
    }) as client:
        agent = create_react_agent(model, client.get_tools())
        yield agent

2. LangGraph 구성

{
  "dependencies": ["."],
  "graphs": {
    "agent": "./graph.py:make_graph"
  }
}

응용 시나리오 및 장점

🎯 응용 시나리오

엔터프라이즈급 AI 에이전트

  • 다기능 통합: 다양한 비즈니스 도구 및 API 통합
  • 워크플로우 자동화: 복잡한 비즈니스 프로세스 자동화 구축
  • 데이터 처리: 다양한 데이터 소스 및 처리 도구 통합

개발자 도구 체인

  • 코드 생성: 코드 생성 및 분석 도구 통합
  • 테스트 자동화: 지능형 테스트 에이전트 구축
  • DevOps 통합: 자동화된 배포 및 모니터링

연구 및 교육

  • 과학 계산: 수학 및 과학 계산 도구 통합
  • 데이터 분석: 지능형 데이터 분석 도우미 구축
  • 교육 도우미: 대화형 학습 도구 생성

✨ 기술적 장점

생태계 상호 운용성

  • 표준화된 인터페이스: MCP 표준 프로토콜 준수
  • 광범위한 호환성: LangChain 생태계와 원활하게 통합
  • 확장성: 사용자 정의 도구 및 프로토콜 확장을 지원

개발 효율성 향상

  • 빠른 통합: 몇 줄의 코드로 MCP 도구 통합 가능
  • 타입 안전: 완전한 타입 힌트 및 유효성 검사
  • 오류 처리: 완벽한 오류 처리 및 재시도 메커니즘

성능 및 안정성

  • 비동기 지원: 고성능 비동기 작업
  • 연결 관리: 지능형 연결 풀 및 재연결 메커니즘
  • 리소스 최적화: 효율적인 리소스 사용 및 관리

기술 사양

지원되는 프로토콜 버전

  • MCP 프로토콜: 최신 MCP 프로토콜 사양과 호환
  • LangChain: LangChain 0.1+ 버전 지원
  • LangGraph: LangGraph 최신 버전 지원

전송 프로토콜

  • STDIO: 표준 입력/출력 전송
  • SSE: 서버 푸시 이벤트
  • HTTP: HTTP 기반 RESTful API
  • WebSocket: 실시간 양방향 통신 (계획 중)

도구 타입 지원

  • 동기 도구: 기존 동기 함수 도구
  • 비동기 도구: 고성능 비동기 도구
  • 스트리밍 도구: 스트리밍 출력을 지원
  • 상태 도구: 상태 관리를 지원하는 도구

모범 사례

🔧 개발 권장 사항

도구 설계

  • 단일 기능: 각 도구는 단일 기능에 집중
  • 명확한 매개변수: 명확한 매개변수 설명 및 타입 제공
  • 오류 처리: 완벽한 오류 처리 로직 구현
  • 완전한 문서: 자세한 도구 문서 제공

성능 최적화

  • 연결 재사용: MCP 서버 연결 재사용
  • 비동기 우선: 비동기 도구 및 작업을 우선적으로 사용
  • 리소스 관리: 불필요한 리소스를 즉시 해제
  • 캐시 전략: 캐시를 합리적으로 사용하여 성능 향상

보안 고려 사항

  • 권한 제어: 적절한 권한 검사 구현
  • 입력 유효성 검사: 입력 매개변수를 엄격하게 검증
  • 로그 기록: 주요 작업 및 오류 기록
  • 키 관리: API 키 및 자격 증명을 안전하게 관리

요약

LangChain MCP 어댑터 프로젝트는 AI 도구 생태계의 중요한 인프라로서 MCP 프로토콜과 LangChain 프레임워크 간의 간극을 성공적으로 연결했습니다. 이 어댑터를 통해 개발자는 다음을 수행할 수 있습니다.

🎯 핵심 가치

  • 통합 도구 생태계: 서로 다른 프로토콜의 AI 도구를 LangChain 생태계에 통합
  • 개발 효율성 향상: AI 에이전트 개발의 복잡성과 작업량을 크게 줄임
  • 기능 확장성: 다양한 타사 도구 및 서비스를 쉽게 통합
  • 표준화된 지원: 업계 표준을 준수하여 장기적인 호환성 보장

🌟 프로젝트 하이라이트

  • 경량 설계: 최소한의 종속성으로 쉽게 통합 및 배포 가능
  • 완전한 기능: 도구 변환에서 에이전트 실행까지 전체 프로세스 커버
  • 생산 준비 완료: 엔터프라이즈급 안정성 및 성능 제공
  • 커뮤니티 주도: 활발한 오픈 소스 커뮤니티 및 지속적인 기능 반복

🔮 응용 전망

AI 에이전트 기술의 빠른 발전과 함께 도구 통합 및 상호 운용성이 점점 더 중요해질 것입니다. LangChain MCP 어댑터는 서로 다른 AI 도구 생태계를 연결하는 다리 역할을 하여 미래의 AI 애플리케이션 개발에서 중요한 역할을 할 것입니다. 현재 개발 프로세스를 단순화할 뿐만 아니라 더욱 지능적이고 기능이 풍부한 AI 에이전트 애플리케이션을 구축하기 위한 견고한 기반을 마련합니다.

AI 애플리케이션 개발자, 기업 기술 의사 결정자 또는 연구원이든 이 프로젝트는 깊이 이해하고 적용할 가치가 있습니다. AI 도구 통합 분야의 모범 사례를 나타내며 더욱 강력하고 유연한 AI 솔루션을 구축하는 데 도움이 될 것입니다.