Auth & Identity · 2025-03-28

模型上下文协议(MCP):
面向开发者的全面入门

MCP 是一个开放标准,在 AI 模型与外部数据、服务之间架起桥梁,让大语言模型(LLM)能以一致、安全的方式发起结构化的 API 调用。本文将介绍 MCP、解释它为何对连接 AI 系统有价值、把它和 ChatGPT 插件、手写 API 集成等既有做法做对比,并深入讲解它近期对 OAuth 认证的支持,还会看一点代码,看看 MCP 实际是怎么跑起来的。

✍️ 作者:Reed McGinley-Stempel 🏷️ 分类:Auth & identity 📅 2025 年 3 月 28 日
📌
Executive Summary

执行摘要

模型上下文协议(MCP)是一个开放标准,在 AI 模型与外部数据和服务之间架起桥梁,让大语言模型(LLM)能以一致、安全的方式发起结构化的 API 调用。本文会介绍 MCP、解释它为何对连接 AI 系统有价值、把它和 ChatGPT 插件、手写 API 集成等既有做法对比,并深入它近期对基于 OAuth 的认证的支持;同时也会看一点代码,看看 MCP 怎么运转。

MCP 充当 AI 工具与外部服务之间的万能适配器,消除了为每个工具或 API 单独编写集成代码的需要。正如 USB-C 简化了各种设备之间的连接,MCP 为 AI 模型提供了一套统一的方法来调用外部函数、获取数据或使用预定义的提示词。其核心在于:MCP 提供一个接口,即可连接到许多不同的系统

🔗 类比

MCP 之于 AI,就像 USB-C 之于硬件设备。在 USB-C 之前,鼠标、硬盘、显示器各有各的插口,买一个新外设常常还得配一根专用线。USB-C 出现后,一个口子通吃。

MCP 想做的是同一件事:在它之前,让 AI 用上 Google Drive、SQL 数据库、Slack,每接一个都要写一套专属代码;有了 MCP,AI 只需会说这一种"协议语言",任何提供 MCP 接口的服务都能即插即用。

🧩
What is MCP

什么是模型上下文协议 MCP?

🧩 MCP:AI 应用与外部世界之间的万能适配器

是什么

MCP 本质上是 AI 应用与外部工具或数据源之间的万能适配器。它定义了一套通用协议(构建在 JSON-RPC 2.0 之上),让 AI 助手能以结构化的方式,调用外部服务的函数、获取数据,或使用预定义的提示词。

为什么

因为在传统做法里,每个 LLM 应用都要为每个 API 或数据库写一套定制代码;而 MCP 提供了一种标准化的"语言",用同一套规则覆盖所有这些交互,从而把"为每个服务各写一套"压缩成"只对接一种协议"。

例子

不再为 Drive 写一套、为数据库写另一套,而是让 AI 只学会 MCP 这一种统一语言,所有对接都走它。

这个 MCP 层让 AI 应用能够安全地访问外部数据源和工具、并与之交互。它充当大语言模型与各类数据库、应用或 API 之间的桥梁,在不需要大量定制编码的前提下,促成无缝的集成与功能调用。

客户端-服务器架构(Client-Server)

MCP 用一套客户端-服务器架构来实现上述目标。AI 驱动的应用(例如聊天机器人、IDE 助手或智能体 agent)充当宿主 host,并运行一个 MCP 客户端 client组件;而每一个外部集成则作为一个 MCP 服务器 server运行。服务器通过 MCP 协议对外暴露其能力(如函数、数据资源或提示词模板),客户端连接到它,来使用这些能力。

🔑 关键点:模型不直接对话 API 这种分离意味着:AI 模型不直接和 API 对话;它要走 MCP 客户端/服务器的握手流程,由这套流程来组织整个交换过程。
宿主应用 Host 聊天机器人 / IDE 助手 / 智能体 内含 MCP 客户端 JSON-RPC 握手 结构化、安全的双向交换 MCP 服务器 A 函数 / 数据资源 / 提示词模板 MCP 服务器 B Google Drive / Slack …… MCP 服务器 C 数据库 / GitHub ……
一个宿主应用通过内嵌的 MCP 客户端,经由 JSON-RPC 握手连接到多个 MCP 服务器;每个服务器各自对外暴露一组能力,模型从不直接触碰底层 API。
💎
Why MCP is Valuable

MCP 为何有价值

