模型上下文协议(MCP)于2024年11月由Anthropic推出并开源 ,迅速成为关注焦点。作为一种开放标准协议,MCP致力于统一大型语言模型(LLM)与外部数据源、工具及系统的连接方式,堪称AI世界里的“万能插座” 。
如今,AI应用日益复杂,模型与外部系统集成难题凸显。早期模型多依赖静态训练数据,“孤岛式”特性使其难与外部交互。定制化API虽尝试连接,但每个数据源都需独立开发接口,成本飙升且扩展性差。MCP的出现,有效化解了这些痛点。
本文为大家深入剖析MCP,并介绍怎样借助LangChain MCP适配器搭建服务器和客户端。虽然Claude桌面版能充当客户端,不过自主创建客户端,能赋予开发者更多掌控权与定制空间。
一、MCP概述
MCP可与预制工具、智能体协同使用,在大型模型应用中占据重要地位。在实际需求中,大型模型需要与各类数据和工具集成,以拓展功能,MCP恰好能满足这一需求,助力在大型模型基础上搭建复杂工作流程。
直接使用大语言模型(LLMs)获取输出并非最佳选择,因其可能产生幻觉,生成错误或无意义的内容。大型模型与工具协同工作时,同样存在幻觉风险。而利用人工智能工具获取正确答案虽可行,但为每个工具编写自定义代码难度较大,操作过程繁琐复杂。
大型模型可以与工具协同工作,但这可能会导致产生幻觉
MCP的优势就在于,它提供了一种标准方式,实现大型模型与不同数据源、人工智能工具的连接,可视为大型模型与工具间的中间层。借助MCP,开发者无需从头创建自定义工具,只需构建MCP,即可实现智能体与人工智能驱动工具的连接。
MCP 作为中间层,能够实现智能体与工具的连接
MCP的应用还不止于此,通过构建MCP服务器与客户端,可实现二者交互。服务器能连接客户端,客户端也能与各类MCP服务器进行数据交互。
接下来,借助LangChain MCP适配器,详细介绍搭建服务器与客户端的具体步骤,帮助大家将MCP的理论知识应用于实际开发。
二、准备工作
首先,从构建自己的服务器开始。
使用Python创建一个虚拟环境。
python -m venv.venv
之后,激活这个环境。
.venv\Scripts\activate
接下来,安装所需的库。为此,创建一个名为requirements.txt的文件。
mkdir requirements.txt
现在,写入我们要安装的库。
langchain-mcp-adapters
langgraph
langchain-openai
安装这些库。
pip install -r requirements.txt
我们的库已准备就绪。
注意,如果你没有设置OpenAI API密钥,可以使用以下命令:
setx OPENAI_API_KEY "<yourkey>" # 适用于Windows
export OPENAI_API_KEY=<your_api_key> # 适用于MacOS和Linux
现在,继续构建MCP服务器。
三、搭建专属 MCP 服务器
这个服务器能帮你进行数字的加法和乘法运算。为了展示这一点,首先创建名为math_server.py的文件。
mkdir math_server.py
准备创建服务器。
# 构建一个MCP服务器
from mcp.server.fastmcp import FastMCP
# 初始化类
mcp = FastMCP("Math")
接下来,创建用于数字相加的工具。首先使用mcp.tool
装饰器。
@mcp.tool()
def add(a: int, b: int) -> int:
return a + b
设置第二个MCP工具,再次使用mcp.tool
装饰器。
@mcp.tool()
def multiply(a: int, b: int) -> int:
return a * b
MCP工具已准备就绪。
最后,要创建这个服务器,使用run
方法。
if __name__ == "__main__":
# 启动一个通过标准输入/输出进行通信的进程
mcp.run(transport="stdio")
接下来,我们要构建客户端。
四、创建 MCP 客户端
这个客户端能帮助你连接到刚刚创建的MCP服务器。首先,创建一个名为client.py的文件。
mkdir client.py
接下来,像这样创建一个客户端:
from mcp import ClientSession, StdioServerParameters
ClientSession
用于管理客户端和服务器之间的会话,而StdioServerParameters
用于定义MCP客户端如何通过标准输入/输出连接到服务器。
使用这个类创建服务器参数。
server_params = StdioServerParameters(
command="python",
args=["math_server.py"],
)
这样就定义了智能体如何通过标准输入/输出连接到外部工具。
现在,定义模型。导入ChatOpenAI
类。
from langchain_openai import ChatOpenAI
model = ChatOpenAI(model="gpt-4o")
之后,导入stdio_client
,这是一个用于启动MCP客户端的函数。
from mcp.client.stdio import stdio_client
现在,使用server_params
启动MCP客户端。为了查看输出,定义一个函数。
async def run_agent():
asyncwith stdio_client(server_params) as (read, write):
# 打开一个MCP会话,与math_server.py工具进行交互
asyncwith ClientSession(read, write) as session:
# 初始化会话
await session.initialize()
# 加载工具
tools = await load_mcp_tools(session)
# 创建一个ReAct智能体
agent = create_react_agent(model, tools)
# 运行智能体
agent_response = await agent.ainvoke(
# 现在,输入我们的问题
{"messages": "what's (4 + 6) x 14?"})
# 返回响应
return agent_response["messages"][3].content
智能体可能会同时使用GPT-4o和math_server工具来计算并返回答案。最后,运行我们的异步函数。
if __name__ == "__main__":
result = asyncio.run(run_agent())
print(result)
就这样,我们的服务器和客户端都可以使用了。
五、输出
首先,在终端中使用以下代码运行服务器:
python math_server.py
服务器已启动并正在运行。
接下来,运行客户端。
打开一个新终端并输入:
python client.py
# 输出
140
我们会在这里看到输出。客户端返回了140。
六、结语
通过以上步骤,成功完成了基于MCP和LangChain MCP适配器的服务器与客户端搭建。MCP作为AI开发领域的创新技术,为大型语言模型与外部资源的连接提供了高效方案,而LangChain MCP适配器则进一步简化了开发流程。
希望本文能帮助大家对MCP有更深入的理解,并在实际开发中灵活运用。技术的发展日新月异,未来MCP有望在更多领域发挥重要作用,期待大家持续关注并积极探索,不断挖掘MCP的潜力,为AI技术的发展贡献力量。
那么,如何系统的去学习大模型LLM?
作为一名从业五年的资深大模型算法工程师,我经常会收到一些评论和私信,我是小白,学习大模型该从哪里入手呢?我自学没有方向怎么办?这个地方我不会啊。如果你也有类似的经历,一定要继续看下去!这些问题啊,也不是三言两语啊就能讲明白的。
所以我综合了大模型的所有知识点,给大家带来一套全网最全最细的大模型零基础教程。在做这套教程之前呢,我就曾放空大脑,以一个大模型小白的角度去重新解析它,采用基础知识和实战项目相结合的教学方式,历时3个月,终于完成了这样的课程,让你真正体会到什么是每一秒都在疯狂输出知识点。
由于篇幅有限,⚡️ 朋友们如果有需要全套 《2025全新制作的大模型全套资料》,扫码获取~
👉大模型学习指南+路线汇总👈
我们这套大模型资料呢,会从基础篇、进阶篇和项目实战篇等三大方面来讲解。
👉①.基础篇👈
基础篇里面包括了Python快速入门、AI开发环境搭建及提示词工程,带你学习大模型核心原理、prompt使用技巧、Transformer架构和预训练、SFT、RLHF等一些基础概念,用最易懂的方式带你入门大模型。
👉②.进阶篇👈
接下来是进阶篇,你将掌握RAG、Agent、Langchain、大模型微调和私有化部署,学习如何构建外挂知识库并和自己的企业相结合,学习如何使用langchain框架提高开发效率和代码质量、学习如何选择合适的基座模型并进行数据集的收集预处理以及具体的模型微调等等。
👉③.实战篇👈
实战篇会手把手带着大家练习企业级的落地项目(已脱敏),比如RAG医疗问答系统、Agent智能电商客服系统、数字人项目实战、教育行业智能助教等等,从而帮助大家更好的应对大模型时代的挑战。
👉④.福利篇👈
最后呢,会给大家一个小福利,课程视频中的所有素材,有搭建AI开发环境资料包,还有学习计划表,几十上百G素材、电子书和课件等等,只要你能想到的素材,我这里几乎都有。我已经全部上传到CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费
】
相信我,这套大模型系统教程将会是全网最齐全 最易懂的小白专用课!!