如何结合LangChain与MCP使用的案例
消除自定义集成AI Agent 在获取数据时面临的挑战
图片来源:https://github.com/modelcontextprotocol/servers
消除自定义集成AI Agent 在获取数据时面临一个挑战,换句话说,就是如何将 AI Agent 或基于 LLM 的应用集成到外部数据源中。为了实现无缝集成,已经有许多尝试,例如利用 GUI、Web 浏览器和 Web 搜索等方式。这些方法各有优劣。
MCP 的潜力
MCP 有潜力成为一个通用接口,可以将其视为 AI 领域的虚拟/软件版 USB-C。它能够在 LLM/AI Agent 与外部资源之间实现无缝、安全且可扩展的数据交换。MCP 采用客户端-服务器架构,其中 MCP 主机(AI 应用)与 MCP 服务器(数据/工具提供方)进行通信。开发者可以使用 MCP 构建可复用、模块化的连接器,并利用针对主流平台的预构建服务器,从而打造一个由社区驱动的生态系统。MCP 的开源特性鼓励创新,允许开发者扩展其功能,同时通过精细化权限控制等特性确保安全性。最终,MCP 旨在将 AI Agent 从孤立的聊天机器人转变为具备上下文感知能力、可互操作且深度集成于数字环境的系统。
逐步指南
Anthropic 的 Model Context Protocol(MCP)是一个开源协议,用于将 LLM 连接到上下文、工具和提示词。它支持越来越多的服务器(server),可以用于连接各种工具或数据源。在本指南中,我们将演示如何将 MCP 服务器连接到 LangGraph agents,并使用 MCP 工具……如果你和我一样,那么无论原型多么简单,能够让它运行起来都会带来极大的清晰感和理解力——至少在我的思维方式里是这样的。
开始之前
请打开终端应用(Terminal)。下面是在 MacBook 上找到它的位置:
在终端窗口中,创建两个选项卡;我们将在一个选项卡中运行服务器,在另一个选项卡中运行客户端。
创建虚拟环境并安装依赖
推荐的最佳实践是在虚拟环境中安装和运行代码。使用以下命令创建名为 MCP_Demo 的虚拟环境:
python3 -m venv MCP_Demo
然后运行以下命令激活(进入)虚拟环境:
source MCP_Demo/bin/activate
激活后,你会看到命令行提示符更新为 (MCP_Demo),表示已进入该虚拟环境。
安装必要的依赖按顺序运行以下命令安装所需的 Python 包:
pip install langchain-mcp-adapters
pip install langchain-mcp-adapters
export OPENAI_API_KEY=
请将
替换为你的 OpenAI API Key。
创建并运行 MCP 服务器
创建 Python 服务器文件在终端中运行以下命令创建一个文本文件:
vim server.py
粘贴以下 Python 代码
# math_server.py
from mcp.server.fastmcp import FastMCP
mcp = FastMCP("Math")
@mcp.tool()
def add(a: int, b: int) -> int:
"""Add two numbers"""
return a + b
@mcp.tool()
def multiply(a: int, b: int) -> int:
"""Multiply two numbers"""
return a * b
if __name__ == "__main__":
mcp.run(transport="stdio")
保存并关闭文件在
vim
中,按
ESC
,输入
:wq
并回车。
运行 MCP 服务器使用以下命令启动服务器:
python3 math_server.py
运行后,终端不会有明显的输出,界面会如下所示:
创建并运行 MCP 客户端
在一个终端标签页运行 MCP 服务器的同时,打开另一个终端标签页,按照以下步骤操作:
创建客户端文件在新的终端标签页中,运行以下命令创建
client.py
文件:
vim client.py
粘贴以下 Python 代码
# 创建与 stdio 连接的服务器参数
from mcp import ClientSession, StdioServerParameters
from mcp.client.stdio import stdio_client
from langchain_mcp_adapters.tools import load_mcp_tools
from langgraph.prebuilt import create_react_agent
from langchain_openai import ChatOpenAI
import asyncio
# 使用 GPT-4o 作为 LLM 模型
model = ChatOpenAI(model="gpt-4o")
# 设置服务器参数
server_params = StdioServerParameters(
command="python",
# 请确保更新为 math_server.py
文件的完整绝对路径
args=["math_server.py"],
)
# 定义异步任务运行 agent
async def run_agent():
async with stdio_client(server_params) as (read, write):
async with ClientSession(read, write) as session:
# 初始化连接
await session.initialize()
# 加载工具
tools = await load_mcp_tools(session)
# 创建并运行 agent
agent = create_react_agent(model, tools)
agent_response = await agent.ainvoke({"messages": "what's (3 + 5) x 12?"})
return agent_response
# 运行异步函数
if __name__ == "__main__":
result = asyncio.run(run_agent())
print(result)
运行 MCP 客户端在终端中执行以下命令运行客户端:
python3 client.py
观察运行结果客户端会运行一次,并输出类似如下的结果:
{
"messages": [
{
"content": "what's (3 + 5) x 12?",
"id": "87a8b6b6-9add-4da7-aea5-1b197c0fc0f5"
},
{
"tool_calls": [
{
"id": "call_1eyRzR7WpKzhMXG4ZFQAJtUD",
"function": {
"arguments": "{"a": 3, "b": 5}",
"name": "add"
},
"type": "function"
},
{
"id": "call_q82CX807NC3T6nHMrhoHT46E",
"function": {
"arguments": "{"a": 8, "b": 12}",
"name": "multiply"
},
"type": "function"
}
]
},
{
"content": "The result of \(3 + 5\) \times 12\ is 96."
}
]
}
总结
MCP 是一个强大且便捷的方式,可以将 AI Agent 与外部信息和服务集成,从而提供更丰富的上下文和记忆能力。
热门API
- 1. AI文本生成
- 2. AI图片生成_文生图
- 3. AI图片生成_图生图
- 4. AI图像编辑
- 5. AI视频生成_文生视频
- 6. AI视频生成_图生视频
- 7. AI语音合成_文生语音
- 8. AI文本生成(中国)
最新文章
- GPT-OSS 模型驱动在线编程课 AI 助教,3 天打造追问式对话 API
- Kimi K2-0905 256K上下文API状态管理优化:长流程复杂任务实战
- Go工程化(四) API 设计上: 项目结构 & 设计
- 如何获取Dify AI API开放平台秘钥(分步指南)
- 手机号查询API:获取个人信息的便捷工具
- 大型项目中如何规避 Claude 限流风险?开发实战指南
- 为什么要编写高质量的在线API文档?
- 基于DeepSeek-V3.1开源技术的开发者社区应用审核API指南
- 2025 PHP REST API 快速入门指南:从零构建到实战
- TikTok API使用指南:短视频图像生成实践案例
- Java 生鲜电商平台 – API 接口设计之 token、timestamp、sign 具体架构与实现
- HIP-1217热点:DeFi镜像节点API实时gRPC流式余额校验实战