初识 MCP(Model Context Protocol) 基本概念

admin 2025年4月7日01:01:31评论38 views字数 8816阅读29分23秒阅读模式

初识 MCP(Model Context Protocol) 基本概念

背景

之前Manus一夜爆火, 然后一夜跌下神坛, 号称“全球首款通用Agent产品”,但是有个5人小团队,仅花了三个小时,就搞出一个OpenManus项目,和Manus一模一样。这种采用饥饿营销,营销力度大于能力肯定是不能持续的。

但是方向是对的,以后一定是Agent 的天下。

但是Manus做法是从产品角度推动这个事情,技术本身没有什么创新。Claude的母公司Anthropic, 提出的另外一种解法,从统一标准协议出发提出Agent落地的通用规范,创建生态标准,虽然不够劲爆,但是肯定更长久。

目前Agent落地的三种方式:

  • 开源的Agent构建项目: modelscope-agent, fastGPT, dify;

  • 商业的Agent构建平台: 字节coze, 百度AppBuilde;

  • 开发者调用LLM API,字节写代码构建agent,这部分提供了极大的遍历,和生态级别的扩展和支持;

MCP是什么

MCP 起源于 2024 年 11 月 25 日 Anthropic 发布的文章:Introducing the Model Context Protocol

MCP (Model Context Protocol,模型上下文协议)定义了应用程序和 AI 模型之间交换上下文信息的方式。这使得开发者能够以一致的方式将各种数据源、工具和功能连接到 AI 模型(一个中间协议层),就像 USB-C 让不同设备能够通过相同的接口连接一样。

MCP 的目标是创建一个通用标准,使 AI 应用程序的开发和集成变得更加简单和统一。 

初识 MCP(Model Context Protocol) 基本概念

可以看出,MCP 就是以更标准的方式让 LLM Chat 使用不同工具,更简单的可视化如下图所示,这样你应该更容易理解“中间协议层”的概念了。Anthropic 旨在实现 LLM Tool Call 的标准。

初识 MCP(Model Context Protocol) 基本概念

为什么是MCP

我们知道过去一年时间,AI 模型的发展非常迅速,从 GPT 4 到 Claude Sonnet 3.5 到 Deepseek R1,推理和幻觉都进步的非常明显。

新的 AI 应用也很多,但我们都能感受到的一点是,目前市场上的 AI 应用基本都是全新的服务,和我们原来常用的服务和系统并没有集成,换句话说,AI 模型和我们已有系统集成发展的很缓慢。

例如我们目前还不能同时通过某个 AI 应用来做到联网搜索、发送邮件、发布自己的博客等等,这些功能单个实现都不是很难,但是如果要全部集成到一个系统里面,就会变得遥不可及。

如果你还没有具体的感受,我们可以思考一下日常开发中,想象一下在 IDE 中,我们可以通过 IDE 的 AI 来完成下面这些工作。

  • 询问 AI 来查询本地数据库已有的数据来辅助开发

  • 询问 AI 搜索 Github Issue 来判断某问题是不是已知的bug

  • 通过 AI 将某个 Code Review 的意见发送给同事的钉钉

  • 通过 AI 查询、修改当前 AWS、Azure 的配置来完成部署

以上谈到的这些功能通过 MCP 目前正在变为现实。

为什么 AI 集成已有服务的进展这么缓慢?这里面有很多的原因,一方面是企业级的数据很敏感,大多数企业都要很长的时间和流程。另一个方面是技术方面,我们缺少一个开放的、通用的、有共识的协议标准

MCP 就是一个开放的、通用的、有共识的协议标准。

这里还是要多提一句,这个协议的发布最好机会应该是属于 OpenAI 的,如果 OpenAI 刚发布 GPT 时就推动协议,相信大家都不会拒绝,但是 OpenAI 变成了 CloseAI,只发布了一个封闭的 GPTs,这种需要主导和共识的标准协议一般很难社区自发形成,一般由行业巨头来主导。

Claude 发布了 MCP 后,官方的 Claude Desktop 就开放了 MCP 功能,并且推动了开源组织 Model Context Protocol

在 23 年 OpenAI 发布 GPT function calling 的时候,不是也是可以实现类似的功能吗?为什么又出现了 MCP?

为了克服手工 prompt 的局限性,许多 LLM 平台(如 OpenAI、Google)引入了 function call 功能。这一机制允许模型在需要时调用预定义的函数来获取数据或执行操作,显著提升了自动化水平。

