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

MCP系列(一)什么是MCP?

MCP 是什么:从 USB-C 到 AI 的「万能接口」哲学

MCPModel Context Protocol,模型上下文协议) 是Anthropic于2024年11月推出的AI跨系统交互标准,专为解决LLM(大语言模型)的「数字失语症」——让AI既能安全调用外部工具(如实时天气API、本地文件系统),又能避免数据泄露或滥用。它本质是AI世界的「USB-C协议」:通过标准化的「请求-响应-通知」格式(如context_request强制携带权限声明),让不同厂商的LLM(如Claude、GPT-4o)和工具(如 cursor、ClaudeDesktop、5ire)无需适配私有协议,就能像「U盘插入电脑」一样即插即用。

就像USB-C让手机、电脑、打印机用同一接口通信,MCP定义了AI的「数字握手规则」:

  • 统一语法:所有工具必须按mcp_schema_v3格式暴露能力(如天气工具的nameparametersdescription),LLM通过capability_negotiation动态协商权限(比如只允许查询上海天气,禁止获取用户定位);

  • 安全隔离:内置「宪法AI」审查每个工具调用(如阻止「用病历数据优化保险定价」的请求),敏感操作需「用户+模型+工具」三方授权,避免AI越权;

  • 即插即用:开发者只需按协议编写工具(如用Python实现tools/call接口),无需关心LLM是云端还是本地部署,5ire客户端能自动发现并调用符合MCP的工具,就像电脑自动识别新U盘。

MCP与Function Calling: 从「模型专属」到「协议共生」

先给出几个基本概念

Function Calling(函数调用)

  • 本质:大模型基座的「能力适配器」,允许模型通过结构化指令调用外部工具(如 API、数据库)。

  • 问题:非标准化 —— 不同模型(如 GPT-4o、DeepSeek)的函数调用协议(参数格式、触发逻辑、返回结构)存在差异。 例:GPT-4o 要求函数参数为JSON object,DeepSeek 可能要求key-value字符串,导致同一功能(如天气查询)需为每个模型单独开发。

MCP(Model-API Communication Protocol,模型 - API 通信协议)

  • 目标:定义跨模型的标准化交互语言,解决「函数调用协议碎片化」问题。

  • 核心设计:

    • 统一请求 / 响应格式(如强制使用mcp_schema_v1的 JSON 结构);

    • 标准化函数元数据(name/description/parameters);

    • 错误处理协议(如MCPErrorCode枚举)。

AI Agent(智能体)

  • 定位:MCP 生态的「超级用户」,通过「意图解析→MCP 函数调用→结果整合」闭环自主完成复杂任务。

  • 优势:MCP 让 Agent 摆脱对单一模型的依赖,实现「一次开发,多模型运行」。

以GPT-4o和DeepSeek为例,看看FuctionCall实现的差异,以及MCP如何跨模型

维度

GPT-4o 函数调用(非 MCP)

DeepSeek 函数调用(非 MCP)

MCP 标准协议(统一后)

触发指令

function_call: {"name": "...", ...}

tools: [{"name": "...", "parameters": ...}]

mcp_action: {"function": "...", ...}

参数格式

严格 JSON 对象

允许 JSON 或键值对字符串

强制 JSON Schema(含type/enum校验)

返回结构

直接返回 API 结果

包裹result字段({"result": ...})

统一mcp_response(含status/data/error)

错误处理

模型自定义错误码(如1001)

无统一错误格式

标准化MCP_ERROR_*枚举(如INVALID_PARAM)

MCP Client/Server 架构

详见 Introduction - Model Context Protocol

如何开发 / 使用 MCP

MCP 的官网提供了详尽的文档和 SDK,开发者只需遵循这些资源即可轻松实现 MCP。

  • Model Context Protocol 介绍

  • MCP Server 开发

  • MCP Client 开发

http://www.xdnf.cn/news/4518.html

相关文章:

  • yolov8n-obb训练rknn模型
  • 解决二分类问题常用的模型以及优缺点和使用场景(二)
  • 重生之我在2024学Fine-tuning
  • 系统 Python 与 Conda 环境的灵活切换
  • 前端面经-VUE3篇(五)--内置组件
  • 【计算机架构】RISC(精简指令集计算机)架构
  • ABAP使用GET_TAX_PERCENTAGE 函数取税率
  • 手写 Vue 源码 === 完善依赖追踪与触发更新
  • FPGA 纯逻辑NVME raid0 IP核
  • 通配符 DNS 记录:应用场景与相关风险
  • SWiRL:数据合成、多步推理与工具使用
  • [吾爱出品][Windows] 产品销售管理系统2.0
  • Java UUID生成如何保证唯一性?深入解析与最佳实践
  • 【Redis】C++如何使用redis
  • java中ArrayList扩容机制的解析
  • 转换算子和行动算子的区别
  • 扩散模型(Diffusion Models)的革命性进展
  • 智算中心的搭建标准
  • Sat2Density论文详解——卫星-地面图像生成
  • @Transactional注解的使用
  • LangChain第三讲:大模型的输出如何格式化成字符串?
  • DIFY教程第五弹:科研论文翻译与SEO翻译应用
  • 简单的基于关键词匹配的 QA 系统示例
  • ICode国际青少年编程竞赛—Python—4级训练场—复杂嵌套循环
  • 多线程的出现解决了什么问题?深入解析多线程的核心价值
  • 力扣——25 K个一组翻转链表
  • 写个远程操作Android的调试程序
  • 【Linux篇】多线程编程中的互斥与同步:深入理解锁与条件变量的应用
  • Nginx 性能调优与深度监控
  • 7. HTML 表格基础