Home
Login

輕量級包裝器,使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.)

工具轉換流程

  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 框架之間的 gap。通過這個适配器,開發者可以:

🎯 核心價值

  • 統一工具生態: 將不同協議下的 AI 工具統一到 LangChain 生態中
  • 開發效率提升: 顯著降低 AI 代理開發的複雜度和工作量
  • 功能擴展性: 輕鬆集成各種第三方工具和服務
  • 標準化支持: 遵循業界標準,保證長期兼容性

🌟 項目亮點

  • 輕量級設計: 最小化依賴,易於集成和部署
  • 完整功能: 覆蓋從工具轉換到代理執行的完整流程
  • 生產就緒: 提供企業級的穩定性和性能
  • 社區驅動: 活躍的開源社區和持續的功能迭代

🔮 應用前景

隨著 AI 代理技術的快速發展,工具集成和互操作性將變得越來越重要。LangChain MCP 适配器作為連接不同 AI 工具生態系統的橋樑,將在未來的 AI 應用開發中發揮關鍵作用。它不僅簡化了當前的開發流程,更為構建更加智能、功能豐富的 AI 代理應用奠定了堅實的基礎。

無論您是 AI 應用開發者、企業技術決策者,還是研究人員,這個項目都值得深入了解和應用。它代表了 AI 工具集成領域的最佳實踐,將幫助您構建更加強大和靈活的 AI 解決方案。

Star History Chart