但是 function call 也有其局限性, function call 平台依赖性强,不同 LLM 平台的 function call API 实现差异较大。例如,OpenAI 的函数调用方式与 Google 的不兼容,开发者在切换模型时需要重写代码,增加了适配成本。 

Anthropic 基于这样的痛点设计了 MCP,充当 AI 模型的"万能转接头",让 LLM 能轻松的获取数据或者调用工具。 

MCP能做什么

举个生活化的例子:假设你是一个班长,每天要处理很多班级事务:查班级成绩表(Excel 文件存在电脑里),收集同学反馈(微信群里聊天记录),安排值日表(在线文档)。

传统方式:你需要自己打开 Excel、翻微信记录、编辑在线文档,手动整理信息,耗时费力。

使用 MCP 后,你直接对 AI 说:“帮我查一下最近数学考试的平均分,把不及格的同学名单整理到值日表里,并在微信群提醒他们补考。”AI 会自动完成:用 “万能插头” MCP 连接你的电脑,读取 Excel 成绩。用 MCP 连接微信,找到相关聊天记录。用 MCP 修改在线文档,更新值日表。整个过程不需要你手动操作,数据也不会离开你的设备,安全又高效。

MCP 厉害的地方在于,不用重复造轮子。过去每个软件(比如微信、Excel)都要单独给 AI 做接口,现在 MCP 统一了标准,就像所有电器都用 USB-C 充电口,AI 一个接口就能连接所有工具。

而且,数据不用上传到云端,AI 直接在本地处理。比如你的成绩单只存在自己电脑里,AI 通过 MCP 读取分析,但数据不会外泄。

MCP 会让 AI 更 “懂” 上下文,比如你让 AI “总结上周班会的重点”,它能自动调取会议录音、聊天记录、笔记文档,综合这些信息给你答案,而不是凭空编造。所以,MCP 为 AI 应用提供了一个强大的工具,使其能够更灵活、更安全地与外部世界交互。

引入各种各样的MCP Sever能力,可以大大扩展一些AI工具的能力,比如我们常用的Cursor和Claude

以下是官方参考服务器展示了 MCP 核心功能和 SDK 的使用:

数据和文件系统

  • 文件系统 - 具有可配置访问控制的安全文件操作

  • PostgreSQL - 具有架构检查功能的只读数据库访问

  • SQLite - 数据库交互和商业智能功能

  • Google Drive - Google Drive 的文件访问和搜索功能

开发工具

  • Git - 用于读取、搜索和操作 Git 仓库的工具

  • GitHub - 仓库管理、文件操作和 GitHub API 集成

  • GitLab - 支持项目管理的 GitLab API 集成

  • Sentry - 从 Sentry.io 获取和分析问题

Web 和浏览器自动化

  • Brave Search - 使用 Brave 的搜索 API 进行网络和本地搜索

  • Fetch - 为 LLM 使用优化的网络内容获取和转换

  • Puppeteer - 浏览器自动化和网页抓取功能

生产力和通信

  • Slack - 频道管理和消息功能

  • Google Maps - 位置服务、路线和地点详情

  • Memory - 基于知识图谱的持久记忆系统

AI 和专业工具

  • EverArt - 使用各种模型的 AI 图像生成

  • Sequential Thinking - 通过思维序列进行动态问题解决

  • AWS KB Retrieval - 使用 Bedrock Agent Runtime 从 AWS Knowledge Base 检索

官方集成的工具

这些 MCP 服务器由公司维护,用于其平台:

  • Axiom - 使用自然语言查询和分析日志、跟踪和事件数据

  • Browserbase - 在云端自动化浏览器交互

  • Cloudflare - 在 Cloudflare 开发者平台上部署和管理资源

  • E2B - 在安全的云沙箱中执行代码

  • Neon - 与 Neon 无服务器 Postgres 平台交互

  • Obsidian Markdown Notes - 读取和搜索 Obsidian 知识库中的 Markdown 笔记

  • Qdrant - 使用 Qdrant 向量搜索引擎实现语义记忆

  • Raygun - 访问崩溃报告和监控数据

  • Search1API - 用于搜索、爬虫和网站地图的统一 API

  • Tinybird - 与 Tinybird 无服务器 ClickHouse 平台交互

社区的一些工具

