跳到内容

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

用于连接多个 MCP 服务器并加载 LangChain 兼容资源的客户端。

此模块提供了 MultiServerMCPClient 类,用于管理与多个 MCP 服务器的连接,并从它们加载工具、提示和资源。

名称 描述
MultiServerMCPClient

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

MultiServerMCPClient

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

方法

名称 描述
__init__

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

session

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

get_tools

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

get_prompt

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

get_resources

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

__aenter__

异步上下文管理器入口点。

__aexit__

异步上下文管理器退出点。

__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": "https://: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 列表

__aenter__ async

__aenter__() -> MultiServerMCPClient

异步上下文管理器入口点。

抛出

类型 描述
NotImplementedError

上下文管理器支持已被移除。

__aexit__

__aexit__(
    exc_type: type[BaseException] | None,
    exc_val: BaseException | None,
    exc_tb: TracebackType | None,
) -> None

异步上下文管理器退出点。

参数

名称 类型 描述 默认值
exc_type type[BaseException] | None

如果发生异常,则为异常类型。

必填
exc_val BaseException | None

如果发生异常,则为异常值。

必填
exc_tb TracebackType | None

如果发生异常,则为异常回溯。

必填

抛出

类型 描述
NotImplementedError

上下文管理器支持已被移除。

用于将 MCP 工具转换为 LangChain 工具的工具适配器。

此模块提供了将 MCP 工具转换为 LangChain 兼容工具、处理工具执行以及管理两种格式之间工具转换的功能。

函数

名称 描述
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 客户端会话。如果为 None,则必须提供连接。

必填
connection Connection | None

如果 session 为 None,用于创建新会话的连接配置。

None

返回

类型 描述
list[BaseTool]

LangChain 工具列表。工具注解作为

list[BaseTool]

工具元数据对象的一部分返回。

抛出

类型 描述
ValueError

如果既未提供会话也未提供连接。

用于将 MCP 提示转换为 LangChain 消息的提示适配器。

此模块提供了将 MCP 提示消息转换为 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 消息。

参数

名称 类型 描述 默认值
session ClientSession

MCP 客户端会话。

必填
name str

要加载的提示名称。

必填
arguments dict[str, Any] | None

传递给提示的可选参数。

None

返回

类型 描述
list[HumanMessage | AIMessage]

从 MCP 提示转换而来的 LangChain 消息列表。

用于将 MCP 资源转换为 LangChain Blob 的资源适配器。

此模块提供了将 MCP 资源转换为 LangChain Blob 对象的功能,处理文本和二进制资源内容类型。

函数

名称 描述
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 列表。

抛出

类型 描述
RuntimeError

如果在获取资源时发生错误。