在传统的搭建方式里,把 AI 模型连到外部数据或动作是件繁琐又零散的事。开发者往往要为每个想让模型用上的 API 或数据库写一次性的集成代码,逐个处理各不相同的认证、数据格式和错误处理。MCP 通过把这些交互标准化,改变了整个局面。它的关键收益包括:

⚡ 快速工具集成(Rapid Tool Integration)

是什么

有了 MCP,你无需从零定制每个能力。只要某个服务(比如 Google Drive 或一个 SQL 数据库)已经有了对应的 MCP 服务器,任何兼容 MCP 的 AI 应用都能连上它、立刻获得那项能力。

为什么

这对自动化是巨大的胜利——AI 智能体可以按需取文档、查数据库、调 API,只要接上合适的服务器即可。就像有一座现成"插件"库,而它们都讲同一种语言。MCP 服务器是轻量的程序,通过标准协议暴露特定能力,充当(例如)Cursor 与各种外部工具或数据源之间的中介。

🤖 自主智能体(Autonomous Agents)

是什么

MCP 赋能更自主的 AI 行为。智能体不再局限于其内置知识,而能主动在多步工作流中检索信息或执行动作。

例子

一个成熟的智能体可能用 MCP 先从 CRM 取数据,再通过一个通讯工具发邮件,接着把一条记录写入数据库——这一切在一条无缝链条里完成。

为什么

通过支撑流畅的、有上下文意识的多步交互,MCP 帮助 AI 智能体更接近真正的自主任务执行。正如一位观察者所言,MCP 给了 AI 标准化的"接触真实世界工具与数据"的途径,把它从一个孤立的"大脑"变成一个多才多艺的"行动者"。

🧹 降低摩擦与配置成本(Reduced Friction and Setup)

是什么

因为 MCP 充当通用接口,开发者得以避免"维护一堆各自独立的集成"这种碎片化困境。应用一旦支持 MCP,就能通过单一机制连接到任意数量的服务。

为什么

这极大减少了每次想让 AI 用上新 API 时所需的手动配置。团队可以专注于更高层的逻辑,而不必第 10 次重新发明连接代码。正如 Anthropic 所说,MCP 用一个更简单、更可靠的单一协议取代了碎片化的集成,来实现数据访问。

🔄 一致性与互操作性(Consistency and Interoperability)

是什么

MCP 在各工具之间强制统一的请求/响应格式。这意味着你的 AI 应用不必为服务 A 处理一种 HTTP 响应、又为服务 B 处理另一种 XML——模型的输出(函数调用)和工具的返回结果,统统以统一的 JSON 结构传递。

为什么

这种一致性让调试和扩展都更容易。它还为你的集成逻辑面向未来留了余地:即便你换了底层的模型厂商,MCP 对工具的那套接口仍然不变。

↔️ 双向上下文(Two-Way Context)

是什么

与简单的 API 调用不同,MCP 支持在模型与工具之间维护上下文和持续对话。一个 MCP 服务器除了工具之外,还能提供提示词 Prompts(针对特定任务的预定义提示模板)和资源 Resources(如文档这类数据上下文)。

为什么

这意味着 AI 不仅能"调一个 API",还能摄入参考数据、或在服务器引导下完成复杂工作流。该协议被设计为支持丰富的交互,而非只是一次性查询。

例子

在编码助手这类应用里尤其有用——AI 可能要通过 MCP 与一个开发环境反复迭代;或在需要与多个数据源来回沟通的复杂决策任务里发挥作用。

🌱 早期生态 简而言之,MCP 为增强 LLM 带来了一种可扩展、即插即用的方式,让 AI 系统安全地接入它们所需的"活"数据和动作,而不必每个开发者都重新造轮子。MCP 的早期采用者已经为 Google Drive、Slack、GitHub、数据库等工具构建了服务器,展示了 AI 智能体如何用 MCP 与企业内容库、DevOps 工具及其他真实系统协作。
🏗️
Architecture at a glance

MCP 架构 —— 它如何运作(速览)

客户端-服务器结构

MCP 遵循清晰的客户端-服务器架构:

  • 🖥️
    MCP 客户端(Client):嵌入在 AI 应用中(聊天机器人、IDE 助手、自动化智能体)。
  • 🗄️
    MCP 服务器(Server):暴露外部能力,如函数(工具 tools)、资源(数据 resources)和提示词(模板 prompts)。

