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

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(

相关文章:

  • AGV|无人叉车工业语音播报器|预警提示器LBE-LEX系列性能与接线说明
  • 《光子技术成像技术》第二章 预习2025.6.7
  • 低代码平台前端页面表格字段绑定与后端数据传输交互主要有哪些方式?华为云Astro在这方面有哪些方式?
  • 坚持每日Codeforces三题挑战:Day 4 - 题目详解(2025-06-07,难度:1000, 1100, 1400)
  • [AI绘画]sd学习记录(二)文生图参数进阶
  • 分享一道力扣
  • 实习学习项目
  • 6.7 打卡
  • OCR MLLM Evaluation
  • pikachu靶场通关笔记19 SQL注入02-字符型注入(GET)
  • Ubuntu2404 下搭建 Zephyr 开发环境
  • 数据类型 -- 字符
  • groovy:java 发送一封带有附件的邮件
  • SAP学习笔记 - 开发26 - 前端Fiori开发 OData V2 和 V4 的差异 (Deepseek整理)
  • excel中数字不满六位在左侧前面补0的方法
  • ClusterRole 和 ClusterRoleBinding 的关系及使用
  • 公路水运安全员B证的考试要点、速记口诀及备考指南
  • Shell 编程中的流程控制:从基础到实践
  • 阿里巴巴ROLL:大规模强化学习优化的高效易用解决方案
  • 当SAP系统内计划订单转换为生产订单时发生了什么?
  • 建设官方网站企业网站/网络营销推广论文
  • 网站推广策划报告航空航天/国外常用的seo站长工具
  • python做网站设计/企业网站的推广形式有
  • 新余网站制作/十大免费软文推广平台
  • 苏州网络推广苏州网站建设/优化关键词的方法正确的是
  • 个人备案网站放什么手续/怎样做好竞价推广