从您的应用程序连接到 MCP 服务器
本教程向您展示如何使用 Langflow 的 MCP Tools 组件 将 MCP 服务器连接到您的应用程序。
模型上下文协议 (MCP) 通过 MCP 客户端 和 MCP 服务器 帮助代理与 LLM 集成。 具体来说,MCP 服务器托管代理(MCP 客户端)用于完成专门任务的工具。 MCP 服务器连接到 MCP 客户端(如 Cursor)。 然后,您与客户端交互,客户端根据需要使用来自连接的服务器的工具来完成您的请求。
您可以将 Langflow 作为 MCP 客户端和 MCP 服务器运行:
-
将 Langflow 作为 MCP 客户端使用: 当作为 MCP 客户端运行时,Langflow 流中的 Agent 组件可以使用连接的组件作为工具来处理请求。 您可以将现有组件作为工具使用,也可以将任何 MCP 服务器连接到您的流,以便代理可以使用该服务器的工具。
-
将 Langflow 作为 MCP 服务器使用: 当作为 MCP 服务器运行时,您的流将变成可供 MCP 客户端(可以是外部客户端或另一个 Langflow 流)使用的工具。
在本教程中,您将使用 Langflow MCP Tools 组件将多个 MCP 服务器连接到您的流,然后您将使用 Python 应用程序以编程方式运行您的流并与代理进行对话。
前置条件
本教程使用 OpenAI LLM。如果您想使用其他提供商,则需要该提供商的有效凭据。
创建代理流
-
在 Langflow 中,点击 New Flow,然后选择 Simple Agent 模板。
-
在 Agent 组件中,输入您的 OpenAI API 密钥。
如果您想使用不同的提供商或模型,请相应地编辑 Model Provider、Model Name 和 API Key 字段。
-
要测试流,点击 Playground,然后询问 LLM
今天在阿第伦达克山脉徒步安全吗?此查询演示了 LLM 自身可能无法访问旨在解决专门查询的信息或函数。在这个例子中,默认的 OpenAI 模型提供了一个模糊的响应,尽管代理确实通过使用其内部的
get_current_date函数知道了当前日期。_10今天是 2025 年 7 月 11 日。_10要确定今天在阿第伦达克山脉徒步是否安全,您应该检查当前的天气状况、步道咨询和任何当地警报(例如熊的活动或洪水)。_10您想要今天阿第伦达克山脉的详细天气预报或步道状况信息吗?为了改进响应,您可以将 MCP 服务器连接到您的流,这些服务器为代理在生成响应时提供专门的工具。在本教程的下一部分中,您将连接一个为代理提供实时天气信息的 MCP 服务器,以便它可以生成更具体的响应。
添加 MCP Tools 组件
网上有许多 MCP 服务器提供针对不同任务的不同工具。 要将 MCP 服务器与 MCP 客户端一起使用,您必须使服务器对客户端可用。 对于所有的 MCP 客户端,有几种方法可以做到这一点:
- 在本地安装服务器。
- 使用
uvx或npx获取并运行服务器包。 - 调用远程运行的服务器,例如 Smithery 上可用的服务器。
本教程演示了如何使用 uv pip install 在本地安装天气服务器,以及如何使用 npx 运行地理位置服务器包。
您特定 MCP 服务器的要求可能会有所不同。
在 Langflow 中,您使用 MCP Tools 组件将特定的 MCP 服务器连接到流。 您想要流使用的每个 MCP 服务器都需要一个 MCP Tools 组件。
-
对于本教程,使用 uv 和 Python 在您的本地机器上安装 天气 MCP 服务器:
_10uv pip install mcp_weather_server确保您在运行 Langflow 的同一个 Python 环境中安装服务器:
- 虚拟环境中的 Langflow:在安装服务器之前激活环境。
- Langflow Docker 镜像:在 Docker 容器内部安装服务器。
- Langflow Desktop 或系统范围的 Langflow OSS:全局安装服务器或在运行 Langflow 的同一个用户环境中安装。
-
在您的 Simple Agent 流中,移除 URL 和 Calculator 工具,然后添加一个 MCP Tools 组件。
-
点击 MCP Tools 组件,然后点击 Add MCP Server。
提示要管理您所有 的 MCP 服务器连接,请在可视化编辑器中点击 MCP servers,或点击您的个人资料图标,选择 Settings,然后点击 MCP Servers。
-
在 Add MCP Server 面板中,提供服务器启动命令和参数,以将天气 MCP 服务器连接到您的流。对于本教程,请使用 JSON 或 STDIO 选项。
当代理确定需要使用该服务器提供的工具时,Langflow 会运行启动服务器的命令。
请注意,两种配置提供相同的信息,但格式不同。 这意味着,如果您的 MCP 服务器存储库仅为服务器提供 JSON 文件,您仍然可以使用 STDIO 选项使用这些值。
- JSON
- STDIO
要以 JSON 对象的形式提供 MCP 服务器配置,请选择 JSON,然后将服务器配置粘贴到 JSON 字段中:
_13{_13"mcpServers": {_13"weather": {_13"command": "python",_13"args": [_13"-m",_13"mcp_weather_server"_13],_13"disabled": false,_13"autoApprove": []_13}_13}_13}要以 GUI 格式提供 MCP 服务器配置,请选择 STDIO,然后在给定字段中输入 MCP 服务器配置值:
- Name:
weather - Command:
python - Arguments:
-mmcp_weather_server
-
点击 Add Server,然后等待 Actions 列表填充。这意味着 MCP 服务器已成功连接。
使用此天气服务器,MCP Tools 组件还会添加一个可选的 City 字段。 对于本教程,请不要在此字段中输入任何内容。 相反,您将在下一步中添加地理位置 MCP 服务器,代理将使用它来检测您的位置。
-
点击 MCP Tools 组件,在 组件的页眉菜单 中启用 Tool Mode,然后将组件的 Toolset 端口连接到 Agent 组件的 Tools 端口。
此时,您的流有四个连接的组件:
- Chat Input 组件连接到 Agent 组件的 Input 端口。这允许流由来自用户或应用程序的传入提示触发。
- 带有天气 MCP 服务器的 MCP Tools 组件连接到 Agent 组件的 Tools 端口。代理可能不会在每个请求中都使用此服务器;只有在决定该服务器可以帮助响应提示时,代理才会使用此连接。
- Agent 组件的 Output 端口连接到 Chat Output 组件,该组件将最终响应返回给用户或应用程序。

