MCP核心能力

MCP概述

当不同的项目都需要接入同一个工具的时候,由于接口格式不统一,需要为每个服务定制解析逻辑、多平台兼容性差、模型侧需硬编码⼯具定义 (如函数名、参数 schema ) ,缺乏动态发现能⼒等问题,MCP(模型上下文协议)应运而生。

MCP不替代Tool Calling,二者的关系为:

Tool Calling是决策行为,模型决定"要不要调用工具"、"调用哪个工具"、"传什么参数"

MCP是"通信协议",规定"如何描述工具"、"如何发起调用"、"如何传递结果"、"如何管理会话状态"。

MCP是什么,更多参考: Model Context Protocol (MCP)

MCP传输方式

MCP主要支持客户端-服务器的通信传输机制。主要有两种方式:HTTP(streamable-http)与stdio。

自定义MCP服务器

我们要使用FastMCP来创建服务器。

HTTP

首先,在你的pycharm终端上输入"pip install fastmcp",然后,我们利用FastMCP创建服务器,填入的"Weather"是服务器名。接着,创建工具,最后,利用mcp.run来运行,填入参数transport是传输方式,后跟"streamable-http",再接port端口号(随便设就行)。

执行结果:

stdio

基本逻辑是相同的,只是在mcp.run的transport参数后跟"stdio"即可。

定义MCP客户端

首先,在终端里输入命令pip install langchain-mcp-adapters,我们要使用langchain-mcp-adapters让langchain Agent调用MCP服务器上定义的工具。

一、创建MultiServerMCPClient,配置多个服务器。

这里的"Math"与"Weather"是服务器名,参数的键transport,如果值为stdio,一个要有command,后跟python,表示python实现的,另一个要有args键,值为列表,列表内要有服务器的绝对路径。

如果值为streamable-http,只需要添加url就可以,这个服务器的url,就在刚才服务器的执行结果中。

二、调用client.get_tools()获取所有工具。这里由于是异步方法,前面要加await。

三、将工具传入create_agent。

由于是异步的,要通过asyncio.run(异步方法名())来执行结果。

执行前,要在两个服务器都在运行的基础上执行客户端,执行结果为:

有状态对话

默认情况下,MultiServerMCPClient是无状态的,每次调用工具都会创建一个新的MCPClientSession,执行完毕工具之后立即清理。

这里可以使用client.session()来创建持久的ClientSession,使用client.session(服务器名)配合load_mcp_tools加载工具。

我的gitee链接:https://gitee.com/QQ2240635095/langchain10_28.git

相关推荐
小林ixn2 小时前
从线性 RAG 到 Agentic RAG:用 LangGraph 搭一个会判断、会纠错、会兜底的检索闭环
langchain·llm·agent
kyrie_sakura2 小时前
大模型学习19 大模型学习 - LangChain2_Retrieval(RAG-文档处理-向量处理检索-Milvus)
学习·langchain·milvus
承渊政道4 小时前
【大模型应用开发:基于GPT-4和ChatGPT】(使用LangChain框架和插件增强LLM的功能)
chatgpt·langchain·llm·框架·大模型应用开发
日日大王学编程5 小时前
LangGraph 基本用法详解:从入门到实战
python·语言模型·langchain
奔跑的熊猫5 小时前
VSCode + FastAPI +AI Agent+langchain第一个程序
langchain·fastapi
Maiko Star7 小时前
*【HM-LC】Milvus向量库详解:Collection、索引、混合检索与LangChain实战
langchain·milvus
云和数据.ChenGuang14 小时前
Python 重写(Override)深度解析:从 MRO 到 super() 的完整机制
java·开发语言·人工智能·python·langchain·1024程序员节
云和数据.ChenGuang18 小时前
Python 单继承与多继承深度剖析:从 MRO 到实战取舍
开发语言·人工智能·python·langchain
全栈偏科生21 小时前
LangChain JS 入门:快速搭建前端 AI 开发环境
langchain