不断发展的社区开发服务器生态系统扩展了 MCP 的功能:

  • Docker - 管理容器、镜像、卷和网络

  • Kubernetes - 管理 pod、部署和服务

  • Linear - 项目管理和问题跟踪

  • Snowflake - 与 Snowflake 数据库交互

  • Spotify - 控制 Spotify 播放和管理播放列表

  • Todoist - 任务管理集成

更多的可以查看社区服务器列表: MCP Servers Repository

MCP Architecture架构

MCP核心架构

这里首先引用 官方的 MCP 架构图

初识 MCP(Model Context Protocol) 基本概念

MCP 遵循客户端-服务器架构(client-server),其中包含以下几个核心概念:

  • MCP 主机(MCP Hosts):希望通过 MCP 发起请求的LLM应用程序(例如 Claude Desktop、IDE 或 AI 工具);

  • MCP 客户端(MCP Clients):在主机程序内部,与 MCP server 保持 1:1 的连接的协议客户端

  • MCP 服务器(MCP Servers):轻量级程序,过标准化MCP协议为 MCP client 提供上下文、工具和 prompt 信息;

  • 本地资源(Local Resources):本地计算机中可供 MCP server 安全访问的资源(例如文件、数据库);

  • 远程资源(Remote Resources):MCP server 可通过互联网连接到的远程资源(例如通过 API);

举个通俗易懂的例子

假设你正在使用一个 AI 编程助手来帮助你写代码。

这个 AI 助手就是一个 MCP 主机。MCP 服务器就像是一个中介,它连接了一些外部资源,比如代码库、文档或者调试工具和 AI 助手。

  • 当你需要查找某个函数的用法时,AI 助手通过 MCP 客户端向 MCP 服务器发送请求。

  • MCP 服务器接收到请求后,去代码库或文档中查找相关信息。

  • 找到信息后,MCP 服务器将结果返回给 AI 助手。

  • AI 助手根据返回的信息,生成一段代码或解释,展示给你。

整个 MCP 协议核心的在于 Server

看看 Cursor 的 AI Agent 发展过程,我们会发现整个 AI 自动化的过程发展会是从 Chat 到 Composer 再进化到完整的 AI Agent。

  • AI Chat 只是提供建议,如何将 AI 的 response 转化为行为和最终的结果,全部依靠人类,例如手动复制粘贴,或者进行某些修改。

  • AI Composer 是可以自动修改代码,但是需要人类参与和确认,并且无法做到除了修改代码之外的其它操作。

  • AI Agent 是一个完全的自动化程序,未来完全可以做到自动读取 Figma 的图片,自动生产代码,自动读取日志,自动调试代码,自动 push 代码到 GitHub。

而 MCP Server 就是为了实现 AI Agent 的自动化而存在的,它是一个中间层,告诉 AI Agent 目前存在哪些服务,哪些 API,哪些数据源,AI Agent 可以根据 Server 提供的信息来决定是否调用某个服务,然后通过 Function Calling 来执行函数。

初识 MCP(Model Context Protocol) 基本概念

MCP工作原理

MCP Client

MCP client 充当 LLM 和 MCP server 之间的桥梁,MCP client 的工作流程如下:

  • MCP client 首先从 MCP server 获取可用的工具列表。

  • 将用户的查询连同工具描述通过 function calling 一起发送给 LLM。

  • LLM 决定是否需要使用工具以及使用哪些工具。

  • 如果需要使用工具,MCP client 会通过 MCP server 执行相应的工具调用。

  • 工具调用的结果会被发送回 LLM。

  • LLM 基于所有信息生成自然语言响应。

  • 最后将响应展示给用户。

Claude Desktop 和Cursor都支持了MCP Server接入能力,它们就是作为 MCP Host+ Client来连接某个MCP Server感知和实现调用。

MCP Server

MCP server 是 MCP 架构中的关键组件,它可以提供 3 种主要类型的功能:

  • 资源(Resources):类似文件的数据,可以被客户端读取,如 API 响应或文件内容。

  • 工具(Tools):可以被 LLM 调用的函数(需要用户批准)。

  • 提示(Prompts):预先编写的模板,帮助用户完成特定任务。

这些功能使 MCP server 能够为 AI 应用提供丰富的上下文信息和操作能力,从而增强 LLM 的实用性和灵活性。

可以在 MCP Servers Repository 和 Awesome MCP Servers 这两个 repo 中找到许多由社区实现的 MCP server。 

让我们通过一个实际场景来理解这些组件如何协同工作:

