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

MCP详解

前言:AI能力跃迁的“最后一公里”

当前,大语言模型(LLMs)已展现出文本生成、逻辑推理等通用能力,但其与真实世界的交互仍存在瓶颈。传统模式下,开发者需为每个外部工具(如数据库、API、文件系统)编写定制化接口,导致开发周期长、兼容性差、安全风险高。而​​模型上下文协议(Model Context Protocol,MCP)​​的诞生,如同为AI应用装上了标准化的“USB-C接口”,实现了“即插即用”的跨系统交互能力。本文将从技术原理、核心价值到实战应用,深度解析这一革新性协议。

一、什么是MCP

MCP 起源于 2024 年 11 月 25 日 Anthropic 发布的文章:Introducing the Model Context Protocol。MCP (Model Context Protocol,模型上下文协议)定义了应用程序和 AI 模型之间交换上下文信息的方式。这使得开发者能够以一致的方式将各种数据源、工具和功能连接到 AI 模型(一个中间协议层),就像 USB-C 让不同设备能够通过相同的接口连接一样。MCP 的目标是创建一个通用标准,使 AI 应用程序的开发和集成变得更加简单和统一。

二、为什么要用MCP

出发点:更结构化的上下文信息对模型的 performance 提升是显著的,所以在构造 prompt 时,希望能提供一些更 specific 的信息给模型,便于模型理解真实场景中的问题。

在没有MCP的时代,LLM使用者需要自行手动将specific的信息拷贝出来,构建新的Prompt,然后提交给LLM总结使用。随着要解决的问题越来越复杂,手工引入的specific信息也会越来越多,人工粘贴构建成为LLM工具使用的效率瓶颈。

这也是后来许多 LLM 平台引入了 function call 功能的原因。function call允许模型在需要时调用预定义的函数来获取数据或执行操作,显著提升了自动化水平。

Function Call 是“工具增强”​​,让大模型突破自身限制,调用外部能力,但也有局限性。如一个 Agent 让LLM 调用工具,步骤如下:

(1)写好函数工具

开发者需要在本地写好函数工具,例如,如果想让LLM学会查询天气,我们需要在本地写好一个查询天气的函数

(2)写好函数的介绍(这个很关键)

LLM将会函数的介绍,理解函数的作用。函数介绍包括:函数的作用、参数的类型、参数的作用等。例如,DeepSeek的函数介绍格式如下:

tools = [{"type": "function","function": {"name": "get_weather","description": "Get weather of an location, the user shoud supply a location first","parameters": {"type": "object","properties": {"location": {"type": "string","description": "The city and state, e.g. San Francisco, CA",}},"required": ["location"]},}
}, ]

这是一个天气查询的函数,参数为location,LLM将会通过这些介绍,学会如何调用函数。

(3)解析响应,并在本地执行函数

若DeepSeek认为当前应该调用函数,则会输出参数的填写方式,格式如下:

{"message": {"role": "assistant","content": "","tool_calls": [{"index": 0,"id": "call 0_c2fd458f-b1e3-43a0-b76a-c9138e609678","type": "function","function": {"name": "get_weather","arguments": "{\"location\":\"Beijing\"}"}}]}
}

我们可以通过解析message中是的tool_calls字段,将DeepSeek给出的参数填写在函数中,并在本地执行函数。

(4)LLM根据运行结果进行总结并回复

最后把函数执行的结果反馈给DeepSeek,DeepSeek再整理执行结果,给出回复。

Agent 开发 三大痛点

1 开发耦合度高

工具开发者需要深入了解 Agent 的内部实现细节,并在 Agent 层编写工具代码。这导致在工具的开发与调试困难。
2 工具复用性差

因每个工具实现都耦合在 Agent 应用代码内,即使是通过 API 实现适配层在给到 LLM 的出入参上也有区别。

3 生态碎片化

工具提供方能提供的只有 OpenAPI,由于缺乏标准使得不同 Agent 生态中的工具 Tool 互不兼容。例如,OpenAI 的函数调用方式与 Google 的不兼容。

数据与工具本身是客观存在的,期望大模型链接数据的时候可以更智能更统一。Anthropic 基于这样的痛点设计了 MCP,充当 AI 模型的"万能转接头",让 LLM 能轻松的获取数据或者调用工具。更具体的说 MCP 的优势在于:

  • 生态 - MCP 提供很多现成的插件,你的 AI 可以直接使用。
  • 统一性 - 不限制于特定的 AI 模型,任何支持 MCP 的模型都可以灵活切换,一次适配所有场景。
  • 数据安全 - MCP 内置权限控制和加密机制,比直接开放数据库更安全。
  • 推动AIAgent的进化-MCP 让大模型从“被动应答”变为“主动调用工具”。

三、MCP的结构

mcp官方的架构图为:

MCP 由三个核心组件构成:Client 、 Server和具体的资源

MCP Servers主要功能:MCP Servers 作为一个轻量级的本地服务,旨在为客户端提供数据访问和功能执行的接口。

  • MCP Server部署在哪里

      <
http://www.xdnf.cn/news/7445.html

相关文章:

  • Python中的整型(int)和浮点数(float)
  • 哈希表和哈希函数
  • 养生攻略:打造活力健康日常
  • 《 二级指针:解锁指针的进阶魔法》
  • GPT/Claude3国内免费镜像站更新 亲测可用
  • 活学妙用——5W2H分析法
  • 【java第17集】java流程控制语句详解
  • 按键太频繁导致,报不应该报的错误!
  • 秒删node_modules 极速删除 (rimraf工具)
  • Linux grep 命令详解:常用选项、参数及实战场景
  • 基于SpringBoot的家政预约系统
  • 以下是 MySQL 中常用到的 英语单词和词组 的全面分类整理,涵盖数据库操作、SQL语句、函数、配置等核心内容
  • 监控易:一体化集成平台,打破运维壁垒
  • 通过子接口(Sub-Interface)实现三层接口与二层 VLAN 接口的通信
  • bat 批处理获取日期、时间
  • vue3自适应高度超出折叠功能
  • 【DNS寻址之旅】从敲下网址到网页呈现:DNS的“第一次亲密接触”**
  • 聊聊更新中断和更新事件那些事儿
  • 【C++】不推荐使用的std::allocator<void>
  • 对于程序员的个人理解
  • 机器学习第十七讲:PCA → 把100维数据压缩成3D视图仍保持主要特征
  • 【机器人】复现 3D-Mem 具身探索和推理 | 3D场景记忆 CVPR 2025
  • 【STM32】ST-Link V2.1制作
  • 软件工程第六章-详细设计
  • Git 使用全攻略:从入门到精通
  • 牛客网NC209794:使徒袭来
  • 2025年PMP 学习二十一 14章 项目立项管理
  • 系统安全及应用深度笔记
  • (已解决:基于WSL2技术)Windows11家庭中文版(win11家庭版)如何配置和使用Docker Desktop
  • Java大数据机器学习模型在金融衍生品风险建模中的创新实践