-
要测试天气 MCP 服务器,点击 Playground,然后询问 LLM
今天在阿第伦达克山脉徒步安全吗?Playground 会在代理分析请求并选择要使用的工具时向您显示其逻辑。
理想情况下,由于天气 MCP 服务器提供的额外上下文,代理的响应将比之前的响应更具体。 例如:
_10Lake Placid(阿第伦达克山脉的一个中心位置)当前的天气_10是雾天,气温为 17.2°C(约 63°F)。_10如果您计划今天去徒步旅行,请务必小心,因为雾会降低步道的能见度_10并使导航更加困难。这是一个更好的响应,但什么使这个 MCP 服务器比仅仅调用天气 API 更有价值呢?
MCP 服务器通常针对特定任务进行定制,例如高度专业化的操作或用于复杂的、多步骤问题解决的链式工具。 通常,您必须为特定任务编写自定义脚本,可能在单个脚本中包含多个 API 调用,然后您必须在代理的上下文之外执行此脚本,或者以某种方式将其提供给您的代理。
相反,MCP 确保所有 MCP 服务器都以相同的方式添加到代理中,而无需了解每个服务器的特定端点结构或编写自定义集成。 MCP 是将许多不同工具集成到代理应用程序中的标准化方式。 您不必在每次想要使用新的 MCP 服务器时学习新的 API 或编写自定义代码。
此外,您可以为一个代理附加许多 MCP 服务器,这取决于您希望应用程序解决的问题。 添加的服务器越多,代理在响应中可以使用的专业上下文就越多。 在本教程中,添加天气 MCP 服务器已经提高了 LLM 响应的质量。 在本教程的下一部分,您将添加一个
ip_geolocationMCP 服务器,以便代理在用户未在提示中指定位置时可以检测到用户的位置。
添加地理位置服务器
Toolkit MCP server 包含多个用于网络监控的 MCP 工具,包括 IP 地理位置。它不是非常精确,但不需要 API 密钥。
请注意,此工具返回的是您的 Langflow 服务器的 IP 地理位置,因此如果您的服务器是远程部署的,请考虑使用其他方法获取用户特定的位 置数据,例如浏览器地理位置 API。
此 MCP 服务器可以使用一条 npx 命令启动,该命令会下载并运行 Toolkit MCP server Node registry package,而无需在本地安装该包。
要将 Toolkip MCP 服务器添加到您的流中,请执行以下操作:
-
向您的流添加另一个 MCP Tools 组件,点击该组件,然后点击 Add MCP Server。
-
选择 STDIO。
-
对于 Name,输入
ip_geolocation。提示工具名称和描述有助于代理选择工具。 如果您的代理在选择工具时遇到困难,请确保名称和描述清晰且易于人类理解。
-
对于 Command,输入
npx @cyanheads/toolkit-mcp-server。 -
点击 Add Server,然后等待 Actions 列表填充。这意味着 MCP 服务器已成功连接。
-
点击 MCP Tools 组件,在 组件的页眉菜单 中启用 Tool Mode,然后将组件的 Toolset 端口连接到 Agent 组件的 Tools 端口。
您的流现在有一个额外的 MCP Tools 组件,总共五个组件。