所有交互都通过标准化的 JSON-RPC 消息发生,维持一种安全、结构化的交换。

JSON-RPC 请求示例

例如,要列出可用的工具,一个 MCP 客户端会发出这样一个请求:

▸ 客户端请求:列出工具

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/list",
  "params": {}
}

服务器会回复一个结构化的 JSON,列出工具(每个工具带名称、描述和输入 schema)。例如,一个服务器可能对外公布一个 get_weather 工具,并说明它需要哪些输入。

▸ 服务器响应:工具清单

{
  "jsonrpc": "2.0",
  "id": 1,
  "result": [
    { "name": "get_weather", "description": "Retrieves weather data.", "schema": { "location": "string" } }
  ]
}

之后,当 LLM 决定使用某个工具时,客户端会发起一次调用来执行它。MCP 服务器执行该函数,并以结构化的 JSON 响应返回结果。宿主应用内的 MCP 客户端随后可以把这个结果喂回模型的上下文或回复中。

🔑 宿主在中间做翻译 实践中,宿主应用居中调度整个过程:它把 LLM 的意图(通常来自模型的函数调用输出)翻译成一个 MCP 请求,再把服务器返回的结构化结果传回给 LLM。这种双向交换是安全且受控的——模型只能调用服务器所暴露的那些特定工具,所有进出的数据都走既定协议。
🛠️
Building & Deploying Servers

构建与部署 MCP 服务器

构建和部署 MCP 服务器,是用好模型上下文协议做 AI 集成的关键一步。MCP 服务器充当 AI 模型与外部数据源或工具之间的中介,实现无缝的通信与数据交换。

🌐 语言自由是 MCP 的一大亮点 MCP 的一个突出特点是服务器开发上的灵活性:开发者可以使用任何能向 stdout 打印、或能提供 HTTP 端点的编程语言,从而自由选择自己偏好的语言与技术栈。

构建 MCP 服务器时,架构与设计的考量很重要。MCP 遵循客户端-服务器架构,其中一个宿主应用可以连接到多个服务器。这种架构带来可扩展性和灵活性,让开发者能设计出处理各类任务和功能的 MCP 服务器,比如数据处理、工具集成或 AI 模型管理。

部署 MCP 服务器可以在多种环境中进行,包括本地开发环境、云平台或本地自建(on-premises)基础设施。举例来说,Cloudflare 提供了一个稳健的平台,用于构建和部署远程 MCP 服务器,让管理和扩缩 MCP 部署更容易。这种灵活性确保 MCP 服务器能针对不同应用和环境的具体需求量身定制——无论是用于开发的本地搭建,还是面向生产的云端方案。

通过聚焦良好的架构设计、并善用 MCP 的灵活性,开发者可以创建出强大且可扩展的 MCP 服务器,增强 AI 模型的能力,让它们能与外部数据源和工具无缝交互。

🔌
Clients & Tools

MCP 客户端与工具

MCP 客户端和工具是模型上下文协议生态系统的核心组件。

MCP 客户端是连接到 MCP 服务器、以访问外部数据源或工具的应用。这些客户端可以用各种编程语言和框架来构建,如 Python、JavaScript 或 Java,让开发者能为自己的具体需求选用最合适的工具。

另一方面,MCP 工具是为 MCP 客户端提供特定能力或功能的软件组件。这些工具可以与 MCP 服务器集成,以启用数据处理、AI 模型管理或工具集成等功能。MCP 工具的例子包括:Claude Desktop(提供与 AI 模型交互的聊天界面)和 Cursor(提供用于扩展 AI 能力的插件系统)。

开发者可以构建自定义的 MCP 客户端和工具,以满足特定的使用场景或需求。这种灵活性为 MCP 生态系统带来了创新和试验的空间——无论是一个用于数据分析的专门工具,还是一个能与多个 MCP 服务器集成的客户端应用,可能性都非常广阔。

通过善用 MCP 客户端与工具,开发者可以创建出稳健且多用途的应用,充分释放 AI 模型的潜力,让它们能与各种外部数据源和工具无缝交互。

⚖️
MCP vs Other Approaches

把 MCP 和其他方案对比

MCP定制集成ChatGPT 插件LangChain 等框架
集成速度 ✅ 快,即插即用 ❌ 慢,需定制代码 ⚠️ 中等,专有 ⚠️ 中等,需定制代码
认证 ✅ OAuth 标准 ❌ 手动 API 密钥 ⚠️ 插件专属 OAuth ❌ 依实现而异
交互类型 ✅ 持续且上下文丰富 ❌ 临时性交互 ❌ 一次性交互 ⚠️ 上下文受限
开放标准 ✅ 是 ❌ 否 ❌ 否 ⚠️ 取决于框架

