介绍模型上下文协议(MCP)如何像USB-C统一充电接口一样,标准化AI与数据的集成方式。
AI translation, not an official translation. Refer to the original for technical details.
Adapted from @vicky_grok# 使用MCP(模型上下文协议)构建更优秀的AI应用 如果你是一名刚刚踏入人工智能世界的初学者,你可能很快就发现了一件令人沮丧的事:AI模型极其聪明,却完全与外界隔绝。 当你使用ChatGPT、Claude或任何其他大语言模型(LLM)时,本质上是在与一位被关在空白房间里的超级天才交谈。这位天才读遍了世界上所有的书,但那是在他被关进房间那天之前的事——他对外面此刻正在发生的一切一无所知。 如果你问AI:"你能帮我总结一下电脑桌面上的那份PDF文件吗?"它无能为力。如果你问它:"我们公司数据库里某条客户工单的状态是什么?"它同样毫不知情。 要让AI真正对企业和个人工作流程有所帮助,我们必须让AI能够访问我们的数据。然而,历史上将AI与私有数据相连是一场噩梦。你必须为每一个想让AI对话的应用程序编写定制的、复杂的代码(称为API集成)。你需要为Google Drive写一套脚本,为数据库写一套完全不同的脚本,再为Slack写第三套脚本。 这既混乱、不安全,又令人精疲力竭。 直到MCP(模型上下文协议)的诞生,一切才发生了改变。 MCP可以说是当下AI应用开发者最重要的架构突破。它彻底改变了AI模型与外部世界的连接方式。在这份面向初学者的指南中,我们将详细拆解MCP究竟是什么、其架构如何运作、为何它能让你的数据更安全,以及你如何开始用它构建强大的AI应用。 你不需要是一名资深软件工程师才能理解这些内容。我们将剥去复杂的行话,看清AI的未来是如何被连接在一起的。 ## 1. 什么是MCP?(AI界的USB-C) 要理解MCP,我们需要借助一个简单的类比。 回想一下2000年代初手机刚开始普及的时候。每一家手机制造商都有自己独特的、定制的充电线。如果你用的是诺基亚,你需要诺基亚充电器。如果你用的是摩托罗拉,你需要摩托罗拉充电器。如果你的充电器丢了,你也没法借用朋友的线,因为接口根本不匹配。 这正是MCP出现之前AI行业的样子。如果Anthropic(Claude的开发商)想让他们的AI读取GitHub上的文件,他们必须编写一个定制的"GitHub插头"。如果OpenAI想让他们的AI读取GitHub,他们也得编写自己的定制"GitHub插头"。 后来,科技行业就一项标准达成了共识:USB-C。突然之间,同一根线就能为手机、笔记本电脑、平板电脑和耳机充电,无论品牌是什么。 MCP就是人工智能界的USB-C。 MCP(模型上下文协议)是一个开源标准。它是一套通用规则,精确规定了AI模型应如何请求数据,以及数据库应如何作出响应。 有了MCP,开发者不再需要为每一个AI模型编写定制集成。 如果你的数据存储在本地安全数据库中,只需为其附加一个"MCP端口"。一旦该端口接入,任何支持MCP的AI模型都能立即与其对接。它将连接方式标准化,为开发者节省了数千小时编写定制粘合代码的时间。 ## 2. 架构:MCP的工作原理 那么,这个通用插头在实际使用中究竟是如何运作的呢? 当您使用基于MCP的AI应用程序时,有三个主要组件在相互通信。理解这三个模块至关重要,因为它们构成了数据安全保障的基础。 **组件一:MCP主机(AI应用程序)** "主机"是您在屏幕上实际看到的那个应用程序。一个典型的例子是Claude桌面应用,或者像Cursor这样的IDE(集成开发环境)。 主机内置了AI模型。它是这样一个程序:接收您输入的提示词(例如"读取我的销售数据库"),并决定如何处理。主机负责发起与外部世界的连接。 **组件二:MCP客户端** MCP客户端存在于主机内部。您可以把客户端想象成一根通用USB-C数据线。 当AI决定需要查看您的数据库时,它会指示MCP客户端去获取数据。客户端会在您的计算机内部(或通过互联网)向外延伸,找到相应的数据源。 **组件三:MCP服务器(桥梁)** 这是整个系统中最关键的部分。 您的实际数据库(或本地文件)并不会直接与AI对话。取而代之的是,一个轻量级软件——MCP服务器——被部署在您数据的正前方,充当守门人的角色。 MCP服务器既是翻译官,也是看门人。当MCP客户端敲门并说"AI想要读取销售数据库"时,MCP服务器会将该请求翻译成数据库能够理解的语言(例如SQL),检索数据,再将其翻译回通用的MCP格式,最后传递给AI。 这种架构(主机→客户端→服务器→数据)之所以精妙,在于它在物理层面将AI大脑与您的原始私有数据隔离开来。 ## 3. The Three Core Capabilities of MCP 当MCP服务器与AI建立连接时,它可以为AI提供三种非常具体的能力类型。我们将这三类能力称为核心能力:资源(Resources)、提示词(Prompts)和工具(Tools)。 理解这三者之间的区别,对于构建优质AI应用程序至关重要。 **一、资源(读取数据)** 资源本质上是一类AI被允许查看但不能修改的数据,即只读数据。 想象一下,您雇了一位人工助理帮您撰写报告。您可能会递给他一份打印好的PDF,并说:"读一下,但不要在上面写字。"这正是资源的含义所在。 当您将MCP服务器连接到计算机时,可以将特定的文本文件、数据库表或系统日志作为资源进行开放。AI可以将这些文件加载到其上下文窗口中,进行阅读,并利用这些信息精准地回答您的问题,而不会产生幻觉。 **二、工具(执行操作)** 如果说资源是用来"读"的,那么工具就是用来"做"的。 工具赋予AI在现实世界中采取行动的能力。回到人工助理的比喻,工具就好比您递给助理一把扳手,说:"去修水槽。" 通过MCP服务器,您可以赋予AI以下工具能力: - 在您的计算机上创建、编辑或删除文件。 - 在互联网上搜索最新资讯。 - 向您团队的Slack频道发送消息。 - 执行Python脚本进行数学计算。 由于工具具有一定的危险性(您肯定不希望AI误删您的整个硬盘),因此需要严格的权限管控——我们将在安全章节中详细探讨这一问题。 **三、提示词(标准化模板)** 第三个功能是提示词(Prompts)。这些是MCP服务器为AI提供的可复用、标准化的模板。 假设你每天都用AI应用来撰写代码审查报告。与其每天早上都输入"请检查这段代码是否存在安全漏洞、性能问题和可读性问题",你可以将这条指令作为提示词保存在MCP服务器上。当你点击该提示词时,服务器会自动将这些指令注入AI的"大脑"中。 ## 4. 为什么MCP对初学者来说是颠覆性的存在 如果你是初学者,你可能会想:"这听起来像是只有大型企业才需要的东西。" 但MCP实际上是初学者和独立开发者的终极作弊码。以下就是这个协议彻底改变你构建应用方式的原因。 1. 一次编写,连接万物 在MCP出现之前,如果你建了一个很酷的电影评论数据库,并希望人们用AI来搜索它,你就必须为OpenAI编写一套自定义集成。然后,当用户想改用Anthropic的Claude时,你又得从头编写一套完全不同的集成。 有了MCP,你只需编写一次连接。你为你的电影数据库构建一个简单的MCP服务器。一旦构建完成,它就能立即连接到Claude、OpenAI、运行在你笔记本电脑上的本地模型,以及明年推出的任何未来AI模型。这种通用插头让你的工作经得起未来的考验。 2. 告别"胶水代码" 编写API集成(将两个应用程序粘合在一起的代码)是软件开发中最枯燥、最容易出错的部分。你要花费数小时阅读晦涩难懂的文档,只是为了搞清楚如何正确格式化一个JSON请求。 MCP消除了胶水代码。协议替你处理格式化工作。你可以完全专注于构建核心应用,而MCP则负责处理数据传递的全部细节。 3. 蓬勃发展的开源生态系统 由于MCP是一个通用标准,一个令人惊叹的开源社区已经围绕它蓬勃兴起。 对于常见任务,你甚至不需要自己编写MCP服务器! 想让你的AI连接PostgreSQL数据库?已经有现成的、免费的MCP服务器了。想让你的AI连接Google Drive?也有对应的MCP服务器。想让它与Slack、GitHub或Notion对话?社区已经构建好了这些通用插头。你只需下载并插入即可。 ## 5. 安全第一:为什么服务器架构至关重要 当我们谈论赋予AI读取私人文件、在计算机上执行操作的能力时,每个人首先会问的问题是:这安全吗? 如果我将AI连接到公司的财务数据库,有什么能阻止AI意外删除数据库表,或将财务记录发送到某个随机网站? 这正是MCP架构天才之处真正闪耀的地方。 门口的保镖 还记得我们架构解析中的组件3吗?也就是MCP服务器。 AI模型(大脑)实际上从不直接接触你的数据库。它只与MCP服务器通信。MCP服务器充当你数据入口处一个不可妥协的保镖。 作为开发者,你可以配置MCP服务器,使其具有极其严格的规则。你可以在服务器中写入这样一条规则:"AI只允许使用SELECT查询来读取数据。如果AI请求执行DELETE或UPDATE操作,立即拒绝该请求。" 即便AI出现幻觉、失控运行,或被恶意用户提示诱导去尝试删除你的数据库,它在物理层面也根本无法做到。MCP服务器会识别出这一危险请求,像防火墙一样将其拦截,并向AI返回一条错误信息。 本地优先 此外,MCP服务器可以完全在你自己的机器上本地运行。 如果你的笔记本电脑上存有高度敏感的法律文件,你可以启动一个本地MCP服务器。该服务器读取你的本地文件,只将特定的、被请求的上下文传递给AI应用。你无需将整个敏感文件夹上传到云端服务商,就能让AI对其进行分析。你对原始数据保有完全的所有权。 ## 6. 真实世界的应用场景(人们在构建什么?) 为了从理论走向现实,让我们来看看开发者和企业如今使用MCP为工作流提速增效的三种极为常见的方式。 1. 自主软件工程师 借助Cursor或Windsurf等代码编辑环境(它们充当MCP宿主),开发者将MCP服务器直接连接到本地GitHub代码仓库和终端。 开发者无需让AI编写一段代码片段再自行复制粘贴,只需直接说:"找出导致登录页面崩溃的那个bug。" AI随即使用MCP工具读取本地代码文件,定位bug,编写修复方案,并自动运行终端命令对代码进行测试。AI直接在本地机器上完成这一切工作。 2. 企业内部知识神谕 想象一家中型公司,其数据分散在各处:HR政策存在Notion里,代码托管在GitLab上,客户数据则在一个自定义的SQLite数据库中。 公司为每个数据源各启动一个MCP服务器,共三个,并将全部三个服务器接入企业AI助手。现在,一位项目经理可以向AI提问:"哪些客户投诉了登录bug,我们对他们的退款政策是什么?" AI使用SQLite MCP服务器查找相关客户,使用Notion MCP服务器读取退款政策,并综合给出一个完整、准确的答案。它宛如公司私有数据的全知神谕。 3. 多智能体集群 正如我们在之前的深度解析中所探讨的,AI的未来在于集群——多个小型AI智能体协同合作,共同解决问题。 MCP是集群通信的终极标准协议。如果智能体A生成了一份财务报告,它可以通过MCP服务器将该报告对外暴露。智能体B随后可以接入该服务器,将报告作为资源读取,并使用工具将其发送邮件给上司。MCP提供了标准化的管道,让不同的AI智能体得以安全地相互传递状态与数据。 ## 7. 构建你的第一个MCP服务器(代码概念) 为了证明使用MCP并不需要什么高深功底,让我们来看看构建一个自定义服务器有多简单。 假设你想赋予AI查看电脑当前时间和日期的能力——因为大语言模型本身并不知道现在是什么时间。 我们可以使用官方软件开发工具包(SDK),用Python编写一个极简的MCP服务器。 这就是全部核心逻辑!我们定义一个服务器,编写一个获取时间的标准Python函数,然后使用`@app.tool()`装饰器告知服务器:"将这个函数暴露给AI。" 当你将Claude桌面应用连接到这个服务器后,Claude会突然意识到它的工具箱里多了一件新工具。如果你问Claude"现在几点了?",Claude会输出一个运行 get_current_time() 的请求。服务器执行Python代码,获取时间,再将结果返回给Claude。 你可以用任何东西替换那个简单的时间函数。你可以编写一个Python函数来开启飞利浦Hue智能灯,一个在Robinhood上购买股票的函数,或者一个创建日历邀请的函数。 只需将你的标准Python代码封装在MCP服务器中,你就能立刻赋予AI自主触发该代码的能力。 ## 9. 理解传输层(数据如何传输) 如果你是初学者,你可能好奇这个通用插头实际的"导线"是什么。JSON数据是如何从AI应用传输到MCP服务器的? 在传统的Web开发中,我们使用HTTP(超文本传输协议)。当你在浏览器中输入网站URL时,浏览器发送一个HTTP请求,获取HTML内容,然后连接关闭。HTTP是一种一次性的事务。 但AI智能体不是以一次性事务的方式运作的。正如我们在关于智能体循环的深度解析中所了解的,智能体需要持续地来回交互。它们进行思考,向工具请求数据,再次思考,然后请求更多数据。 为了处理这种快速的来回通信,MCP支持两种主要的传输层: 1. Stdio(标准输入/输出) 这是本地服务器最常见的传输层。Stdio与你电脑终端向屏幕打印文本所使用的技术完全相同。 当你使用Stdio在本地运行MCP服务器时,AI应用会在你的机器上以隐藏的后台进程方式启动服务器。两个程序通过你电脑的本地内存直接相互通信。 由于数据从不离开你的计算机,Stdio极为快速且完全安全。它是将AI连接到本地日志文件、个人数据库或你机器上的硬件传感器的理想传输层。 2. SSE(服务器发送事件)over HTTP 如果你的数据库不在你的笔记本电脑上怎么办?如果你希望AI连接到位于亚马逊数据中心的公司大型云数据库怎么办? 对于远程连接,MCP使用SSE over HTTP。 SSE(服务器发送事件)是一种允许服务器自动向客户端推送数据的技术,无需客户端反复请求。它通过互联网建立一个持久的、保持开放的连接。 当AI应用(客户端)使用SSE连接到远程MCP服务器时,服务器可以实时地将数据流式传输回AI。这对于大规模资源至关重要,例如将数千行金融数据流式传输回AI而不会导致连接超时。 通过将本地(Stdio)和远程(SSE)传输层都标准化,MCP确保了无论你的数据是存储在桌面的某个文件夹中,还是存储在东京的服务器机架上,AI都能体验到完全相同的无缝连接。 ## 10. MCP与RAG的区别 当你学习如何将数据连接到AI时,你不可避免地会听到RAG(检索增强生成)这个词。我们在之前的文章中已经对RAG进行了深入介绍,但厘清MCP与传统RAG的区别非常重要。 它们是同一回事吗?不是。但它们可以完美地协同工作。 传统RAG(专职图书管理员) 在标准的 RAG 流程中,你将所有 PDF 文档切割成微小的块,将其转换为数学向量,并存储在专门的向量数据库中。当你提出问题时,RAG 系统会在该特定数据库中进行数学搜索以找到答案。 RAG 高度专业化。它是一个专门为非结构化文本语义搜索而构建的定制流程。 **MCP(通用入口)** MCP 不是数据库。MCP 不会切割你的文本,也不会将其转换为向量。 MCP 仅仅是一扇门。 你实际上可以将一个 MCP 服务器完全部署在你的 RAG 流程之前!与其将你的 AI 应用硬编码为直接与 Pinecone 向量数据库通信,不如在中间放置一个 MCP 服务器。该 MCP 服务器提供一个名为 Search_Internal_Documents 的工具。 当 AI 决定需要查找文档时,它会向 MCP 服务器发出请求。MCP 服务器执行复杂的 RAG 搜索,将结果完美地格式化后返回给 AI。 通过将 MCP 置于 RAG 之前,你实现了逻辑的分离。你的 AI 无需了解向量数学的工作原理,它只需知道自己拥有一个能够检索文档的神奇工具。正是这种模块化特性,使得资深工程师们正在迅速将 MCP 采纳为所有 AI 基础设施的标准接口层。 ## 8. 上下文的未来 模型上下文协议的引入标志着我们思考人工智能方式的永久性转变。 我们正在告别"孤立天才"的时代。我们不再关心 AI 模型是否记住了整个互联网。死记硬背是廉价的,并且会导致幻觉问题。 未来属于"互联工作者"。我们希望 AI 模型轻量、快速,并能够在恰好需要的时刻动态检索到精确、完全准确的数据。 MCP 是使这一未来成为可能的通用语言。它将互联网的混乱状态标准化为一个清晰、可预测的协议。 如果你想构建真正有价值的 AI 应用——那些能够安全处理私有数据、无懈可击地自动化繁琐任务、并跨越十几个不同数据库运行的应用——你就必须停止编写定制的胶水代码。 拥抱通用插头。构建一个 MCP 服务器。赋予你的 AI 改变世界所需的双手。 订阅 ByteBuilders,将下一期深度解析文章发送到你的收件箱:https://bytebuilders.beehiiv.com/subscribe