Langchain MCP适配器添加福利群:解决AI开发者的「MCP实战痛点」该库提供了一个轻量级的封装,使得 Anthropic 模型上下文协议 (MCP) 工具能够与 LangChain 和 LangGraph 兼容。

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 服务器并从它们加载工具:
# 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)
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?"})

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

[!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"
}
}

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