假设你正在使用 Claude Desktop (Host) 询问:"我桌面上有哪些文档?"

  1. Host:Claude Desktop 作为 Host,负责接收你的提问并与 Claude 模型交互。

  2. Client:当 Claude 模型决定需要访问你的文件系统时,Host 中内置的 MCP Client 会被激活。这个 Client 负责与适当的 MCP Server 建立连接。

  3. Server:在这个例子中,文件系统 MCP Server 会被调用。它负责执行实际的文件扫描操作,访问你的桌面目录,并返回找到的文档列表。

整个流程是这样的:你的问题 → Claude Desktop(Host) → Claude 模型 → 需要文件信息 → MCP Client 连接 → 文件系统 MCP Server → 执行操作 → 返回结果 → Claude 生成回答 → 显示在 Claude Desktop 上。

这种架构设计使得 Claude 可以在不同场景下灵活调用各种工具和数据源,而开发者只需专注于开发对应的 MCP Server,无需关心 Host 和 Client 的实现细节。

原理:模型是如何确定工具的选用的?

一个问题:Claude(模型)是在什么时候确定使用哪些工具的呢? Anthropic 为我们提供了详细的解释

当用户提出一个问题时:

  1. 客户端(Claude Desktop / Cursor)将你的问题发送给 Claude。

  2. Claude 分析可用的工具,确定使用哪些 MCP Server。

  3. 客户端通过 MCP Server 执行所选的工具。

  4. 工具的执行结果被送回给 Claude,并对执行结果进行重新处理。

  5. Claude 结合执行结果构造最终的 prompt 并生成自然语言的回应。

  6. 回应最终展示给用户!

先给出一个简单可视化帮助理解:

初识 MCP(Model Context Protocol) 基本概念

MCP通信机制

MCP 协议支持两种主要的通信机制:基于标准输入输出的本地通信STDIO 和 HTTP+SSE(Server-Sent Events)的远程通信。

这两种机制都使用 JSON-RPC 2.0 格式进行消息传输,确保了通信的标准化和可扩展性。

  • 本地通信:通过 stdio 传输数据,适用于在同一台机器上运行的客户端和服务器之间的通信。

  • 远程通信:利用 SSE 与 HTTP 结合,实现跨网络的实时数据传输,适用于需要访问远程资源或分布式部署的场景。

传输方式

适用场景

STDIO

本地进程间通信,如 AI 助手集成到本地应用

HTTP+SSE

远程交互,如 LLM 访问外部 API,支持流式推送

随着 MCP 生态的扩展,涌现了多个 MCP 服务器,支持不同功能:

服务器类别

示例

数据访问

PostgreSQL、SQLite、Google Drive

开发工具

Git、GitHub、GitLab

网页自动化

Puppeteer(浏览器控制)、Brave Search

生产力工具

Slack、Google Maps、Todoist

AI 相关工具

EverArt(图像生成)、CoinGecko(加密货币分析)

MCP 的基本工作流程:

  • 初始化连接:客户端向服务器发送连接请求,建立通信通道。

  • 发送请求:客户端根据需求构建请求消息,并发送给服务器。

  • 处理请求:服务器接收到请求后,解析请求内容,执行相应的操作(如查询数据库、读取文件等)。

  • 返回结果:服务器将处理结果封装成响应消息,发送回客户端。

  • 断开连接:任务完成后,客户端可以主动关闭连接或等待服务器超时关闭。

初识 MCP(Model Context Protocol) 基本概念

MCP与API对比

API , Function calling、AI Agent、MCP 之间有什么区别

Model Context Protocol (MCP)

  • MCP 是一个标准协议,如同电子设备的 Type C 协议(可以充电也可以传输数据),使 AI 模型能够与不同的 API 和数据源无缝交互。

  • MCP 旨在替换碎片化的 Agent 代码集成,从而使 AI 系统更可靠,更有效。通过建立通用标准,服务商可以基于协议来推出它们自己服务的 AI 能力,从而支持开发者更快的构建更强大的 AI 应用。开发者也不需要重复造轮子,通过开源项目可以建立强大的 AI Agent 生态。

  • MCP 可以在不同的应用/服务之间保持上下文,从而增强整体自主执行任务的能力。

MCP 与传统 API 的对比

特性

MCP

传统 API

集成方式

统一连接器,一次接入多个工具

每个 API 需要单独集成

通信方式

实时双向,支持数据拉取和操作执行

请求-响应模式

复杂性

抽象底层逻辑,减少开发难度

每个 API 需要独立实现

标准化

统一协议,跨工具兼容

