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__ ¶
使用 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()
示例:显式启动会话
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_prompt async
¶
get_prompt(
server_name: str,
prompt_name: str,
*,
arguments: dict[str, Any] | None = None
) -> list[HumanMessage | AIMessage]
从给定的 MCP 服务器获取提示。
get_resources async
¶
__aenter__ async
¶
__aenter__() -> MultiServerMCPClient
__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 消息。 |
用于将 MCP 资源转换为 LangChain Blob 的资源适配器。
此模块提供了将 MCP 资源转换为 LangChain Blob 对象的功能,处理文本和二进制资源内容类型。
函数
名称 | 描述 |
---|---|
load_mcp_resources |
加载 MCP 资源并将其转换为 LangChain Blob。 |