欢迎光临
我们一直在努力

什么是智能体:简单了解MCP

MCP的概念

MCP(Model Context Protocol,模型上下文协议)是一种标准化协议,用于连接大语言模型和外部工具。它定义了模型与工具之间的通信方式,使得模型能够调用外部工具来获取信息、执行操作,从而扩展其能力范围。前面的文章《什么是智能体:从概念认知到平台选型》有讲过智能体的应用搭建,MCP也很重要,有些自己实现的工具,可以用这种插件的方式进行开发后再平台上进行注册。

在传统的大语言模型应用中,模型只能基于训练数据和用户输入生成内容,无法与外部系统交互。而通过MCP协议,大语言模型可以调用外部工具,如地理信息查询、价格计算、数据库查询等,从而获取实时信息,执行复杂操作,提高生成内容的准确性和实用性。

MCP的核心价值

MCP协议的核心价值在于:

  • 能力扩展:突破大语言模型的知识边界,使其能够访问实时信息和专业工具
  • 智能协作:实现模型与工具的智能协作,让模型专注于决策和推理,工具专注于执行具体任务
  • 标准化接口:提供统一的接口规范,简化工具集成和开发流程
  • 上下文保持:在多轮对话中保持上下文信息,提供连续一致的用户体验
  • 可插拔架构:支持工具的动态注册和管理,实现灵活的功能扩展
  • MCP与传统API调用的对比

    特性MCP协议传统API调用
    调用方式 模型自主决策调用 开发者硬编码调用
    上下文管理 自动保持上下文 需要手动管理上下文
    工具发现 模型自动发现可用工具 开发者需要了解所有API
    参数处理 自动参数验证和转换 需要手动验证和转换
    错误处理 标准化错误处理机制 每个API需要单独处理
    扩展性 高度可扩展,支持动态注册 扩展性受限,需要修改代码

    常用MCP框架

    目前,常用的MCP框架包括:

    框架特点适用场景优势劣势
    FastMCP 轻量级MCP实现,本项目使用的框架 中小型应用、快速原型开发 简单易用、性能优异、启动快速 功能相对基础,生态较小
    LangChain 功能丰富的大语言模型应用开发框架 复杂应用、企业级项目 生态丰富、工具集成多、支持多种模型 学习曲线较陡、配置复杂
    LlamaIndex 专注于知识增强的大语言模型应用 知识密集型应用、文档处理 强大的文档处理能力、检索增强生成 工具集成相对有限
    OpenAI Functions OpenAI官方提供的函数调用机制 OpenAI模型专用场景 与OpenAI模型深度集成、官方支持 仅支持OpenAI模型、通用性差

    框架选择建议

    选择MCP框架时,应考虑以下因素:

  • 项目规模:小型项目推荐FastMCP,大型项目可考虑LangChain
  • 功能需求:知识密集型应用优先LlamaIndex,通用应用可选择LangChain
  • 模型兼容性:使用OpenAI模型可考虑OpenAI Functions,多模型场景推荐LangChain
  • 性能要求:对性能要求高的场景推荐FastMCP
  • 开发效率:快速开发和原型验证推荐FastMCP
  • MCP的实现细节

    MCP的核心组件

    MCP协议的实现主要包含以下核心组件:

  • 服务端:负责注册和管理工具,处理模型的调用请求
  • 客户端:负责与服务端通信,发送工具调用请求并接收结果
  • 工具注册表:存储所有可用工具的信息,包括名称、参数、描述等
  • 参数验证器:验证和转换输入参数,确保参数类型正确
  • 上下文管理器:在多轮对话中保持上下文信息
  • 错误处理器:处理工具调用过程中的错误,返回标准化的错误信息
  • MCP的工作原理

    MCP协议的工作流程如下:

  • 工具注册:开发者通过装饰器将函数注册为MCP工具
  • 服务启动:MCP服务启动并监听指定端口
  • 模型发现:模型通过API获取可用工具列表和描述
  • 工具调用:模型根据用户需求选择合适的工具并发送调用请求
  • 参数处理:服务端验证和转换输入参数
  • 执行工具:调用实际的工具函数执行具体任务
  • 结果返回:将工具执行结果返回给模型
  • 结果处理:模型根据工具返回的结果生成最终响应
  • 实现步骤详解

    以之前学习时候智能调价系统为例,MCP的实现主要包括以下几个核心步骤:

    1. 初始化MCP服务

    首先,创建一个FastMCP实例作为智能调价服务的核心,并加载必要的依赖和环境变量:

    from fastmcp import FastMCP
    from dotenv import load_dotenv

    # 加载环境变量
    load_dotenv()

    # 创建FastMCP实例
    mcp = FastMCP("smart-pricing-assistant")

    # 可选:服务预热,提高首次请求响应速度
    async def warmup_service():
    # 预热大语言模型客户端
    # 预热高德地图API连接
    # 预热地理位置编码服务
    pass

    2. 定义智能调价工具

    使用@mcp.tool()装饰器注册智能调价相关的工具函数,供大语言模型调用:

    核心工具函数:

    • gen_pricing_suggestions:为民宿生成定价建议
    • gen_market_analysis:生成市场分析报告

    工具注册流程:

  • 定义异步函数并添加@mcp.tool()装饰器
  • 声明函数参数和返回类型
  • 编写函数文档字符串,说明参数用途和返回值
  • 实现核心业务逻辑
  • 智能调价工具的主要功能:

    • 接收房源信息(房型、位置、卧室数、浴室数、容纳人数等)
    • 获取地理位置和周边信息(通过高德地图API)
    • 分析市场数据和竞争对手价格
    • 优先使用大语言模型生成定价建议
    • 大语言模型调用失败时回退到本地算法
    • 返回结构化的定价建议和市场分析
    3. 启动智能调价MCP服务

    配置服务地址和端口,启动监听:

    # 启动智能调价MCP服务
    mcp.run(
    transport="sse",
    host="0.0.0.0",
    port=8002,
    path="/mcp",
    log_level="debug",
    )

    感兴趣的同学可以去查查SSE的方式,这里不细说。

    4. 客户端调用智能调价工具

    大语言模型通过HTTP请求调用智能调价工具:

    from fastmcp import Client

    async def test_smart_pricing():
    async with Client("http://localhost:8001/mcp") as client:
    # 获取可用工具列表
    tools = await client.get_tools()

    # 调用定价建议工具
    pricing_result = await client.call_tool(
    "gen_pricing_suggestions",
    {
    "property_type": "公寓",
    "location": "北京市朝阳区三里屯",
    "bedrooms": "2",
    "bathrooms": "1",
    "guest_capacity": "4",
    "season": "旺季",
    "facilities": ["WiFi", "空调", "洗衣机", "冰箱"],
    "competitor_prices": ["800", "850", "900", "950"]
    }
    )

    # 调用市场分析工具
    market_analysis_result = await client.call_tool(
    "gen_market_analysis",
    {
    "location": "北京市朝阳区三里屯",
    "season": "旺季"
    }
    )

    5. MCP工作流程总结

    完整的MCP工作流程:

  • 工具注册:开发者通过装饰器将函数注册为MCP工具
  • 服务启动:MCP服务启动并监听指定端口
  • 模型发现:大语言模型通过API获取可用工具列表和描述
  • 工具调用:模型根据用户需求选择合适的工具并发送调用请求
  • 参数处理:服务端验证和转换输入参数
  • 执行工具:调用实际的工具函数执行具体任务
  • 结果返回:将工具执行结果返回给模型
  • 结果处理:模型根据工具返回的结果生成最终响应
  • 智能调价系统的MCP优势:

    • 标准化接口:统一的工具注册和调用方式
    • 智能决策:模型自主选择合适的工具
    • 实时数据:通过API获取实时的地理位置和周边信息
    • 双模式处理:支持大语言模型和本地算法双模式
    • 容错机制:网络异常时自动回退到本地算法
    • 灵活扩展:支持动态注册新的工具和功能

    总结

    MCP(模型上下文协议)是一种标准化协议,用于连接大语言模型和外部工具,使模型能够调用工具获取信息、执行操作,从而扩展其能力范围。在本文,只是一下MCP的一些概念为主,不会很详细讲一个完善的开发,后面的文章会有MCP的开发后怎么在蚂蚁百宝箱上进行注册使用。

    赞(0)
    未经允许不得转载:171主机测评 » 什么是智能体:简单了解MCP
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址