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

MCP详解及协议的使用(python版本和Node版本)

MCP详解及协议的使用

🧩 一、MCP详解

1、✅ MCP 是什么?

MCP 是一种统一协议,使得 语言模型(LLM)能以结构化方式与外部系统进行交互,支持多轮、多工具、多模态(文本、图像、音频等)调用。

它类似于一种“操作系统中的系统调用协议”,让模型不只是聊天,而是真正地“调用”外部服务。

2、🔧 能用来做什么?应用场景

2.1. ✅调用函数 / API(函数调用 Function Calling)

例如:

用户输入:“帮我查一下明天上海的天气,并推荐附近的餐馆。”

模型识别出两个意图:

  • 先调用 getWeather(location=“上海”) 获取天气
  • 再调用 findNearbyRestaurants(location=“上海”)

模型通过 MCP 协议请求这两个工具,组合响应内容再生成回答

2.2. ✅插件系统的底层机制

MCP 是 OpenAI 插件系统的底层协议。比如:

  • 文件上传分析插件
  • 数据库查询插件
  • 网络搜索插件(如 Bing、Klarna)

这些插件的调用流程背后都遵循 MCP。

2.3. ✅中间调度器(Tool Router)

MCP 允许构建“中间调度系统”:

  • 模型只负责推理出“需要调用哪些工具”
  • 调度器根据模型的指令逐个调用函数、组合结果,再反馈给模型

这使得系统具备“多步逻辑处理能力”,比如:

问“帮我订一张明天下午从北京飞上海的机票”,模型自动调用:

  • 航班查询
  • 用户账户信息获取
  • 订单创建与支付
2.4. ✅支持多模态输入和输出

随着 GPT-4o 支持图像/语音,MCP 也能支持:

  • 传入图片给模型分析(如图像 OCR、识别表格、分析图纸)
  • 模型返回语音/图像/视频等格式的结果
  • 混合调用工具链,如上传 PDF 后提取表格、再用图表库绘图
2.55、🛠️ MCP 的核心组成
成分作用 、
tool_calls模型发出工具调用请求,包含工具名、参数等
tool_response外部系统处理请求后的响应数据(可以是 JSON)
function_callingOpenAI 提供的轻量实现方式,MCP 的子集
intermediate steps工具调用步骤的中间过程,帮助模型持续更新对话状态

🧩 二、简单的使用架构

      ┌──────────────┐         TCP / WebSocket / HTTP│   Client     │  ─────────────────────────────►  ┌────────────┐│              │                                 │ MCP Server ││  发出请求    │                                 │            │└──────────────┘                                 └────────────┘│▼┌──────────────────────┐│ Tool Registry         ││  - tool_1             ││  - tool_2             │└──────────────────────┘

基于 MCP 协议的服务端连接客户端模块,通过 stdio 与服务端子进程通信。这种设计模式通常用于:

  • 启动一个可交互的子进程服务器(如 MCP server)

  • 使用 标准输入输出(stdin/stdout)作为通信通道

  • 异步初始化会话,并获取工具列表

🧩 三、MCP协议的使用(Python版本)

连接服务端以及和服务端子进程通信:

  async def connect_to_server(self, server_script_path: str):r'''连接到MCP服务器首先启动服务端,然后初始化会话最后获取可用工具列表'''is_python = server_script_path.endswith('.py')command = "python" if is_python else "node"print(f"🛠️  启动服务端命令: {command} {server_script_path}")# 构造一个 StdioServerParameters 对象,常用于设置一个# 通过标准输入输出(stdin/stdout)与主程序通信的子进程服务器script_dir = os.path.abspath(
http://www.xdnf.cn/news/12592.html

相关文章:

  • 【HarmonyOS 5.0】DevEco Testing:鸿蒙应用质量保障的终极武器
  • cv2.stereoRectify中R1, R2, P1, P2, Q中每一个分量的物理意义
  • grep、wc 与管道符快速上手指南
  • Linux八股【3】-----系统框架概述
  • SpringBoot项目接口集中测试方法及实现
  • 2.4 vcpkg 使用
  • Vue中渲染函数的使用
  • Promise深入理解
  • 【靶场】yzmcms5.3.0 SSRF漏洞
  • 分享一道力扣
  • 又是一年高考季
  • mariadb5.5.56在centos7.6环境安装
  • python怎么读shape文件?
  • GPU集群故障分析:大型AI训练中的硬件问题与影响
  • 408第一季 - 数据结构 - 字符串和KMP算法
  • 快速了解:单北斗终端的定义、作用与好处!
  • Qt(part 2)1、Qwindow(菜单栏,工具栏,状态栏),铆接部件,核心部件 ,2、添加资源文件 3、对话框
  • 随访系统安装的记录
  • 【Hot 100】84. 柱状图中最大的矩形
  • 数据库管理与高可用-MySQL高可用
  • 编程基础:执行流
  • Profinet转CanOpen网关模块:铝业车间通信“破壁者”,引领工业新变革
  • MS2691 全频段、多模导航、射频低噪声放大器芯片,应用于导航仪 双频测量仪
  • win32相关(IAT HOOK)
  • 【RTSP从零实践】1、根据RTSP协议实现一个RTSP服务
  • STM32什么是寄存器
  • 24、std::hash
  • conda环境配置(一) —— 常用虚拟环境操作命令
  • 新时代AI发展,更好的做自己
  • 第1讲、包管理和环境管理工具Conda 全面介绍