首页
学习
活动
专区
圈层
工具
发布
MCP广场 >详情页
Langchain MCP适配器2026-06-10205分享添加福利群:解决AI开发者的「MCP实战痛点」
LangChain MCP 适配器是一个轻量级库,旨在将Anthropic模型上下文协议(MCP)工具与LangChain和LangGraph框架集成。它允许将MCP工具转换为LangChain工具,以便与LangGraph代理一起使用,并提供了客户端实现,支持连接到多个MCP服务器并加载工具。通过该库,开发者可以轻松创建和运行MCP服务器,例如进行数学运算或获取天气信息,并将其与LangGraph代理结合,实现复杂的任务处理。此外,库还支持可流式HTTP传输,增强了MCP工具的可扩展性和灵活性。
By langchain-ai
2026-06-10205
github
详情内容

LangChain MCP 适配器

该库提供了一个轻量级的封装,使得 Anthropic 模型上下文协议 (MCP) 工具能够与 LangChainLangGraph 兼容。

MCP

功能

  • 🛠️ 将 MCP 工具转换为 LangChain 工具,以便与 LangGraph 代理一起使用
  • 📦 提供客户端实现,允许您连接到多个 MCP 服务器并从它们加载工具

安装

pip install langchain-mcp-adapters

快速开始

以下是一个使用 MCP 工具与 LangGraph 代理的简单示例。

pip install langchain-mcp-adapters langgraph "langchain[openai]"

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")

客户端

# 为标准输入输出连接创建服务器参数
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

server_params = StdioServerParameters(
    command="python",
    # 确保更新为 math_server.py 文件的完整绝对路径
    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()

        # 获取工具
        tools = await load_mcp_tools(session)

        # 创建并运行代理
        agent = create_react_agent("openai:gpt-4.1", tools)
        agent_response = await agent.ainvoke({"messages": "what's (3 + 5) x 12?"})

多个 MCP 服务器

该库还允许您连接到多个 MCP 服务器并从它们加载工具:

服务器

# math_server.py
...

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

mcp = FastMCP("Weather")

@mcp.tool()
async def get_weather(location: str) -> str:
    """获取某地的天气"""
    return "纽约总是阳光明媚"

if __name__ == "__main__":
    mcp.run(transport="streamable-http")
python weather_server.py

客户端

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

client = MultiServerMCPClient(
    {
        "math": {
            "command": "python",
            # 确保更新为 math_server.py 文件的完整绝对路径
            "args": ["/path/to/math_server.py"],
            "transport": "stdio",
        },
        "weather": {
            # 确保您的天气服务器在端口 8000 上启动
            "url": "http://localhost:8000/mcp/",
            "transport": "streamable_http",
        }
    }
)
tools = await client.get_tools()
agent = create_react_agent("openai:gpt-4.1", 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?"})

[!note] 上面的示例将为每个工具调用启动一个新的 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)

可流式 HTTP

MCP 现在支持 可流式 HTTP 传输。

要启动一个 示例 可流式 HTTP 服务器,请运行以下命令:

cd examples/servers/streamable-http-stateless/
uv run mcp-simple-streamablehttp-stateless --port 3000

或者,您可以直接使用 FastMCP(如上面的示例)。

要与 Python MCP SDK 的 streamablehttp_client 一起使用:

# 使用 examples/servers/streamable-http-stateless/ 中的服务器

from mcp import ClientSession
from mcp.client.streamable_http import streamablehttp_client

from langgraph.prebuilt import create_react_agent
from langchain_mcp_adapters.tools import load_mcp_tools

async with streamablehttp_client("http://localhost:3000/mcp/") as (read, write, _):
    async with ClientSession(read, write) as session:
        # 初始化连接
        await session.initialize()

        # 获取工具
        tools = await load_mcp_tools(session)
        agent = create_react_agent("openai:gpt-4.1", tools)
        math_response = await agent.ainvoke({"messages": "what's (3 + 5) x 12?"})

MultiServerMCPClient 一起使用:

# 使用 examples/servers/streamable-http-stateless/ 中的服务器
from langchain_mcp_adapters.client import MultiServerMCPClient
from langgraph.prebuilt import create_react_agent

client = MultiServerMCPClient(
    {
        "math": {
            "transport": "streamable_http",
            "url": "http://localhost:3000/mcp/"
        },
    }
)
tools = await client.get_tools()
agent = create_react_agent("openai:gpt-4.1", tools)
math_response = await agent.ainvoke({"messages": "what's (3 + 5) x 12?"})

与 LangGraph StateGraph 一起使用

from langchain_mcp_adapters.client import MultiServerMCPClient
from langgraph.graph import StateGraph, MessagesState, START
from langgraph.prebuilt import ToolNode, tools_condition

from langchain.chat_models import init_chat_model
model = init_chat_model("openai:gpt-4.1")

client = MultiServerMCPClient(
    {
        "math": {
            "command": "python",
            # 确保更新为 math_server.py 文件的完整绝对路径
            "args": ["./examples/math_server.py"],
            "transport": "stdio",
        },
        "weather": {
            # 确保您的天气服务器在端口 8000 上启动
            "url": "http://localhost:8000/mcp/",
            "transport": "streamable_http",
        }
    }
)
tools = await client.get_tools()

def call_model(state: MessagesState):
    response = model.bind_tools(tools).invoke(state["messages"])
    return {"messages": response}

builder = StateGraph(MessagesState)
builder.add_node(call_model)
builder.add_node(ToolNode(tools))
builder.add_edge(START, "call_model")
builder.add_conditional_edges(
    "call_model",
    tools_condition,
)
builder.add_edge("tools", "call_model")
graph = builder.compile()
math_response = await graph.ainvoke({"messages": "what's (3 + 5) x 12?"})
weather_response = await graph.ainvoke({"messages": "what is the weather in nyc?"})

与 LangGraph API 服务器一起使用

[!TIP] 查看 本指南 以开始使用 LangGraph API 服务器。

如果您想在 LangGraph API 服务器中运行使用 MCP 工具的 LangGraph 代理,可以使用以下设置:

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

async def make_graph():
    client = MultiServerMCPClient(
        {
            "math": {
                "command": "python",
                # 确保更新为 math_server.py 文件的完整绝对路径
                "args": ["/path/to/math_server.py"],
                "transport": "stdio",
            },
            "weather": {
                # 确保您的天气服务器在端口 8000 上启动
                "url": "http://localhost:8000/mcp/",
                "transport": "streamable_http",
            }
        }
    )
    tools = await client.get_tools()
    agent = create_react_agent("openai:gpt-4.1", tools)
    return agent

在您的 langgraph.json 中,确保将 make_graph 指定为您的图入口点:

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

将 LangChain 工具添加到 FastMCP 服务器

使用 to_fastmcp 将 LangChain 工具转换为 FastMCP,然后通过初始化程序将它们添加到 FastMCP 服务器:

[!NOTE] tools 参数仅在 mcp >= 1.9.1 的 FastMCP 中可用

from langchain_core.tools import tool
from langchain_mcp_adapters.tools import to_fastmcp
from mcp.server.fastmcp import FastMCP


@tool
def add(a: int, b: int) -> int:
    """将两个数字相加"""
    return a + b


fastmcp_tool = to_fastmcp(add)

mcp = FastMCP("Math", tools=[fastmcp_tool])
mcp.run(transport="stdio")
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档