接口和数据格式各异

开发工作量

适用于多工具,减少代码重复

需要大量自定义代码

MCP 与 Function Calling 的区别

Function Calling

  • Function Calling 指的是 AI 模型根据上下文自动执行函数的机制。

  • Function Calling 充当了 AI 模型与外部系统之间的桥梁,不同的模型有不同的 Function Calling 实现,代码集成的方式也不一样。由不同的 AI 模型平台来定义和实现。

如果我们使用 Function Calling,那么需要通过代码给 LLM 提供一组 functions,并且提供清晰的函数描述、函数输入和输出,那么 LLM 就可以根据清晰的结构化数据进行推理,执行函数。

Function Calling 的缺点在于处理不好多轮对话和复杂需求,适合边界清晰、描述明确的任务。如果需要处理很多的任务,那么 Function Calling 的代码比较难维护。

  • MCP(Model Context Protocol),模型上下文协议

  • Function Calling,函数调用

这两种技术都旨在增强 AI 模型与外部数据的交互能力,但 MCP 不止可以增强 AI 模型,还可以是其他的应用系统。

初识 MCP(Model Context Protocol) 基本概念

AI Agent

  • AI Agent 是一个智能系统,它可以自主运行以实现特定目标。传统的 AI 聊天仅提供建议或者需要手动执行任务,AI Agent 则可以分析具体情况,做出决策,并自行采取行动。

  • AI Agent 可以利用 MCP 提供的功能描述来理解更多的上下文,并在各种平台/服务自动执行任务。

MCP学习资料

如何使用 MCP

对于用户来说,我们并不关心 MCP 是如何实现的,通常我们只考虑如何更简单的用上。

不需要自己开发 MCP Servers,MCP 的好处就是通用、标准,所以开发者并不需要重复造轮子(但是学习可以重复造轮子)

具体的使用方式参考官方文档:For Claude Desktop Users。配置成功后可以在 Claude 中测试:Can you write a poem and save it to my desktop? Claude 会请求你的权限后在本地新建一个文件。

并且官方也提供了非常多现成的官方的 MCP Server 列表,你只需要选择你希望接入的工具,然后接入即可。

  • Awesome MCP Servers

  • MCP Servers Website

  • Official MCP Servers

比如官方介绍的 filesystem 工具,它允许 Claude 读取和写入文件,就像在本地文件系统中一样。

目前社区的 MCP Server 还是比较混乱,有很多缺少教程和文档,很多的代码功能也有问题,我们可以自行尝试一下 Cursor Directory 的一些例子

目前支持的部分工具列表(更多见这里):

客户端

资源

提示

工具

备注

Claude 桌面应用

所有MCP 功能

Zed

提示以斜杠命令形式出现

Sourcegraph Cody

通过OpenCTX 支持资源

Firebase Genkit

⚠️

支持资源列表和查找

Continue

支持所有MCP功能

GenAIScript

支持工具

Cursor

支持工具

扩展阅读

  • 官方教程:Introduction - Model Context Protocol

  • 中文站:https://mcpcn.com (不确定是否官方)

  • 协议源码:https://github.com/modelcontextprotocol (含mcp核心源码/各种sdk)

框架和实践

  • 各种语言实现示例:https://github.com/punkpeye/awesome-mcp-servers

  • FastMCP框架:https://github.com/jlowin/fastmcp (一个python快速开发mcp server的框架)

  • Cursor里配置:https://docs.cursor.com/advanced/model-context-protocol (cursor里面加mcp server说明)

  • 970+MCP Servers:https://www.pulsemcp.com/servers (970多个MCP Servers)

社区的 MCP Server 的列表

  • Cursor Directory, Cursor MCP

  • Pulsemcp

  • Glama MCP Servers

  • 官方的 MCP Server 列表

  • Claude Blog

参考文章

  • MCP (Model Context Protocol),一篇就够了。 - 知乎

  • 火爆 AI 编程圈的 MCP 到底是个什么东西? - 知乎

  • 模型上下文协议 (MCP) 详解与应用场景分析

  • 一文看懂什么是MCP(大模型上下文)?用来干什么的?怎么用它? - AI全书

  • MCP 终极指南

  • Introduction - Model Context Protocol

原文始发于微信公众号(风物长宜 AI):初识 MCP(Model Context Protocol) 基本概念

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2025年4月7日01:01:31
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   初识 MCP(Model Context Protocol) 基本概念http://cn-sec.com/archives/3912938.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息