langchain-ai/langchain-mcp-adaptersPlease refer to the latest official releases for information GitHub Homepage
輕量級包裝器,使Anthropic模型內容協議(MCP)工具與LangChain和LangGraph相容
MITPython 2.2klangchain-ailangchain-mcp-adapters Last Updated: 2025-06-30
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.)
工具轉換流程
- MCP 工具發現: 從 MCP 伺服器獲取可用工具列表
- 工具元數據解析: 解析工具名稱、描述、參數
- LangChain 工具創建: 創建兼容的 LangChain 工具對象
- 代理集成: 將工具註冊到 LangGraph 代理中
- 執行轉發: 將 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 框架之間的 gap。通過這個适配器,開發者可以:
🎯 核心價值
- 統一工具生態: 將不同協議下的 AI 工具統一到 LangChain 生態中
- 開發效率提升: 顯著降低 AI 代理開發的複雜度和工作量
- 功能擴展性: 輕鬆集成各種第三方工具和服務
- 標準化支持: 遵循業界標準,保證長期兼容性
🌟 項目亮點
- 輕量級設計: 最小化依賴,易於集成和部署
- 完整功能: 覆蓋從工具轉換到代理執行的完整流程
- 生產就緒: 提供企業級的穩定性和性能
- 社區驅動: 活躍的開源社區和持續的功能迭代
🔮 應用前景
隨著 AI 代理技術的快速發展,工具集成和互操作性將變得越來越重要。LangChain MCP 适配器作為連接不同 AI 工具生態系統的橋樑,將在未來的 AI 應用開發中發揮關鍵作用。它不僅簡化了當前的開發流程,更為構建更加智能、功能豐富的 AI 代理應用奠定了堅實的基礎。
無論您是 AI 應用開發者、企業技術決策者,還是研究人員,這個項目都值得深入了解和應用。它代表了 AI 工具集成領域的最佳實踐,將幫助您構建更加強大和靈活的 AI 解決方案。