MCP简介
MCP(Model Context Protocol,模型上下文协议)2024年11月底由 Antbropic 推出的一种开放标准,旨在统一大型语言模型(LLM)与外部数据源和工具之间的通信协议。
Function Calling是AI模型调用函数的机制,MCP是一个标准协议,使AI模型与API无缝交互,而Al Agent是一个自主运行的智能系统,利用FunctionCallinq和MCP来分析和执行任务,实现特定目标。
Function Calling 现在基本上被淘汰了,现在几乎全部都用MCP了。
MCP通信机制
MCP 协议支持三种主要的通信机制:
- 基于标准输入输出的本地通信(stdio),这个通信协议企业中不会用。
- 基于SSE(Server-Sent Events)的远程通信。是一种基于HTTP协议的单向通信协议,允许服务器以事件流的形式实时向客户端推送数据,而无需客户端明确请求。MCP中的SSE Transport结合了SSE技术和HTTP POST
- Streamable HTTP是MCP协议推荐的下一代传输机制(2025年3月26日),基于标准HTTP协议实现动态流式升级的传输方式,它移除了专用SSE端点,所有消息通过端点传输,服务器可根据需要将普通HTTP请求升级为SSE流,支持流式响应。
HTTP+SSE的缺陷
-
不支持恢复连接
如果客户端和服务器之间的 sSE 连接中断了,就无法“从端点继续”,只能重新开始新的连接,之前的上下文可能会丢失。 -
要求服务器保持高可用的长连接
服务器必须一直保持一个稳定、不中断的sSE长连接,否则通信就中断。 -
服务器只能通过ss发送消息
服务器无法在已有的请求之外,主动地发送消息给客户端,除了通过专门的/sse 通道,换句话说,它是“单向被动响应”而不是“任意时机推送”。
MCP架构
MCP工作流程
代码实战
mcp server
# 导入FastMCP库 - 用于快速构建MCP服务器的Python框架
from fastmcp import FastMCP
# 创建MCP服务器实例
# name='test_mcp': 服务器名称(在客户端连接时显示)
# instructions="测试mcp": 服务器功能描述(帮助AI理解服务器用途)
mcp_server = FastMCP(name='test_mcp', instructions="测试mcp")
# 使用装饰器注册工具函数
# @mcp_server.tool(): 声明下面的函数是MCP工具
# 工具:让AI模型能调用的外部功能(如计算器、数据库查询等)
@mcp_server.tool()
def