AIGCAgent MCP 模型上下文协议 AI Agent应用与外部系统集成的标准协议
AIGCAgent MCP 模型上下文协议 AI Agent应用与外部系统集成的标准协议
火爆 AI 编程圈的 MCP 到底是个什么东西? * 最近,如果你经常使用 AI 编程的话,肯定听到过 MCP 这个概念
- 那到底什么是 MCP 呢?
- AI 应用层的开发并没有多少新的东西,大体还是老三样:
Prompt、RAG、Agent。 但是自从 2024 年 11 月底 Claude (Anthropic) 主导发布了 MCP(Model Context Protocol 模型上下文协议) 后,AI 应用层的开发算是进入了新的时代。 MCP 就是以更标准的方式让 LLM Chat 使用不同工具,更简单的可视化如下图所示 这样你应该更容易理解“中间协议层”的概念了。Anthropic 旨在实现 LLM Tool Call 的标准。 # 概述:MCP
MCP 定义
- 先从专业角度讲,
MCP就是Anthropic(Claude) 主导发布的一个AI Agent框架领域的、开放的、通用的、有共识的协议标准。 Model Context Protocol(MCP)
MCP 功能与作用
- MCP 是一个标准协议,就像给 AI 大模型装了一个 “万能接口”,让 AI 模型能够与不同的数据源和工具进行无缝交互。
- MCP 旨在替换碎片化的 Agent 代码集成,从而使 AI 系统更可靠,更有效。
- 通过建立通用标准,服务商可以基于协议来推出它们自己服务的 AI 能力,支持开发者更快的构建更强大的 AI 应用。
- 开发者也不需要重复造轮子,通过开源项目可以建立强大的 AI Agent 生态。
- MCP 可以在不同的应用 / 服务之间保持上下文,增强整体自主执行任务的能力。
MCP 是一个标准协议,如同电子设备的
Type C协议(可以充电也可以传输数据),使 AI 模型能够与不同的 API 和数据源无缝交互。 ## MCP 的必要性 - 举例:目前不能同时通过某个 AI 应用做到联网搜索、发送邮件、发布博客等,MCP 可解决集成问题。
MCP 优势
- 标准化 :MCP 提供了一种统一的通信协议,使得不同的 AI 应用可以更容易地集成和扩展。
- 灵活性 :通过 MCP,AI 应用可以连接到各种数据源和工具,增强了其功能和适用性。
- 安全性 :MCP 确保了数据传输的安全性,保护了用户的隐私和数据安全。
生活化例子
- 假设班长使用 MCP 处理班级事务,如查成绩、收集反馈、安排值日表,高效且安全。
- 举个通俗易懂的例子:假设你正在使用一个 AI 编程助手来帮助你写代码。这个 AI 助手就是一个 MCP 主机。 它需要访问一些外部资源,比如代码库、文档或者调试工具。 MCP 服务器就像是一个中介,它连接了这些资源和 AI 助手。 * 当你需要查找某个函数的用法时,AI 助手通过 MCP 客户端向 MCP 服务器发送请求。
- MCP 服务器接收到请求后,去代码库或文档中查找相关信息。
- 找到信息后,MCP 服务器将结果返回给 AI 助手。
- AI 助手根据返回的信息,生成一段代码或解释,展示给你。
- 再举个生活化的例子:假设你是一个班长,每天要处理很多班级事务:查班级成绩表(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 是一个突破?
- 过去一年时间(2024年),AI 模型的发展非常迅速,从 GPT 4 到 Claude Sonnet 3.5 到 Deepseek R1,推理和幻觉都进步的非常明显。 新的 AI 应用也很多,但我们都能感受到的一点是,目前市场上的 AI 应用基本都是全新的服务,和我们原来常用的服务和系统并没有集成,换句话说, AI 应用 和我们 已有系统集成 发展的很缓慢。 MCP没有出现前,在开发的过程中,将 AI 模型集成现有的系统或者第三方系统确实挺麻烦。 虽然市面上有一些框架支持 Agent 开发,例如 LangChain Tools, LlamaIndex 或者是 Vercel AI SDK。 ``` LangChain 和 LlamaIndex 虽然都是开源项目,但是整体发展还是挺混乱的,首先是代码的抽象层次太高了,想要推广的都是让开发人员几行代码就完成某某 AI 功能,这在 Demo 阶段是挺好用的,但是在实际开发中,只要业务一旦开始复杂,糟糕的代码设计带来了非常糟糕的编程体验。还有就是这几个项目都太想商业化了,忽略了整体生态的建设。
还有一个就是 Vercel AI SDK,尽管个人觉得 Vercel AI SDK 代码抽象的比较好,但是也只是对于前端 UI 结合和部分 AI 功能的封装还不错,最大的问题是和 Nextjs 绑定太深了,对其它的框架和语言支持度不够。
所以 Claude 推动 MCP 可以说是一个很好的时机,首先是 Claude Sonnet 3.5 在开发人员心中有较高的地位,而 MCP 又是一个开放的标准,所以很多公司和社区都愿意参与进来,希望 Claude 能够一直保持一个良好的开放生态。
---- from guangzhengli.com/blog/zh/mod…
例如,我们目前还不能同时通过某个 AI 应用来做到联网搜索、发送邮件、发布自己的博客等等 这些功能单个实现都不是很难,但是如果要全部集成到一个系统里面,就会变得遥不可及。 * 如果你还没有具体的感受,我们可以思考一下日常开发中,想象一下在 IDE 中,我们可以通过 IDE 的 AI 来完成下面这些工作。
* 询问 AI 来查询本地数据库已有的数据来辅助开发
* 询问 AI 搜索 Github Issue 来判断某问题是不是已知的bug
* 通过 AI 将某个 PR 的意见发送给同事的即时通讯软件(例如 Slack)来 Code Review
* 通过 AI 查询甚至修改当前 AWS、Azure 的配置来完成部署
上述这些功能通过 `MCP` 目前正在变为现实,大家可以关注 Cursor MCP 和 Windsurf MCP 获取更多的信息。 可以试试用 Cursor MCP + browsertools 插件来体验一下在 Cursor 中自动获取 Chrome dev tools console log 的能力。 * 为什么 AI 集成已有服务的进展这么缓慢?
这里面有很多的原因,一方面是 企业级的数据很敏感 ,大多数企业都要很长的时间和流程来动。 另一个方面是 技术方面 ,我们缺少一个开放的、通用的、有共识的 协议标准 。 * `MCP` 就是 `Claude` ( `Anthropic` ) 主导发布的一个开放的、通用的、有共识的协议标准。
## 如果你是一个对 AI 模型熟悉的开发人员,想必对 Anthropic 这个公司不会陌生
他们发布了 Claude 3.5 Sonnet 的模型,到目前为止应该还是最强的编程 AI 模型(就在2025年2月底,发布了更震撼的3.7)。
## 这类协议的发布最好机会应该是属于 OpenAI 的,如果 OpenAI 刚发布 GPT 时就推动协议,相信大家都不会拒绝。
但是 OpenAI 变成了 CloseAI,只发布了一个封闭的 GPTs
这种需要主导和共识的标准协议一般很难社区自发形成,一般由行业巨头来主导。
`Claude` 发布了 MCP 后,官方的 `Claude Desktop` 就开放了 MCP 功能,并且推动了 开源组织 `Model Context Protocol` ,由不同的公司和社区进行参与,例如下面就列举了一些由不同组织发布 MCP 服务器的例子。 ## 为什么是 MCP?Function Calling、AI Agent、MCP 这三者之间有什么区别?
* 看到这里你可能有一个问题,在 23 年 OpenAI 发布 GPT function calling 的时候,不是也是可以实现类似的功能吗?
我们之前博客介绍的 AI Agent,不就是用来集成不同的服务吗?为什么又出现了 MCP。 ### Function Calling / 函数调用
* `Function Calling` 指的是 AI 模型 根据 上下文 自动执行 函数 的机制。
* `Function Calling` 充当了 AI 模型 与 外部系统 之间的桥梁, 不同的AI模型 有不同的 `Function Calling` 实现
代码集成的方式也不一样。由不同的 AI 模型平台来定义和实现。 如果我们使用 `Function Calling` ,那么需要通过代码给 `LLM` 提供一组 `functions` ,并且提供清晰的函数描述、函数输入和输出,> 那么 LLM 就可以根据清晰的结构化数据进行推理,执行函数。 * Function Calling 的 特点 :
* 缺点:处理不好 多轮对话 和 复杂需求
如果需要处理很多的任务,那么 Function Calling 的 代码比较难维护 。 * 适用场景: 适合 边界清晰、描述明确的任务。
### AI Agent
* `AI Agent` 是一个 基于AI大模型的用户代理应用 ,它可以自主运行以实现特定目标。
用户 -- AI Agent -- AI 大模型(LLM) 传统的 AI 聊天 仅提供建议或者需要手动执行任务, AI Agent 则可以分析具体情况,做出决策,并自行采取行动。 `AI Agent` 可以利用 `MCP` 提供的 功能描述 来理解更多的上下文,并在各种平台/服务自动执行任务。 ### MCP vs. Function Calling 的区别?
### 普通AI应用 vs. AI Agent 应用 的区别?
* 普通 AI 应用 : 用户 -- AI 大模型(LLM)
* AI Agent 应用 : 用户 -- AI Agent (访问: RAG / 网站 / 数据库 / 本地资源 / ...) -- AI 大模型(LLM)
普通AI应用与AI Agent应用的主要区别在于自主性、交互性和任务复杂性: 1. 自主性 : * 普通AI应用 :通常被动执行预设任务,依赖用户输入,缺乏自主决策能力。
* AI Agent应用 :具备自主性,能够根据环境和目标主动决策并采取行动。
2. 交互性 : * 普通AI应用 :交互简单,多为单向执行,如语音识别或图像分类。
* AI Agent应用 :交互复杂,能够与环境动态互动,并根据反馈调整行为。
3. 任务复杂性 : * 普通AI应用 :处理单一任务,功能较为基础。
* AI Agent应用 :处理复杂任务,涉及多步骤决策和长期规划,如自动驾驶或智能助手。
4. 学习与适应 : * 普通AI应用 :通常不具备学习能力,行为固定。
* AI Agent应用 :能够通过机器学习适应新环境和任务,持续优化表现。
5. 目标导向 : * 普通AI应用 :无明确目标,仅执行特定功能。
* AI Agent应用 :有明确目标,能够规划行动以实现目标。
* 示例
* 普通AI应用 :语音助手执行简单指令,如设置闹钟。
* AI Agent应用 :智能家居系统根据用户习惯自动调节设备,无需用户干预。
总结:普通AI应用功能单一且被动,而AI Agent应用则更自主、交互性强,适合处理复杂任务。 ## MCP 对于开源社区生态的贡献
* 开放标准给服务商,服务商可以针对 MCP 开放自己的 API 和部分能力。
* 不需要重复造轮子,开发者可以用已有的开源 MCP 服务来增强自己的 Agent。
# MCP 架构与原理
## 核心部分
* MCP 主机(MCP Hosts) :发起请求的 AI 应用程序,比如聊天机器人、AI 驱动的IDE等。
* MCP 客户端(MCP Clients) :在主机程序内部,与MCP 服务器保持 1:1 的连接。
* MCP 服务器(MCP Servers) :为 MCP 客户端提供上下文、工具和提示信息。
* 本地资源(Local Resources) :本地计算机中可供 MCP 服务器安全访问的资源,如文件、数据库。
* 远程资源(Remote Resources) :MCP 服务器可以连接到的远程资源,如通过 API 提供的数据。
## 工作流程
1. 连接 :MCP 主机连接到一个或多个 MCP 服务器。
2. 请求 :主机发送请求以获取数据或执行工具。
3. 处理 :服务器处理请求,访问相关数据源或外部服务。
4. 返回 :服务器将结果返回给主机。
5. 生成响应 :主机将信息提供给 AI 模型,用于生成用户响应。
# MCP 社区项目
[https://github.com/modelcontextprotocol](https://github.com/modelcontextprotocol) ## 项目结构
## MCP SDK
* Java : [https://modelcontextprotocol.io/sdk/java/mcp-overview](https://modelcontextprotocol.io/sdk/java/mcp-overview)
* Python : [https://github.com/modelcontextprotocol/python-sdk](https://github.com/modelcontextprotocol/python-sdk)
* TypeScript : [https://github.com/modelcontextprotocol/typescript-sdk](https://github.com/modelcontextprotocol/typescript-sdk)
* Kotlin : [https://github.com/modelcontextprotocol/kotlin-sdk](https://github.com/modelcontextprotocol/kotlin-sdk)
## MCP 官方集成
### 数据库和文件管理
* [文件系统](https://github.com/modelcontextprotocol/servers/tree/main/src/filesystem) - 具有可配置访问控制的安全文件操作
* [PostgreSQL](https://github.com/modelcontextprotocol/servers/blob/main/src/postgres) - 只读数据库查询。
* [SQLite](https://github.com/modelcontextprotocol/servers/tree/main/src/sqlite) - 数据库交互和商业智能功能
* [Slack](https://github.com/modelcontextprotocol/servers/blob/main/src/slack) - Slack 消息发送和查询。
* [Google Drive](https://github.com/modelcontextprotocol/servers/tree/main/src/gdrive) - Google Drive 的文件访问和搜索功能
* [Google Maps](https://github.com/modelcontextprotocol/servers/blob/main/src/google-maps) - 集成 Google Map 获取位置信息。
### 开发者工具
* [Git](https://github.com/modelcontextprotocol/servers/tree/main/src/git) - 用于读取、搜索和操作 Git 仓库的工具
* [GitHub](https://github.com/modelcontextprotocol/servers/tree/main/src/github) - 仓库管理、文件操作和 GitHub API 集成
* [GitLab](https://github.com/modelcontextprotocol/servers/tree/main/src/gitlab) - 支持项目管理的 GitLab API 集成
* [Sentry](https://github.com/modelcontextprotocol/servers/tree/main/src/sentry) - 从 Sentry.io 获取和分析问题
### Web 和浏览器自动化
* [Brave Search](https://github.com/modelcontextprotocol/servers/tree/main/src/brave-search) - 使用 Brave 的搜索 API 进行网络和本地搜索
* [Fetch](https://github.com/modelcontextprotocol/servers/tree/main/src/fetch) - 为 LLM 使用优化的网络内容获取和转换
* [Puppeteer](https://github.com/modelcontextprotocol/servers/tree/main/src/puppeteer) - 浏览器自动化和网页抓取功能
### 生产力和通信
* [Slack](https://github.com/modelcontextprotocol/servers/tree/main/src/slack) - 频道管理和消息功能
* [Google Maps](https://github.com/modelcontextprotocol/servers/tree/main/src/google-maps) - 位置服务、路线和地点详情
* [Memory](https://github.com/modelcontextprotocol/servers/tree/main/src/memory) - 基于知识图谱的持久记忆系统
### AI 和专业工具
* [EverArt](https://github.com/modelcontextprotocol/servers/tree/main/src/everart) - 使用各种模型的 AI 图像生成
* [Sequential Thinking](https://github.com/modelcontextprotocol/servers/tree/main/src/sequentialthinking) - 通过思维序列进行动态问题解决
* [AWS KB Retrieval](https://github.com/modelcontextprotocol/servers/tree/main/src/aws-kb-retrieval-server) - 使用 Bedrock Agent Runtime 从 AWS Knowledge Base 检索
### MCP 官方集成的其他工具
* [Axiom](https://github.com/axiomhq/mcp-server-axiom) - 使用自然语言查询和分析日志、跟踪和事件数据
* [Browserbase](https://github.com/browserbase/mcp-server-browserbase) - 在云端自动化浏览器交互
* [Cloudflare](https://github.com/cloudflare/mcp-server-cloudflare) - 在 Cloudflare 开发者平台上部署和管理资源
* [E2B](https://github.com/e2b-dev/mcp-server) - 在安全的云沙箱中执行代码
* [Neon](https://github.com/neondatabase/mcp-server-neon) - 与 Neon 无服务器 Postgres 平台交互
* [Obsidian Markdown Notes](https://github.com/calclavia/mcp-obsidian) - 读取和搜索 Obsidian 知识库中的 Markdown 笔记
* [Qdrant](https://github.com/qdrant/mcp-server-qdrant/) - 使用 Qdrant 向量搜索引擎实现语义记忆
* [Raygun](https://github.com/MindscapeHQ/mcp-server-raygun) - 访问崩溃报告和监控数据
* [Search1API](https://github.com/fatwang2/search1api-mcp) - 用于搜索、爬虫和网站地图的统一 API
* [Tinybird](https://github.com/tinybirdco/mcp-tinybird) - 与 Tinybird 无服务器 ClickHouse 平台交互
## 第三方/社区支持的集成
由第三方平台构建的 MCP 服务器。 * [Docker](https://github.com/ckreiling/mcp-server-docker) - 管理容器、镜像、卷和网络
* [Kubernetes](https://github.com/Flux159/mcp-server-kubernetes) - 管理 pod、部署和服务
* [Linear](https://github.com/jerhadf/linear-mcp-server) - 项目管理和问题跟踪
* [Snowflake](https://github.com/datawiz168/mcp-snowflake-service) - 与 Snowflake 数据库交互
* [Spotify](https://github.com/varunneal/spotify-mcp) - 控制 Spotify 播放和管理播放列表
* [Todoist](https://github.com/abhiz123/todoist-mcp-server) - 任务管理集成
* [Grafana](https://github.com/grafana/mcp-grafana) - 在 Grafana 中搜索查询数据。
* [JetBrains](https://github.com/JetBrains/mcp-jetbrains) – JetBrains IDEs。
* [Stripe](https://github.com/stripe/agent-toolkit) - 与Stripe API交互。
更多的可以查看社区服务器列表: * [MCP Servers Repository](https://github.com/modelcontextprotocol/servers)
## 社区 MCP 服务器
下面是一些由开源社区开发和维护的 MCP 服务器。 [MCP Servers Repository](https://github.com/modelcontextprotocol/servers) * [AWS](https://github.com/rishikavikondala/mcp-server-aws) - 用 LLM 操作 AWS 资源。
* [Atlassian](https://github.com/sooperset/mcp-atlassian) - 与 Confluence 和 Jira 进行交互,包括搜索/查询 Confluence 空间/页面,访问 Jira Issue 和项目。
* [Google Calendar](https://github.com/v-3/google-calendar) - 与 Google 日历集成,日程安排,查找时间,并添加/删除事件。
* [Kubernetes](https://github.com/Flux159/mcp-server-kubernetes) - 连接到 Kubernetes 集群并管理 pods、deployments 和 services。
* [X (Twitter)](https://github.com/EnesCinr/twitter-mcp) - 与 Twitter API 交互。发布推文并通过查询搜索推文。
* [YouTube](https://github.com/ZubeidHendricks/youtube-mcp-server) - 与 YouTube API 集成,视频管理、短视频创作等。
# Y 推荐文献
* [[AI/GPT/综述] AI Agent的设计模式综述 - 博客园/千千寰宇](https://www.cnblogs.com/johnnyzen/p/18717441/ai-agent-design-patterns)
* [MCP终极指南 - guangzhengli.com](https://guangzhengli.com/blog/zh/model-context-protocol/)
* Model Context Protocol 官方 * 主导厂商 : MCP 协议及开源社区,主要由 Claude 背后的厂家 Anthropic 主导,而非大名鼎鼎的 CloseAI
* 官方组织 Model Context Protocol * [https://github.com/modelcontextprotocol](https://github.com/modelcontextprotocol)
* 官方文档 * [https://modelcontextprotocol.io/introduction](https://modelcontextprotocol.io/introduction)
* 官方的 MCP Server 列表 * [https://github.com/modelcontextprotocol/servers](https://github.com/modelcontextprotocol/servers)
* Claude Blog * [https://www.anthropic.com/news/model-context-protocol](https://www.anthropic.com/news/model-context-protocol)
* 社区的 MCP Servers * [Cursor Directory](https://cursor.directory/)
* [Pulsemcp](https://www.pulsemcp.com/)
* [Glama MCP Servers](https://glama.ai/mcp/servers)
# X 参考文献
* [火爆 AI 编程圈的 MCP 到底是个什么东西? - Zhihu](https://zhuanlan.zhihu.com/p/26834797144)
> 原文链接: https://www.cnblogs.com/johnnyzen/p/18761802/ai-agent_model-context-protocol