模型上下文协议 (MCP) 服务器
Langflow 集成了 模型上下文协议 (MCP),既可以作为 MCP 服务器,也可以作为 MCP 客户端。本页介绍如何将 Langflow 用作 *MCP 服务器*。有关将 Langflow 用作 *MCP 客户端* 的信息,请参阅 MCP 连接组件。
作为 MCP 服务器,Langflow 将您的流公开为 工具,MCP 客户端 可以使用这些工具来执行操作。
先决条件
选择和配置要公开为 MCP 工具的流
Langflow 为每个 项目 运行单独的 MCP 服务器。每个项目的 MCP 服务器都会将其项目中的流公开为工具。
项目中的所有流默认都会被公开。要仅公开特定流并选择性地重命名它们以便代理使用,请按照以下步骤操作
-
在 Langflow 控制面板中,选择包含您要作为工具提供服务的流的项目,然后点击 **MCP 服务器** 标签。或者,您也可以在任何流中通过选择 **发布 > MCP 服务器** 来快速访问 **MCP 服务器** 标签。
**MCP 服务器** 标签显示了一个代码模板,您可以使用它将 MCP 客户端连接到项目的 MCP 服务器。
**流/动作** 部分列出了当前作为工具提供服务的流。
-
点击 编辑动作.
-
在 **MCP 服务器动作** 窗口中,选择要公开为工具的流。
-
可选:编辑 **流名称** 和 **流描述**。
-
**流名称**:输入一个清楚表明流功能的名称。
-
**流描述**:输入一个准确描述流执行的具体动作的描述。
重要MCP 客户端使用 **流名称** 和 **流描述** 来确定要使用的动作。有关命名和描述流的更多信息,请参阅 为代理使用命名和描述您的流。
-
-
关闭 **MCP 服务器动作** 窗口以保存您的更改。
连接客户端到 Langflow 的 MCP 服务器
以下步骤描述了如何连接 Cursor 到您的 Langflow 项目的 MCP 服务器,以便将您的流作为工具使用。但是,您可以按照类似的步骤连接任何 MCP 兼容的客户端。
-
安装 Cursor。
-
在 Cursor 中,转到 **Cursor 设置 > MCP**,然后点击 **添加新的全局 MCP 服务器**。这会打开 Cursor 的全局 MCP 配置文件 `mcp.json`。
-
在 Langflow 控制面板中,选择包含您要提供服务的流的项目,然后点击 **MCP 服务器** 标签。
-
从 **MCP 服务器** 标签复制代码模板,然后将其粘贴到 Cursor 的 `mcp.json` 中。例如
_11{_11"mcpServers": {_11"PROJECT_NAME": {_11"command": "uvx",_11"args": [_11"mcp-proxy",_11"http://LANGFLOW_SERVER_ADDRESS/api/v1/mcp/project/PROJECT_ID/sse"_11]_11}_11}_11}**MCP 服务器** 标签会自动包含正确的 `PROJECT_NAME`、`LANGFLOW_SERVER_ADDRESS` 和 `PROJECT_ID` 值。默认的 Langflow 服务器地址是 `http://127.0.0.1:7860`(如果使用 Langflow 桌面版,则为 `http://127.0.0.1:7868`)。
重要如果您的 Langflow 服务器 需要身份验证(`LANGFLOW_AUTO_LOGIN` 设置为 `false`),则必须在配置中包含 Langflow API 密钥。有关更多信息,请参阅 MCP 服务器身份验证和环境变量。
-
保存并关闭 Cursor 中的 `mcp.json` 文件。新添加的 MCP 服务器将出现在 **MCP 服务器** 部分。
Cursor 现在已连接到您项目的 MCP 服务器,您的流已注册为工具。Cursor 根据您的查询确定何时使用工具,并在必要时请求权限。
有关更多信息,请参阅 Cursor 的 MCP 文档。
MCP 服务器身份验证和环境变量
如果您的 Langflow 服务器 需要身份验证(`LANGFLOW_AUTO_LOGIN` 设置为 `false`),则必须在 MCP 客户端配置中提供 Langflow API 密钥。在这种情况下,您项目 **MCP 服务器** 标签中的代码模板会自动包含 `--header` 和 `x-api-key` 参数
_14{_14"mcpServers": {_14"PROJECT_NAME": {_14"command": "uvx",_14"args": [_14"mcp-proxy",_14"--headers",_14"x-api-key",_14"YOUR_API_KEY",_14"http://LANGFLOW_SERVER_ADDRESS/api/v1/mcp/project/PROJECT_ID/sse"_14 ]_14 }_14 }_14}
点击 点击 **生成 API 密钥** 以自动将新的 Langflow API 密钥插入代码模板中。或者,您可以将 `YOUR_API_KEY` 替换为现有的 Langflow API 密钥。
要将环境变量包含在 MCP 服务器命令中,请像这样包含它们
_14{_14"mcpServers": {_14"PROJECT_NAME": {_14"command": "uvx",_14"args": [_14"mcp-proxy",_14"http://LANGFLOW_SERVER_ADDRESS/api/v1/mcp/project/PROJECT_ID/sse"_14 ],_14"env": {_14"KEY": "VALUE"_14 }_14 }_14 }_14}
将 `KEY` 和 `VALUE` 替换为您要包含的环境变量名称和值。
为代理使用命名和描述您的流
像 Cursor 这样的 MCP 客户端将您的 Langflow 项目“看作”一个单一的 MCP 服务器,其中列出了*所有*启用的流作为工具。这可能会使代理感到困惑。例如,代理将不知道流 `adbbf8c7-0a34-493b-90ea-5e8b42f78b66` 是针对特定文本文件的 Document Q&A 流。
为防止出现此行为,请确保清晰地 命名和描述 您的流。将名称和描述视为函数名称和代码注释会很有帮助,确保使用清晰的陈述来描述您的流解决的问题。
例如,假设您有一个 Document Q&A 流,用于加载示例简历供 LLM 聊天,并且您为其提供了以下名称和描述
-
**流名称**:`document_qa_for_resume`
-
**流描述**:`一个用于分析 Emily 简历的流。`
如果您向 Cursor 询问关于简历的特定问题,例如 `Emily 有什么工作经验?`,代理会请求调用 MCP 工具 `document_qa_for_resume`。这是因为您的名称和描述为代理提供了该工具的明确用途。
当您运行该工具时,代理会在必要时请求权限,然后提供响应。例如
_10{_10"input_value": "What job experience does Emily have?"_10}_10结果_10Emily 有什么工作经验?_10Emily J. Wilson 具有以下工作经验
如果您询问不同的简历,例如 `Alex 有什么工作经验?`,您在描述中提供了足够的信息,以便代理做出正确决策
_10我注意到您在询问 Alex 的工作经验。_10根据可用的工具,我可以看到有一个 Document QA for Resume 流,它是为了分析简历而设计的。_10但是,描述中提到它是针对“Emily 的简历”而非 Alex 的。我无法访问 Alex 的简历或工作经验信息。
使用 MCP Inspector 测试和调试流
MCP Inspector 是用于测试和调试 MCP 服务器的常用工具。您可以使用 MCP Inspector 监控您的流,并深入了解 MCP 服务器如何使用它们
-
安装 MCP Inspector
_10npx @modelcontextprotocol/inspector有关配置 MCP Inspector 的更多信息,包括指定代理端口,请参阅 MCP Inspector GitHub 项目。
-
打开网页浏览器并导航到 MCP Inspector UI。默认地址是 `http://127.0.0.1:6274`。
-
在 MCP Inspector UI 中,输入 Langflow 项目 MCP 服务器的连接详细信息
- **传输类型**:选择 **SSE**。
- **URL**:输入 Langflow MCP 服务器的 `sse` 端点。例如:`http://127.0.0.1:7860/api/v1/mcp/project/d359cbd4-6fa2-4002-9d53-fa05c645319c/sse`
如果您已为 MCP 服务器配置了身份验证,请填写以下附加字段
- **传输类型**:选择 **STDIO**。
- **命令**:`uvx`
- **参数**:输入以下参数列表,以空格分隔。将 `YOUR_API_KEY`、`LANGFLOW_SERVER_ADDRESS` 和 `PROJECT_ID` 的值替换为您的 Langflow MCP 服务器中的值。例如
_10mcp-proxy --headers x-api-key YOUR_API_KEY http://LANGFLOW_SERVER_ADDRESS/api/v1/mcp/project/PROJECT_ID/sse -
点击 **连接**。
如果连接成功,您应该在 **工具** 标签中看到您项目的流。在此标签中,您可以监控 MCP 如何将您的流注册为工具,并使用自定义输入值测试工具。
-
要退出 MCP Inspector,请在启动它的同一终端窗口中按下 Control+C。
外部署您的 MCP 服务器
默认情况下,Langflow 不会暴露到公共互联网。但是,您可以使用像 ngrok 或 zrok 这样的转发平台来转发 Langflow 服务器流量。
以下步骤使用 ngrok,但您可以使用任何类似的反向代理或转发平台。本步骤还假设您使用默认的 Langflow 监听地址 `http://127.0.0.1:7860`(如果使用 Langflow 桌面版,则为 `http://127.0.0.1:7868`)。
-
注册 ngrok 账户。
-
复制您的 ngrok 认证令牌 并用它来验证您的本地 ngrok 服务器
_10ngrok config add-authtoken NGROK_TOKEN将 `NGROK_TOKEN` 替换为您的 ngrok 认证令牌。
-
使用 ngrok 将您的 Langflow 服务器暴露到公共互联网
_10ngrok http http://localhost:7860ngrok 会话将在您的终端中启动,并部署一个没有身份验证的临时域名。要添加身份验证或部署静态域名,请参阅 ngrok 文档。
`Forwarding` 行显示您的 Langflow 服务器的转发地址
_10Forwarding https://94b1-76-64-171-14.ngrok-free.app -> http://localhost:7860转发地址充当您的 Langflow 服务器的反向代理。
-
在 Langflow 控制面板中,选择包含您要作为工具提供服务的流的项目,然后点击 **MCP 服务器** 标签。
注意,代码模板现在包含您的 ngrok 转发地址,而不是 `localhost` 地址
_11{_11"mcpServers": {_11"PROJECT_NAME": {_11"command": "uvx",_11"args": [_11"mcp-proxy",_11"https://94b1-73-64-171-14.ngrok-free.app/api/v1/mcp/project/fdbc12af-0dd4-43dc-b9ce-c324d1ce5cd1/sse"_11]_11}_11}_11} -
使用 ngrok 转发地址完成 连接客户端到 Langflow 的 MCP 服务器 中的步骤。
您的 MCP 客户端现在通过公共互联网连接到您项目的 MCP 服务器。
如果使用 Cursor,您的对话与在本地主机上进行时相同
_10{_10"input_value": "What job experience does Emily have?"_10}_10结果_10Emily 有什么工作经验?_10Emily J. Wilson 具有以下工作经验
您可以使用 ngrok 控制台输出来监控对项目端点的请求
_1016:35:48.566 EDT GET /api/v1/mcp/project/fdbc12af-0dd4-43dc-b9ce-c324d1ce5cd1 200 OK