下面逐一对比几种在 MCP 之前或与之并存的做法:

🔑 定制集成与 API 密钥管理

是什么

最常见的传统做法,是为每个服务写定制代码,并把凭据(API 密钥或 token)交给 LLM 去用这些集成。比如你写一个 Python 函数去查某个 API,赋予 LLM 调用它的能力,并在后端手动管理 API 密钥。

为什么不好

这种方式费力且难以扩展——每个新数据源都要新代码,每个环境都要安全管理 API 密钥,常导致系统脆弱,因为每个集成都独一无二。相比之下,MCP 把这些交互集中化、标准化:AI 智能体只需处理 MCP 协议,任何服务的任何 MCP 服务器都能即插即用;加新服务器完全不必改客户端代码。此外,MCP 为认证提供了正式结构(后文详述),使得"把密钥交给 AI"不再是临时拼凑,而是走一套安全协议。

🔌 ChatGPT 插件(OpenAI Plugins)

是什么

2023 年,OpenAI 为 ChatGPT 推出了插件系统,允许模型调用由 OpenAPI spec 定义的外部 API。这是迈向标准化工具使用的早期一步,但有局限:每个插件本质上是它自己的小型集成(有自己的 API schema 和认证),且要单独构建/托管。只有特定平台(如 ChatGPT 或 Bing Chat)能用这些插件,因为它是专有做法。插件也多为一次性调用——模型调一次 API 拿到信息,没有持久连接或持续交换。

区别

MCP 的不同在于它是开放且通用的(不绑定于任何单一厂商或界面),并支持丰富的双向交互和持续上下文。可以把 ChatGPT 插件想成一个封闭工具箱里的专门工具,而 MCP 是任何开发者或 AI 平台都能用的开放标准工具包。MCP 的标准化认证(尤其是 OAuth)也意味着它能以更统一的方式处理对用户数据的安全访问,胜过 ChatGPT 系统里逐个插件各搞一套的 OAuth 流程。

小结

ChatGPT 插件展示了"为 LLM 标准化 API 访问"的价值,但 MCP 更进一步:把它做成开放协议,并让 AI 与服务之间能进行持久的"对话"。

🧰 LLM 工具框架(LangChain、智能体库)

是什么

在 MCP 之前,许多开发者用 LangChain 这类框架给模型赋予工具:你定义一组工具函数(带描述)以及智能体的提示逻辑,让 LLM 自行决定何时使用它们。这能行,但每个工具背后仍需定制实现——LangChain 最终在其库里维护了数百个工具集成。本质上,LangChain 提供的是一个面向开发者的标准(一个 Python 类接口),把工具集成进智能体的代码库,但并没有给模型在运行时动态发现新工具的能力。

区别

MCP 与这些框架是互补的,它把标准化转移到面向模型的一侧。有了 MCP,智能体能够发现并使用任何 MCP 服务器提供的工具,即便其代码事先并未显式包含该工具。事实上,LangChain 已加入支持,可把 MCP 服务器当作又一个工具来源——意味着用 LangChain 构建的智能体能轻松调用 MCP 工具,借力日益增长的 MCP 服务器生态。差别在于,MCP 把接口正式定在一套协议之上(JSON-RPC,带元数据等),更易插入不同环境,而不仅限于 Python 框架。

与函数调用的关系

类似地,OpenAI 原生的函数调用功能,可以看作处理函数调用的格式化(模型输出一个 JSON 函数调用),而 MCP 处理的是该调用的执行(以标准化方式)。二者常常协同工作:LLM 产出一个结构化调用,MCP 客户端/服务器执行它并返回结果,合起来实现无缝的工具使用。

🔑 总结 MCP 并非第一个尝试把 LLM 与外部 API 连接的方案——但它从过往做法(插件、工具库等)中汲取经验,把解决方案统一起来。它提供了一个开放、与模型无关的协议,简化了集成与认证。尤其在安全与认证方面,MCP 的设计(带 OAuth 支持)避免了"逐个插件各配密钥"或"把原始 API 密钥直接交给模型"的拼凑局面,转而把认证作为协议的一部分,以一致、标准化的流程来处理——相比现状是一次重大升级。
🔬
MCP in Action

MCP 实战:技术深入

我们一步步走一遍典型的 MCP 交互,把它的运作机制坐实,并看一点代码。设想我们有一个 AI 助手,想使用一个提供了一组工具的 MCP 服务器(比如一个假想的 "Neon" 数据库服务)。高层流程如下:

连接到 MCP 服务器

宿主应用(AI 助手)初始化一个 MCP 客户端,并与服务器建立连接。视服务器位置而定,这可能通过本地进程(stdio)或远程 HTTP 流(SSE)进行。底层上,客户端发送一条 initialize 消息,以握手协商协议版本与能力。

发现可用的工具 / 资源

客户端随后查询服务器都提供些什么。如前所示,它可能发送 {"method": "tools/list"} 并拿回一组工具定义。助手可据此告知 LLM(例如把工具清单放进系统提示,或经由模型的函数 schema,视实现而定)。用 SDK 时,这可能只是一行代码。

LLM 选择一个工具

当用户问的问题需要外部动作时,LLM(常借助提示工程或函数调用能力)判定应使用某个工具。例如用户问:"AAPL 股票最新价是多少?" LLM 判断应调用 get_current_stock_price(company="AAPL", format="USD")。宿主应用捕获这个意图(如 OpenAI 的函数调用 API 会返回 JSON 形式的函数名与参数)。

通过 MCP 调用工具

客户端现在向服务器发送一个 tools/call 请求,带上所选工具名和参数。这会让服务器在其侧执行该工具的处理逻辑——可能是调外部 API、做数据库查询,或该工具封装的任何逻辑。结果(可以是简单值或复杂 JSON 对象)放在 MCP 响应的 result 字段里送回。

把结果返回给 LLM

MCP 客户端收到工具输出,宿主应用随即把它整合回 AI 的回复中。许多智能体设计的模式是:把结果注入对话,再让模型继续。例如助手随后呈现:"AAPL 当前股价为 $173.22(USD)。" 若用自动循环,可把结果(如作为系统消息 "get_current_stock_price 的结果:…" 追加到对话)交给模型,模型便能带着该信息继续回答用户。

① 连接 initialize 握手 ② 发现 tools/list ③ 选工具 LLM 决策 ④ 调用 tools/call ⑤ 回灌 结果入上下文
一次完整 MCP 工具调用的五段链路:从握手连接,到发现工具、模型决策、发起调用,最后把结构化结果回灌进模型上下文。

看一点代码

用 SDK 发现工具,可能就是一行:它返回一个结构化的工具列表,每个工具条目带名称、描述和输入的 JSON schema,这样 AI 就知道自己能做什么。

▸ 发现工具(一行)

const tools = await mcpClient.request({ method: 'tools/list' }, ListToolsResultSchema);

发起调用(第 4 步)用 SDK 可能长这样:

▸ 调用工具 tools/call

const result = await mcpClient.request({
    method: 'tools/call',
    params: { name: toolName, arguments: toolArgs }
}, CallToolResultSchema);

下面是一个简化示意:用 Anthropic 的 Claude(原生支持工具使用)调用一个工具并在对话中使用结果。

▸ 用 Claude 把工具调用串进对话循环(伪代码)

// 1. 把用户提示连同可用工具上下文发给 LLM
const response = await anthropicClient.complete({
  prompt: "User: Can you list my projects?\nAssistant: ",
  model: "claude-3.5",
  tools: tools // 来自 MCP 服务器的工具列表
});
for (const msg of response.messages) {
  if (msg.type === 'tool_use') {
    // 2. LLM 决定使用某个工具
    const { name, args } = msg;
    // 3. 通过 MCP 调用该工具
    const toolRes = await mcpClient.request({ method: 'tools/call', params: { name, arguments: args } });
    // 4. 注入工具结果并恢复 LLM
    await anthropicClient.send({ role: 'system', content: `Tool result: ${toolRes.result}` });
  } else {
    // 5. 处理普通 LLM 回复(工具结果很可能已被整合)
    console.log("Assistant:", msg.content);
  }
}

现实中,框架会替你处理很多这类细节,但上面的伪代码勾勒了 MCP 如何嵌入循环。关键在于:MCP 为工具执行提供了标准化的"调用/响应"层,AI 智能体代码可以挂接进去。无论你用 OpenAI、Anthropic 还是别的 LLM,MCP 都保持不变——它是模型意图与外部动作之间的"胶水"。

✅ 用 MCP 的额外好处 通过使用 MCP,开发者得到了一条清晰、结构化的扩展 AI 能力的流水线。代码更易维护(你到处调用的是通用的 mcpClient.request,而非各处的服务专属代码),AI 也更强大(它能接入任何 MCP 连接的服务)。调试也更容易——你可以监控 JSON-RPC 消息,看清到底请求和返回了什么,而不必从模型生成的文本里找线索。
⚠️
Early Limitations

早期局限:没有内置认证

当 MCP 最初出现时(2024 年末),它提供了用于工具与数据交换的核心协议,但缺少一套标准化的认证机制来连接远程服务器。实践中,早期的 MCP 演示和实现往往要求把 MCP 服务器跑在本地或一个可信环境里——在那里认证不是大问题(因为 AI 和服务器跑在同一台机器上)。

举例来说,开发者可以在 localhost 上跑一个用于 Google Drive 的 MCP 服务器,带上一个事先获取好的 token,然后让 AI 应用指向它。但要在互联网上、或与第三方服务一起使用 MCP,在没有正式认证流程时就很棘手。

许多最初的 MCP 服务器假定用户会在启动时手动向服务器提供凭据或 API 密钥。例如,Anthropic 的快速上手指南就建议:运行预构建的服务器时,通过配置或命令行提供你自己的凭据(API 密钥、token)。这意味着服务器本身能拿到你的密钥,而 MCP 客户端只是信任那个服务器。

⚠️ 这种信任为何不够 虽然这对个人或单用户场景管用,但它无法很好地扩展到多用户应用或云托管的智能体。当时没有标准握手能让一个 AI 智能体说出:"嘿,我被授权代表用户 X 访问这个服务;这是我的凭据。"

本质上,早期 MCP 客户端除了通过带外手段(如预先共享一个 token,或干脆无认证运行)外,根本没有办法向 MCP 服务器认证。这是一个显著的局限——MCP 被设计为开放、基于互联网的,但没有认证标准,安全的远程使用就被掣肘了。

缺少认证标准意味着 MCP 客户端无法自行安全地连接到任意服务器。你要么把一个 client ID / API 密钥硬编码进客户端(在分布式应用里并不理想),要么就无认证运行、并假定只有被授权的用户才能触及服务器(常常靠把它保持在本地来实现)。显然,要让 MCP 发挥全部潜力(例如以安全方式把 AI 智能体连到云托管的数据源),需要一个更好的办法。好消息是:社区意识到了这点,并着手把基于 OAuth 的认证内建进 MCP。

🔐
OAuth 2.0 Auth Flow

OAuth 2.0 认证流程

📎 建议先理解 早期局限:无内置认证,再看 OAuth 如何对症下药。

为解决最初的认证局限、增强安全连接,MCP 采用了 OAuth 2.0——一个被广泛认可且稳健的认证标准。OAuth 2.0 提供了一个安全、可扩展的框架,让 MCP 客户端能与远程服务器、云托管资源以及多用户环境安全交互。把 OAuth 2.0 集成进 MCP 的关键组成与收益包括:

动态客户端注册(DCR)

MCP 支持动态客户端注册,允许客户端自动向 OAuth 服务器注册。这免去了手动配置客户端或硬编码凭据的需要,大幅简化了开发者的部署。

自动端点发现

MCP 利用标准化的元数据 URL(遵循 OAuth 的发现协议),让客户端自动发现 OAuth 端点。这减少了配置开销,使 MCP 部署更简单、更灵活。

安全授权与令牌管理

客户端安全地获取与用户权限和访问范围(scope)精确对应的 OAuth 令牌。这确保客户端只能访问用户明确许可的资源,在多用户和云环境中提升了安全性与合规性。

可扩展且安全的多用户支持

OAuth 2.0 的设计天生支持多个并发用户和服务,正好补上了 MCP 早期的一大局限。应用现在能同时无缝处理众多用户的授权流程,这对大规模云端采用至关重要。

🔑 一句话 OAuth 2.0 把"早期 MCP 无法安全地代表某个用户连接远程服务器"这个核心短板补齐了:自动注册、自动发现端点、按权限精确发令牌、原生支持多用户并发——让 MCP 真正能在云端、多用户场景下安全落地。
🔧
Debugging

调试与排错

