在人工智能领域,大模型 (LLM) 如 ChatGPT 和 Microsoft Copilot 正引领着一场变革,它们以其理解人类语言并生成类人回复的能力,极大地改变了人机交互的方式。然而,这些强大的 大模型 往往难以直接与外部世界(例如,各种在线服务)进行无缝交互。本文将深入探讨 模型上下文协议(MCP),这一新兴技术旨在解决这一瓶颈,并为 大模型 的应用开辟新的可能性。我们将深入了解 MCP 的概念、架构、优势,以及如何利用它来构建更智能、更互联的 AI 应用。
大模型的局限性与 MCP 的诞生
尽管 大模型 在语言理解和生成方面表现出色,但它们与外部服务的集成一直是一个挑战。 早期,大模型 的开发者们通过创建定制化的集成来解决这个问题,例如,将 Copilot 与 Slack 集成,或将 ChatGPT 与 LinkedIn 集成。然而,这些集成都是特定于 大模型 和工具的,缺乏通用性和可扩展性。这意味着 Copilot 与 Slack 的集成方式不同于 ChatGPT 与 Slack 的集成方式,而 Copilot 与 Slack 的集成又不同于 Copilot 与 LinkedIn 的集成方式。
这种碎片化的集成方式带来了诸多问题:
- 开发成本高昂: 为每个 大模型 和服务组合创建定制集成需要投入大量的时间和资源。
- 维护困难: 当 大模型 或服务更新时,需要对集成进行相应的维护和更新,增加了维护的复杂性和成本。
- 互操作性差: 不同的 大模型 无法使用相同的集成,限制了 大模型 之间的互操作性和协同能力。
为了解决这些问题,Anthropic 公司于 2024 年末推出了 模型上下文协议 (MCP)。MCP 的目标是创建一个开放的标准,使所有 大模型 能够以相同的方式与各种服务进行交互。通过 MCP,大模型 可以更轻松地访问和利用外部数据和功能,从而扩展其应用范围和能力。
MCP 的核心概念与架构
MCP 的核心思想是将 大模型(MCP 客户端)与服务(通过 MCP 服务器暴露)之间的交互标准化。MCP 服务器充当翻译器,将服务的 API 转换为 大模型 可以理解的格式,并将 大模型 的请求转换为服务可以执行的指令。
更具体地说,MCP 架构包含以下关键组件:
- MCP 客户端 (MCP Client): 这是指 大模型,例如 ChatGPT 或 Claude。MCP 客户端通过 MCP 协议与 MCP 服务器通信,请求访问外部服务的功能和数据。
- MCP 服务器 (MCP Server): MCP 服务器是连接 大模型 和外部服务的桥梁。每个希望与 大模型 交互的服务都需要部署自己的 MCP 服务器。MCP 服务器负责将服务的 API 暴露给 大模型,并将 大模型 的请求转换为服务可以理解和执行的指令。
- MCP 协议 (MCP Protocol): MCP 协议是 MCP 客户端和 MCP 服务器之间进行通信的标准。它定义了消息的格式、交互流程和安全机制,确保 大模型 和服务之间能够可靠地进行交互。
MCP 服务器主要由以下三个部分组成:
- 工具 (Tools): 工具 定义了 大模型 可以执行的操作,例如创建 GKE 实例或查询数据库。每个工具对应于服务的一个或多个 API 端点。
- 资源 (Resources): 资源 是 大模型 可以访问的数据源,用于提供准确的响应。例如,资源 可以是数据库、文件系统或外部 API。
- 提示 (Prompts): 提示 是结构化的输入,用于指导 大模型 的交互。提示 可以包含指令、示例或约束,帮助 大模型 理解用户的意图并生成适当的响应。
通过这些组件的协同工作,MCP 提供了一种标准化的方式,使 大模型 能够访问和利用外部服务的功能和数据,从而扩展其应用范围和能力。
MCP 的实际应用案例
为了更好地理解 MCP 的优势,让我们来看一个实际的应用案例。假设你是一名泰勒·斯威夫特的忠实粉丝,并且非常渴望获得她最新巡演的演唱会门票。你知道门票非常难抢,但你决心尝试。你选择了一种非常规的方法:在 Reddit 上寻找。但是,你不想花费数小时浏览 Reddit 帖子。因此,你决定使用 ChatGPT 搜索 r/TaylorSwift 上是否有任何人出售门票。
在这种情况下,ChatGPT (你的 MCP 客户端) 与 Reddit MCP 服务器通信,该服务器以 ChatGPT 可以理解的方式将 Reddit API 暴露给 ChatGPT。ChatGPT 可以利用 Reddit MCP 服务器提供的 工具,例如搜索帖子、筛选结果等,来帮助你找到潜在的门票卖家。
更重要的是,如果你想将你的客户端从 ChatGPT 切换到 Claude,你也可以轻松做到,因为它们都遵循相同的 MCP 协议。
这个例子展示了 MCP 的互操作性优势。通过 MCP,不同的 大模型 可以使用相同的 MCP 服务器来访问和利用相同的服务,从而避免了重复开发和维护成本。
如何构建自己的 MCP 服务器
如果你想让你的服务能够与 大模型 交互,你需要构建自己的 MCP 服务器。以下是一些构建 MCP 服务器的方法:
- 从头开始构建: 你可以使用 Python、Java 或 C# 等流行语言的 SDK 来构建自己的 MCP 服务器。Anthropic 提供了一个 GitHub 仓库 包含了一些相关的规范和代码示例。
- 使用自动生成工具: 有一些工具可以自动从 API 端点生成 MCP 服务器,例如 Speakeasy、Stainless 和 FastAPI MCP。这些工具可以简化 MCP 服务器的开发过程,并减少手动编写代码的工作量。
无论你选择哪种方法,都需要注意以下几点:
- 优化 API: 大模型 在处理较小的上下文时表现更好(即运行速度更快)。因此,你应该谨慎选择要暴露给 大模型 的 API。
- 限制选择: 不要将所有 API 端点都暴露给 大模型,因为大多数 API 端点可能不会被使用。此外,如果 API 文档不够描述性,你的 大模型 可能会选择错误的 API。
- 优化 API 文档: 现有的 API 文档通常针对人类阅读进行了优化,而不是针对 大模型 的消费。在为 大模型 编写 API 文档时,你应该尽可能提供更多信息,并解释何时应使用该 API 端点。
- 编写测试: 编写测试 ( MCP evals) 以确保你的 大模型 正在调用正确的 工具 (API) 来完成正确的任务。并且一遍又一遍地运行这些测试。
- 创建 AI 原生 API: 大多数 API 都设计用于资源管理和自动化,而不是用于人类任务。请记住,大模型 模拟人类,因此,像人类一样,它们不关心低级别的资源创建。他们关心实现特定目标。因此,你应该专注于创建 AI 原生 API。
通过遵循这些最佳实践,你可以构建出高效、可靠的 MCP 服务器,并为你的服务开辟新的可能性。
MCP 的重要性与未来展望
MCP 本身并没有为 大模型 添加任何新的 工具 和功能。相反,它提供了一种标准化的方式来使 工具 可供 大模型 使用。因此,如果你拥有一个服务并希望 大模型 与之交互,你所要做的就是编写一个 MCP 服务器。
虽然创建 MCP 服务器可能并非易事,但 MCP 为我们使用 大模型 执行酷炫的工作流程打开了新的大门。以前,集成非常少且分散,因为你必须为希望 大模型 交互的每个服务创建特定于 大模型 的集成。现在,我们看到越来越多的 MCP 服务器涌现出来。
MCP 的出现具有重要的意义:
- 降低集成成本: 通过提供标准化的集成方式,MCP 大大降低了 大模型 与外部服务的集成成本,促进了 大模型 生态系统的发展。
- 提高互操作性: MCP 允许不同的 大模型 使用相同的 MCP 服务器来访问和利用相同的服务,提高了 大模型 之间的互操作性和协同能力。
- 促进创新: MCP 降低了 大模型 与外部服务集成的门槛,鼓励了开发者们创建更多创新性的 AI 应用。
展望未来,MCP 有望成为 大模型 领域的重要基础设施。随着越来越多的服务采用 MCP,大模型 的应用范围将进一步扩展,并为各行各业带来更多价值。
例如,在可观测性领域,Dynatrace 已经推出了自己的 MCP 服务器。这意味着用户可以使用聊天机器人与他们的可观测性后端进行交互,从而更轻松地诊断问题、监控性能和优化系统。
结论
模型上下文协议 (MCP) 是一个令人兴奋的新技术,它为 大模型 的互联互通开辟了新的可能性。通过提供标准化的集成方式,MCP 降低了 大模型 与外部服务的集成成本,提高了互操作性,并促进了创新。随着越来越多的服务采用 MCP,大模型 的应用范围将进一步扩展,并为各行各业带来更多价值。拥抱 MCP,让我们一起开启 大模型 的互联互通新时代!