当前位置: 首页 > news >正文

【NLP】将 LangChain 与模型上下文协议 (MCP) 结合使用

  🔎大家好,我是Sonhhxg_柒,希望你看完之后,能对你有所帮助,不足请指正!共同学习交流🔎

📝个人主页-Sonhhxg_柒的博客_CSDN博客 📃

🎁欢迎各位→点赞👍 + 收藏⭐️ + 留言📝​

📣系列专栏 - 机器学习【ML】 自然语言处理【NLP】  深度学习【DL】

 🖍foreword

✔说明⇢本人讲解主要包括Python、机器学习(ML)、深度学习(DL)、自然语言处理(NLP)等内容。

如果你对这个系列感兴趣的话,可以关注订阅哟👋

一、MCP出现的目的

MCP 的出现是为了解决大型语言模型 (LLM) 应用程序的一个关键限制,即它们与外部数据源和工具的隔离。

基于 LLM 的应用的重点领域之一是数据传输。将数据传送到 LLM 进行推理,这是 RAG 实现的目标,而微调和 MCP 的目标也是如此。

MCP 的主要目的是标准化基于 LLM 的应用程序如何连接到不同的系统,如下图所示:

二、消除定制集成

AI 代理面临的挑战是将数据传递给 AI 代理,或者换句话说,将基于 AI 代理/LLM 的应用程序集成到外部数据源。

人们曾多次尝试利用 GUI、Web 浏览器和 Web 搜索来实现无缝集成。这些方法各有优缺点。

MCP 具有作为通用接口发挥作用的潜力,可以将其视为 AI 的 USB-C 的虚拟/软件版本。

实现 LLM/AI 代理和外部资源之间的无缝、安全和可扩展的数据交换。

MCP 采用客户端-服务器架构,其中 MCP 主机(AI 应用程序)与 MCP 服务器(数据/工具提供商)进行通信

开发人员可以使用MCP构建可重复使用的模块化连接器,并为流行平台提供预构建的服务器,从而创建社区驱动的生态系统。

MCP 的开源特性鼓励创新,允许开发人员扩展其功能,同时通过细粒度权限等功能保持安全性。

最终,MCP 旨在将 AI 代理从孤立的聊天机器人转变为深度集成到数字环境中的情境感知、可互操作的系统。

三、分步说明

Anthropic 的模型上下文协议 (MCP) 是一个开源协议,用于将 LLM 与上下文、工具和提示连接起来。它拥有越来越多的用户,可用于连接各种工具或数据源。在这里,我们将演示如何将任何 MCP 服务器连接到 LangGraph 代理并使用 MCP 工具……

如果您像我一样,获得一个原型作品,无论它多么简单,都会带来极大的清晰感和理解力;至少在我自己看来是这样。

首先,打开一个终端应用程序(WIN+R输入CMD)。

使用conda创建python虚拟环境用来运行代码;下面的命令创建了名为langchain_mcp_env的虚拟环境。

conda create -n langchain_mcp_env python=3.11.11

然后运行此命令来激活(进入)虚拟环境:

conda activate langchain_mcp_env langchain_openai langgraph

按顺序运行以下代码行:

pip install langchain-mcp-adapters

在一个终端选项卡中,创建一个文本文件:

vim math_server.py

并粘贴以下python代码:

from mcp.server.fastmcp import FastMCPmcp = FastMCP("Math_MCP")@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@mcp.tool()
def sub(a: int, b: int) -> int:"""Multiply two numbers"""return a - b@mcp.tool()
def divide(a: int, b: int) -> float:"""Multiply two numbers"""return (a / b)if __name__ == "__main__":mcp.run(transport="stdio")

现在我们要使用ollama运行模型服务……

使用ollama自定义qwen2.5:7b模型名称为gpt-4o(避免不能进行工具调用)

ollama cp qwen2.5:7b gpt-4o:latest 

启动ollama模型服务

ollama serve

 创建一个文件来粘贴客户端代码:

vim client.py

将以下代码粘贴到文件中: 

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 asynciomodel = ChatOpenAI(base_url="http://localhost:11434/v1",api_key="EMPTY",model="gpt-4o")server_params = StdioServerParameters(command="python",# Make sure to update to the full absolute path to your math_server.py fileargs=["math_server.py"],
)async def run_agent():async with stdio_client(server_params) as (read, write):async with ClientSession(read, write) as session:# Initialize the connectionawait session.initialize()# Get toolstools = await load_mcp_tools(session)# Create and run the agentagent = create_react_agent(model, tools)agent_response = await agent.ainvoke({"messages": "计算下面算术题给出最终答案:(4 + 5 -3) x (12÷3) -11 ?"})return agent_response# Run the async function
if __name__ == "__main__":result = asyncio.run(run_agent())print("调用工具列表如下:\n")print(result['messages'][1].tool_calls)print("大模型各个步骤输出:\n")print('\n==============================\n'.join([i.content for i in result['messages']]))

使用以下命令运行客户端: 

python client.py

客户端将运行一次并以以下输出结束: 

四、结论

MCP 是一种将 AI 代理与提供上下文和记忆的信息和服务相集成的便捷方式。MCP 通过标准化接口与模块化设计,打破了大型语言模型(LLM)与外部数据源、工具的隔离壁垒,实现了数据传输与功能集成的高效化与通用化。其客户端 - 服务器架构不仅支持开发者构建可复用的连接器(如数学计算工具示例),还通过开源生态与细粒度权限管理,推动 AI 代理从孤立的聊天机器人向深度融入数字环境的情境感知系统进化。从 RAG 的数据推理到模型微调,MCP 为 LLM 应用提供了统一的数据交互范式,助力 AI 工具链在跨平台、跨系统场景下实现安全、可扩展的无缝协同,成为推动 AI 应用落地的关键基础设施。

 

相关文章:

  • 华为OD机试真题——模拟工作队列(2025A卷:200分)Java/python/JavaScript/C/C++/GO最佳实现
  • bat 批处理通过拖拽,来获取拖入文件的信息
  • Linux之高效文本编辑利器 —— vim
  • 【动态规划】子数组系列(二)
  • CSP 2024 提高级第一轮(CSP-S 2024)阅读程序第一题解析
  • Typora中文直装版
  • 2025.5.28总结
  • 2. 数据结构基本概念 (2)
  • Uniapp+UView+Uni-star打包小程序极简方案
  • 设计模式-装饰模式
  • Day05
  • 深度解析 Dockerfile 配置:构建高效轻量的FastAPI 应用镜像
  • Docker Desktop无法在windows低版本进行安装
  • JS逆向 QQ音乐sign签名|webpack实战 (上)
  • RocksDB
  • 对比RFX2401C:AT2401C功率放大器的性价比与PIN兼容方案
  • 2025年5月AI科技领域周报(5.19-5.25):大模型多模态突破 具身智能开启机器人新纪元
  • qt ubuntu 20.04 交叉编译
  • jq checked选中触发事件
  • 代码输出题:异步事件循环
  • 网站效果图怎么做/百度seo点击
  • 网站建设智能优化/做任务赚佣金一单10块
  • 重庆做网站制作的公司/厦门seo顾问
  • 做澳洲外贸的网站有哪些/贵州seo技术查询
  • 企业网站 留言板/品牌推广活动有哪些
  • 动态网站开发的语言/台州百度快照优化公司