调试与排错是使用 MCP 服务器和客户端时的关键环节。MCP 提供了多种工具和技巧用于调试排错,确保开发者能高效地定位和解决问题。这个过程中的一个关键工具是 MCP Inspector——一个用于 MCP 服务器的交互式调试工具。

MCP Inspector 让开发者能测试和检视 MCP 服务器,识别并解决 MCP 服务器集成中的问题。该工具提供了 MCP 客户端与服务器之间交互的详细视图,使得定位问题、理解其根本原因更容易。此外,MCP 还提供了一份全面的调试指南,列出常见问题与解决方案,帮助开发者快速排查和解决问题。

调试 MCP 服务器时,考虑系统的架构与设计很重要。开发者应识别出导致问题的具体组件或模块,并用 MCP Inspector 这类工具来诊断和解决。通过聚焦系统化的调试方法、并善用现有工具,开发者可以确保其 MCP 集成稳健可靠。

🌍
Real-world Applications

MCP 的真实世界应用

模型上下文协议(MCP)在各行业和领域有多种真实应用。MCP 的一个主要用例是 AI 集成——它在 AI 模型与外部数据源或工具之间实现无缝的通信与数据交换。MCP 可用于的应用包括:

  • 💬
    构建 AI 驱动的聊天机器人:这些机器人可以访问外部数据源或工具,为用户提供准确、最新的信息。
  • ⚙️
    创建 AI 驱动的工作流:MCP 让 AI 模型能与外部系统或数据源集成,自动化复杂工作流、提升效率。
  • 🧠
    开发 AI 模型:这些模型能与外部工具或数据源交互,增强其能力,产出更准确、更相关的结果。
  • 🏭
    实现 AI 驱动的自动化:在金融、医疗或制造等行业,MCP 可以自动化任务和流程,提升生产力、减少错误。

MCP 的灵活性和适应性,让它成为那些希望在应用中运用 AI 与机器学习的开发者和组织眼中颇具吸引力的方案。通过为 AI 模型提供一个与数据源和工具交互的标准化接口,MCP 在 AI 生态中促成了创新与试验。这种标准化方式不仅简化了集成过程,也确保 AI 模型能取用它们所需的数据和工具,以发挥最佳表现。

总而言之,MCP 为 AI 应用打开了无限可能,让开发者能创建更集成、更自主、更可扩展的方案。无论是用 AI 驱动的聊天机器人增强客服,还是在工业场景中自动化复杂工作流,MCP 都提供了把这些创新变为现实所需的工具与框架。

🏁
Conclusion

结语

模型上下文协议(MCP)是 AI 开发中一项令人兴奋的进展,因为它让开发者能安全、高效地把我们日益智能的语言模型,连接到此前难以连接的广阔软件与数据世界。通过引入一种通用协议,MCP 让我们能构建出更集成、更自主、更易扩展的 AI 系统。我们不再为每个新工具写一次性插件、或给模型脆弱的逐条指令,而是有了一个连贯的框架,让 AI 智能体能在恰当的监督与安全保障下,即时地发现并使用工具。

虽然该协议仍在演进(认证是近期才加入的,标准化的服务器发现等更多特性也在路上),但很清楚的是:MCP 或类似它的东西,将在下一代 AI 应用中扮演关键角色。对开发者而言,现在正是熟悉 MCP 概念的好时机。无论你是在为聊天机器人注入公司特定知识,还是在构建自动化工作流的 AI 智能体,MCP 都能通过承担工具集成的"管道"工作,替你省下时间和麻烦。而且由于它是一个开放标准、背后有不断壮大的社区(以及 Anthropic 这样的公司),它很可能成为未来 AI 基础设施的奠基性一环。

💡 一个愿景 总而言之,MCP 让这样一个世界成为可能:AI 助手不再是各自封闭的天才,而是装备精良的工程师与助手——能与众多系统对接、遵循流程、按需获取或创建信息,而这一切都通过一个统一、安全的接口完成。这是一个强有力的愿景,而它正随着 MCP 迅速变为现实。

在 Stytch,我们专注于轻松地为客户解决远程 MCP 服务器的认证问题,让他们能为自己的应用方便地搭起 MCP 服务器,从而允许终端用户向 MCP 客户端授予经许可的访问权限。

🔐 用 Stytch 做 MCP 认证

使用 Stytch Connected Apps,为 MCP 服务器构建认证。(原文于此引导读者阅读其文档。)