创建一个连接到 Langflow 的 Python 应用程序
此时,您可以打开 Playground 并询问您当前位置的天气,以测试 IP 地理位置工具。 然而,地理位置工具在您或您的用户想要询问世界各地不同地方的天气的应用程序中最有用。
在本教程的最后一部分,您将学习如何使用 Langflow API 在脚本中运行流。 这可能是更大应用程序的一部分,例如用户想知道天气是否适合特定运动的移动应用程序。
当您使用 Langflow API 运行流时,您可以在不更改代码的情况下更改流的某些方面。 例如,您可以在 Langflow 中向您的流添加更多 MCP 服务器,然后使用相同的脚本运行该流。 您可以使用相同的输入或提示代理使 用其他工具的新输入。
-
对于本教程的 Python 脚本,请收集以下信息:
LANGFLOW_SERVER_ADDRESS: 您的 Langflow 服务器域名。默认值为127.0.0.1:7860。您可以从流的 API access 面板上的代码片段中获取此值。FLOW_ID: 您的流的 UUID 或自定义端点名称。您可以从流的 API access 面板上的代码片段中获取此值。LANGFLOW_API_KEY: 一个有效的 Langflow API 密钥。
-
将以下脚本复制到 Python 文件中,然后用您在上一步中收集的信息替换占位符:
_34import requests_34import os_34_34url = "LANGFLOW_SERVER_ADDRESS/api/v1/run/FLOW_ID" # 此流的完整 API 端点 URL_34_34# 请求负载配置_34payload = {_34"output_type": "chat",_34"input_type": "chat",_34"input_value": "我现在的天气怎么样?"_34}_34_34# 请求头_34headers = {_34"Content-Type": "application/json",_34"x-api-key": "LANGFLOW_API_KEY"_34}_34_34try:_34# 发送 API 请求_34response = requests.request("POST", url, json=payload, headers=headers)_34response.raise_for_status() # 为错误状态码引发异常_34_34# 解析并仅打印消息文本_34data = response.json()_34message = data["outputs"][0]["outputs"][0]["results"]["message"]["text"]_34print(message)_34_34except requests.exceptions.RequestException as e:_34print(f"发送 API 请求时出错: {e}")_34except ValueError as e:_34print(f"解析响应时出错: {e}")_34except (KeyError, IndexError) as e:_34print(f"从响应中提取消息时出错: {e}")请注意,此脚本使用的提示与之前的 Playground 示例不同。 在此脚本中,
input_value询问用户当前位置的天气,而没有提供关于用户位置的任何提示,例如特定的城市。此外,此脚本包含用于从整个 Langflow API 响应中提取 LLM 回复的解析代码。 您会希望在自己的应用程序中使用类似的提取,因为 Langflow API 响应包含与传递给用户的回复无关的元数据和其他信息。
-
保存并运行脚本以发送请求并测试流。
代理使用
ip_geolocation工具检测请求者的位置,然后使用weather工具检索该位置的天气信息。 例如:_10宾夕法尼亚州韦恩斯伯勒当前天气为阴天,气温为 23.0°C(约 73.4°F)。_10如果您需要更多详细信息或有任何其他问题,请随时提问!请记住,本教程中使用的
ip_geolocation工具使用的是您的 Langflow 服务器的位置,这可能与您的实际位置 不同。
后续步骤
要继续构建本教程中介绍的概念,请参阅以下内容: