从您的应用程序连接到 MCP 服务器
本教程向您展示如何使用 Langflow 的 MCP Tools 组件 将 MCP 服务器连接到您的应用程序。
模型上下文协议 (MCP) 通过 MCP 客户端 和 MCP 服务器 帮助代理与 LLM 集成。 具体来说,MCP 服务器托管代理(MCP 客户端)用于完成专门任务的工具。 MCP 服务器连接到像 Cursor 这样的 MCP 客户端。 然后,您与客户端交互,客户端根据需要使用来自连接服务器的工具来完成您的请求。
您可以将 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
Is it safe to go hiking in the Adirondacks today?
此查询演示了 LLM 本身可能无法访问旨在处理专门查询的信息或函数。在此示例中,默认的 OpenAI 模型提供了模糊的响应,尽管代理确实通过使用其内部的
get_current_date
函数知道当前日期。_10Today is July 11, 2025._10To determine if it's safe to go hiking in the Adirondacks today, you should check the current weather conditions, trail advisories, and any local alerts (such as bear activity or flooding)._10Would you like a detailed weather forecast or information on trail conditions for the Adirondacks today?为了改进响应,您可以将提供专门工具的 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在您的本地机器上安装weather MCP server:
_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。
-
在 Add MCP Server 窗格中,提供服务器启动命令和参数,以将天气MCP服务器连接到您的流程。对于本教程,使用 JSON 或 STDIO 选项。
当代理确定需要使用该服务器提供的工具时,Langflow会运行命令来启动服务器。
请注意,两种配置提供相同的信息,但格式不同。 这意味着如果您的MCP服务器存储库仅为服务器提供JSON文件,您仍然可以使用STDIO选项使用这些值。
- JSON
- STDIO
要将MCP服务器配置作为JSON对象提供,选择 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:
-m
mcp_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服务器提供的额外上下文,代理的响应将比之前的响应更具体。 例如:
_10阿迪朗达克山脉中心位置Lake Placid的当前天气_10是有雾的,温度为17.2°C(约63°F)。_10如果您计划今天去徒步,请谨慎,因为雾可能会降低_10小径上的能见度并使导航更加困难。这是一个更好的响应,但为什么这个MCP服务器比直接调用天气API更有价值?
首先,MCP服务器通常针对特定任务进行定制,例如高度专业的操作或用于复杂多步问题解决的链式工具。 通常,您需要为特定任务编写自定义脚本,可能包括在单个脚本中的多个API调用,然后您要么必须在代理上下文之外执行此脚本,要么以某种方式将其提供给您的代理。
相反,MCP确保所有MCP服务器都以相同的方式添加到代理中,而无需了解每个服务器的特定端点结构或编写自定义集成。 MCP是将许多不同工具集成到代理应用程序中的标准化方式。 每次您想使用新的MCP服务器时,都不必学习新的API或编写自定义代码。
此外,您可以根据应用程序要解决的问题,将许多MCP服务器附加到一个代理上。 您添加的服务器越多,代理在其响应中就可以使用越专业的上下文。 在本教程中,添加天气MCP服务器已经提高了LLM响应的质量。 在本教程的下一部分中,您将添加一个
ip_geolocation
MCP服务器,以便如果用户在提示中没有指定位置,代理可以检测用户的位置。
添加地理位置服务器
Toolkit MCP 服务器包含多个用于网络监控的 MCP 工具,包括 IP 地理位置定位。它不是特别精确,但不需要 API 密钥。
请注意,此工具返 回的是您的 Langflow 服务器的 IP 地理位置,因此如果您的服务器是远程部署的,请考虑使用其他方法获取用户特定的位置数据,例如浏览器地理位置 API。
可以使用一个 npx 命令启动此 MCP 服务器,该命令会下载并运行 Toolkit MCP 服务器 Node 注册包,而无需在本地安装该包。
要将 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 访问面板 中的代码片段获取此值。FLOW_ID
:您的流程的 UUID 或自定义端点名称。您可以从流程的 API 访问面板 中的代码片段获取此值。LANGFLOW_API_KEY
:有效的 Langflow API 密钥。
-
将以下脚本Replicate到 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": "What's the weather like where I am right now?"_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"Error making API request: {e}")_34except ValueError as e:_34print(f"Error parsing response: {e}")_34except (KeyError, IndexError) as e:_34print(f"Error extracting message from response: {e}")请注意,此脚本使用了与之前的 Playground 示例不同的提示。 在此脚本中,
input_value
询问用户当前位置的天气,而不提供关于用户位置的任何提示,例如特定城市。此外,此脚本包含解析代码,用于从整个 Langflow API 响应中提取 LLM 的回复。 您将在自己的应用程序中使用类似的提取,因为 Langflow API 响应包含元数据和其他与传递给用户的回复无关的信息。
-
保存并运行脚本以发送请求并测试流程。
代理使用
ip_geolocation
工具检测请求者的位置,然后使用weather
工具获取该位置的天气信息。 例如:_10The weather in Waynesboro, Pennsylvania, is currently overcast with a temperature of 23.0°C (about 73.4°F)._10If you need more details or have any other questions, feel free to ask!请记住,本教程中使用的
ip_geolocation
工具使用您的 Langflow 服务器的位置,这可能与您的实际位置不同。
下一步
要继续构建本教程中介绍的概念,请参阅以下内容: