Model Context Protocol (MCP)은 애플리케이션이 LLM에 도구와 컨텍스트를 제공하는 방법을 표준화하는 개방형 프로토콜입니다. LangChain 에이전트는 langchain-mcp-adapters 라이브러리를 사용하여 MCP 서버에 정의된 도구를 사용할 수 있습니다.
Install
LangGraph에서 MCP 도구를 사용하려면 langchain-mcp-adapters 라이브러리를 설치하세요:
pip
pip install langchain-mcp-adapters
uv
uv add langchain-mcp-adapters
Transport types
MCP는 클라이언트-서버 통신을 위한 다양한 전송 메커니즘을 지원합니다:
- stdio – 클라이언트가 서버를 하위 프로세스로 실행하고 표준 입력/출력을 통해 통신합니다. 로컬 도구 및 간단한 설정에 가장 적합합니다.
- Streamable HTTP – 서버가 HTTP 요청을 처리하는 독립 프로세스로 실행됩니다. 원격 연결 및 여러 클라이언트를 지원합니다.
- Server-Sent Events (SSE) – 실시간 스트리밍 통신에 최적화된 streamable HTTP의 변형입니다.
Use MCP tools
langchain-mcp-adapters는 에이전트가 하나 이상의 MCP 서버에 정의된 도구를 사용할 수 있도록 합니다.
여러 MCP 서버에 액세스하기
from langchain_mcp_adapters.client import MultiServerMCPClient
from langchain.agents import create_agent
client = MultiServerMCPClient(
{
"math": {
"transport": "stdio", # Local subprocess communication
"command": "python",
# Absolute path to your math_server.py file
"args": ["/path/to/math_server.py"],
},
"weather": {
"transport": "streamable_http", # HTTP-based remote server
# Ensure you start your weather server on port 8000
"url": "http://localhost:8000/mcp",
}
}
)
tools = await client.get_tools()
agent = create_agent(
"claude-sonnet-4-5-20250929",
tools
)
math_response = await agent.ainvoke(
{
"messages": [{
"role": "user",
"content": "what's (3 + 5) x 12?"
}]
}
)
weather_response = await agent.ainvoke(
{
"messages": [{
"role": "user",
"content": "what is the weather in nyc?"
}]
}
)
MultiServerMCPClient는 기본적으로 상태 비저장(stateless)입니다. 각 도구 호출은 새로운 MCPClientSession을 생성하고, 도구를 실행한 다음, 정리합니다.
Custom MCP servers
자체 MCP 서버를 만들려면 mcp 라이브러리를 사용할 수 있습니다. 이 라이브러리는 도구를 정의하고 서버로 실행하는 간단한 방법을 제공합니다.
pip
pip install mcp
uv
uv add mcp
MCP 도구 서버로 에이전트를 테스트하려면 다음 참조 구현을 사용하세요.
Math server (stdio transport)
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")
Weather server (streamable HTTP transport)
from mcp.server.fastmcp import FastMCP
mcp = FastMCP("Weather")
@mcp.tool()
async def get_weather(location: str) -> str:
"""Get weather for location."""
return "It's always sunny in New York"
if __name__ == "__main__":
mcp.run(transport="streamable-http")
Stateful tool usage
도구 호출 간에 컨텍스트를 유지하는 상태 저장 서버의 경우, client.session()을 사용하여 영구적인 ClientSession을 생성하세요.
상태 저장 도구 사용을 위한 MCP ClientSession 사용
from langchain_mcp_adapters.tools import load_mcp_tools
client = MultiServerMCPClient({...})
async with client.session("math") as session:
tools = await load_mcp_tools(session)
Additional resources
출처: https://docs.langchain.com/oss/python/langchain/mcp
Langchain v1.0
- LangChain 개요
- LangChain v1
- LangChain v1 마이그레이션 가이드
- LangChain 설치
- QuickStart
- Philosophy
- Agents
- Models
- Messages
- Tools
- Short-term memory
- Streaming
- Middleware
- Structured output
- Guardrails
- Runtime
- Context Engineering
Model Context Protocol (MCP)- Human-in-the-loop
- Multi-agent
- Retrieval
- Long-term memory
- Studio
- Test
- Deploy
- Agent Chat UI
- Observability
반응형
