主题
连接到 MCP 服务器
将远程 MCP 服务器中的工具添加到托管 deep agent。
将托管 deep agent 连接到远程 Model Context Protocol (MCP) 服务器,以将其工具添加到 agent。Managed Deep Agents 会创建 MCP 客户端并加载工具。
大多数远程 MCP 服务器需要身份验证。连接提供身份验证,将连接声明为用户所有可让每个调用方授权自己的账户。
NOTE
Managed Deep Agents 处于公开 beta 阶段,仅在 US 区域的 LangSmith Cloud 上可用。
在 tools/mcp.py 中声明 MCP 服务器:
text
my-agent/
agent.py
tools/
mcp.py有关完整项目布局,请参阅项目结构。
要在项目中实现应用逻辑,请改用编写的工具。
添加 MCP 服务器
当工具已位于远程 MCP 服务器上,并且你希望 MDA 直接加载它们而无需导入 agent 定义时,请使用 MCP 服务器。
Declare the servers
使用 define_mcp 声明一个或多个远程服务器:
python
from managed_deepagents import define_mcp
mcp = define_mcp(
servers={
"langchainDocs": {
"transport": "http",
"url": "https://docs.langchain.com/mcp",
},
},
)该模块必须导出模块级 mcp。一个项目只有一个 MCP 声明,因此请在其中声明所有服务器。
Managed Deep Agents 支持 Streamable HTTP("http")和旧版 SSE("sse")传输。不支持 Stdio MCP 服务器。请通过 HTTP 暴露 stdio 服务器,或将其操作实现为编写的工具。
有关连接选项,请参阅管理连接。
Select tools (Optional)
默认情况下,Managed Deep Agents 会暴露每个服务器的所有工具。要仅暴露选定的工具,请在该服务器的配置中设置允许列表:
python
{
"transport": "http",
"url": "https://docs.langchain.com/mcp",
"include_tools": ["search_docs_by_lang_chain"],
}要暴露除选定工具之外的所有工具,请将 include_tools 替换为 exclude_tools。
你可以同时使用这两个选项。拒绝列表会在允许列表之后应用,并且同一个工具不能同时出现在两个列表中。
选择使用 MCP 工具的原始名称,在 Managed Deep Agents 添加前缀之前。默认情况下,工具名称会加上服务器名称前缀以避免冲突。例如,来自 langchainDocs 服务器的 search_docs_by_lang_chain 工具会暴露为 langchainDocs__search_docs_by_lang_chain。
Pass credentials (Optional)
如果 MCP 服务器需要凭据,请在服务器配置上声明连接,并在工作区中创建该连接。
- MCP OAuth:对于声明支持 OAuth 并支持自动客户端注册的服务器,使用
mda connections create <slug>(从 MCP 声明推断)或mda connections create <slug> --mcp <url>创建。你无需提供 client ID 或 secret。 - 不透明密钥或通用 OAuth:对于静态 API key,或你自行注册的 BYOT OAuth 应用,请创建不透明密钥或通用 OAuth 连接,然后将服务器的
connection选项设置为connections.get(...)。
有关创建模式、所有者和运行时授权,请参阅管理连接。
配置 MCP 服务器
每个服务器支持以下核心选项:
| 选项 | 说明 |
|---|---|
transport | 必需。使用 http 表示 Streamable HTTP,或使用 sse 表示旧版 SSE。 |
url | 必需。远程 MCP 端点 URL。 |
headers | 发送到服务器的静态标头。 |
include_tools / includeTools | 要暴露的原始 MCP 工具名称。 |
exclude_tools / excludeTools | 要隐藏的原始 MCP 工具名称。 |
default_tool_timeout / defaultToolTimeout | 每次工具调用的超时时间,Python 以秒为单位,TypeScript 以毫秒为单位。 |
automatic_sse_fallback / automaticSSEFallback | 对于 HTTP,允许客户端回退到 SSE。 |
reconnect | 对于 SSE,配置重连行为。 |
MCP 定义还接受以下选项:
| 选项 | 默认值 | 说明 |
|---|---|---|
prefix_tool_name_with_server_name / prefixToolNameWithServerName | true | 为每个工具添加 {server}__ 前缀。 |
throw_on_load_error / throwOnLoadError | true | 加载失败,而不是以部分工具集启动。 |
部署
mda dev 和 mda deploy 会发现 tools/ 下的 MCP 声明,并将其包含在托管配置中。该声明不会同步到 Context Hub。
何时使用 MCP 连接器
| 概念 | 类型 | 如何到达 agent |
|---|---|---|
| MCP 服务器 | 托管配置 | 在 tools/ 下的 MCP 模块中声明;不会导入 agent 入口 |
| MCP 端点 | 部署 API | 将 agent 作为工具暴露给 MCP 客户端 |
| 编写的工具 | 应用代码 | 在 agent 定义中导入并传递 |
| 频道 | 托管配置 | 接收启动 agent 运行并传递响应的外部消息 |
更多信息请参阅项目结构。