MCP协议与实践

一、MCP协议是什么?

MCP(模型上下文协议)是一个开放协议,用于标准化应用程序向大语言模型(LLM)提供上下文的方式。MCP提供了一种将AI模型连接不同数据源和工具的标准化接口。

  • 应用程序:集成了LLM的县体应用。包括各家大模型的在线对话网站、集成了大模型的IDE(如IClaudedesktop)、各种Agent(比如 Cursor就是一个Agent)、以及其他接入了大模型的普通应用。
  • 上下文:指的是模型在决策时可访问的所有信息,如当前用户输入、历史对话信息、外部工具(tool)信息、外部数据源(resource)信息、提示词(prompt)信息等等.

MCP 中的「上下文」不是指 prompt,而是:

👉 模型在"做事"时,可以持续感知、访问、使用的外部世界状态与能力集合。

它解决的是:

"模型如何在多轮、多任务、多工具下,保持对外部世界的一致理解"。

MCP 中的「上下文」可以拆成 3 层:

  1. 能力上下文:描述模型当前"能做什么",即可被发现和调用的工具、API 与权限集合;
  2. 状态上下文:描述模型"正在什么状态下工作",如当前项目、文件系统、数据库连接或任务进度;
  3. 执行上下文:记录模型"刚刚做了什么",包括已调用的工具、返回结果及执行成功或失败信息。

MCP 负责搭建一个稳定、真实、可持续的执行环境,并把这个环境的能力和状态以模型可理解的方式暴露出来;模型只负责在这个环境中做决策。

如果没有 MCP,上下文是"模型记住的世界";有了 MCP,上下文是"模型正在运行的世界"。

MCP的组成部分

  • MCP Host:协调和管理个或多个的人工智能应用程序。
  • MCP Client:一个组件,用于维护与MCP服务器的连接,并从MCP服务器获取上下文,供MCP主机使用。
  • MCP Server:一个为MCP Client提供上下文的程序。

对比

  1. 在function calling中调用外部工具,执行外部工具的永远是本地后端程序。在存在繁琐的代码搬运,代码语言的鸿沟,甚至有工具代码没有开源。
  2. Function calling解决的是大模型与AI应用程序之间的对话问题。它的工作是传递给大模型一个工具清单,然后模型返回一个文本格式的调用指令。Function call只负责告诉大模型有哪些工具,不关心这些工具在哪里,怎么调用。
  3. MCP解决的是AI应用程序和MCP Server之间的连接问题。它关系的是AI应用程序怎么知道mcp server有什么函数,在拿到模型返回的指令后,怎么去具体执行这个调用。
  4. MCP 没有替代 Function Calling。
    MCP 不负责
    • 定义函数参数格式;
    • 决定模型是否要调用某个函数;
    • 生成 function_call / tool_call JSON。
    • 这些依然是 模型侧能力(OpenAI / DeepSeek / Claude 内部实现)
  5. MCP 解决的问题
    MCP 解决的是 "模型运行时环境" 的标准化问题:
    • 模型现在能看到哪些工具
    • 这些工具的 schema / 权限 / 作用范围
    • 工具执行后的 状态是否持续
    • 不同模型能否用 同一套工具上下文
      👉 它是一个 上下文与能力托管协议(Runtime Context Protocol)
相关推荐
AC赳赳老秦31 分钟前
网页公开附件自动采集:OpenClaw 批量下载页面内嵌 Word/Excel 附件,统一格式后结构化入库
java·python·word·php·excel·deepseek·openclaw
北斗落凡尘32 分钟前
LangGraph 入门实战(3)
python·langchain
TAN-90°-42 分钟前
Deep Learning for Computer Vision——Image Classification with Linear Classifiers
python·深度学习·算法·计算机视觉·线性回归
AINative软件工程44 分钟前
LLM API 成本失控怎么办?工程师的实时异常检测指南
python
练习两年半的攻城狮44 分钟前
LlamaIndex ResponseMode 深度解析
python·llamaindex
小当家.1051 小时前
LLM结构化输出与流式响应:从JSON修复到SSE全链路
llm·json
阿pin1 小时前
Java随笔-红黑树
java·python·算法·红黑树
2603_965148111 小时前
eBay商品数据API:寻找海外仓与价格洼地
大数据·人工智能·windows·python·microsoft
2601_956319881 小时前
TqSdk Tick 数据适合做什么?获取方法与使用边界
人工智能·python