跳到内容

LangChain 模型上下文协议 (MCP) 适配器

名称 描述
MultiServerMCPClient

用于连接到多个 MCP 服务器并从中加载与 LangChain 兼容的工具、提示和资源的客户端。

MultiServerMCPClient

用于连接到多个 MCP 服务器并从中加载与 LangChain 兼容的工具、提示和资源的客户端。

方法

名称 描述
__init__

使用 MCP 服务器连接初始化 MultiServerMCPClient。

session

连接到 MCP 服务器并初始化会话。

get_tools

从所有已连接的服务器获取所有工具的列表。

get_prompt

从给定的 MCP 服务器获取一个提示。

get_resources

从给定的 MCP 服务器获取资源。

__init__

__init__(
    connections: dict[str, Connection] | None = None,
) -> None

使用 MCP 服务器连接初始化 MultiServerMCPClient。

参数

名称 类型 描述 默认值
connections dict[str, Connection] | None

一个将服务器名称映射到连接配置的字典。如果为 None,则不建立初始连接。

None

示例:基本用法(在每次工具调用时启动新会话)

from langchain_mcp_adapters.client import MultiServerMCPClient

client = MultiServerMCPClient(
    {
        "math": {
            "command": "python",
            # Make sure to update to the full absolute path to your math_server.py file
            "args": ["/path/to/math_server.py"],
            "transport": "stdio",
        },
        "weather": {
            # make sure you start your weather server on port 8000
            "url": "http://localhost:8000/mcp",
            "transport": "streamable_http",
        }
    }
)
all_tools = await client.get_tools()

示例:显式启动会话

from langchain_mcp_adapters.client import MultiServerMCPClient
from langchain_mcp_adapters.tools import load_mcp_tools

client = MultiServerMCPClient({...})
async with client.session("math") as session:
    tools = await load_mcp_tools(session)

session async

session(
    server_name: str, *, auto_initialize: bool = True
) -> AsyncIterator[ClientSession]

连接到 MCP 服务器并初始化会话。

参数

名称 类型 描述 默认值
server_name str

用于标识此服务器连接的名称

必需
auto_initialize bool

是否自动初始化会话

True

抛出

类型 描述
ValueError

如果在连接中找不到服务器名称

产出

类型 描述
AsyncIterator[ClientSession]

一个已初始化的 ClientSession

get_tools async

get_tools(
    *, server_name: str | None = None
) -> list[BaseTool]

从所有已连接的服务器获取所有工具的列表。

参数

名称 类型 描述 默认值
server_name str | None

可选的服务器名称,用于从中获取工具。如果为 None,将返回所有服务器中的所有工具(默认)。

None

注意:每次工具调用都会创建一个新的会话

返回

类型 描述
list[BaseTool]

LangChain 工具列表

get_prompt async

get_prompt(
    server_name: str,
    prompt_name: str,
    *,
    arguments: dict[str, Any] | None = None
) -> list[HumanMessage | AIMessage]

从给定的 MCP 服务器获取一个提示。

get_resources async

get_resources(
    server_name: str, *, uris: str | list[str] | None = None
) -> list[Blob]

从给定的 MCP 服务器获取资源。

参数

名称 类型 描述 默认值
server_name str

获取资源的服务器名称

必需
uris str | list[str] | None

可选的资源 URI 或 URI 列表以加载。如果未提供,将加载所有资源。

None

返回

类型 描述
list[Blob]

LangChain Blob 列表

函数

名称 描述
load_mcp_tools

加载所有可用的 MCP 工具并将其转换为 LangChain 工具。

load_mcp_tools async

load_mcp_tools(
    session: ClientSession | None,
    *,
    connection: Connection | None = None
) -> list[BaseTool]

加载所有可用的 MCP 工具并将其转换为 LangChain 工具。

参数

名称 类型 描述 默认值
session ClientSession | None

MCP 客户端会话

必需
connection Connection | None

可选的连接配置,用于在未提供 session 时创建新会话

None

返回

类型 描述
list[BaseTool]

LangChain 工具列表

函数

名称 描述
load_mcp_prompt

加载 MCP 提示并转换为 LangChain 消息。

load_mcp_prompt async

load_mcp_prompt(
    session: ClientSession,
    name: str,
    *,
    arguments: dict[str, Any] | None = None
) -> list[HumanMessage | AIMessage]

加载 MCP 提示并转换为 LangChain 消息。

函数

名称 描述
load_mcp_resources

加载 MCP 资源并将其转换为 LangChain Blob。

load_mcp_resources async

load_mcp_resources(
    session: ClientSession,
    *,
    uris: str | list[str] | None = None
) -> list[Blob]

加载 MCP 资源并将其转换为 LangChain Blob。

参数

名称 类型 描述 默认值
session ClientSession

MCP 客户端会话

必需
uris str | list[str] | None

要加载的 URI 列表。如果为 None,将加载所有资源。注意:如果指定 None,动态资源将不会被加载,因为它们需要提供参数,并且会被 MCP SDK 的 session.list_resources() 方法忽略。

None

返回

类型 描述
list[Blob]

LangChain Blob 列表