Agentic AI 教程

3.7 MCP

介绍模型上下文协议(MCP)的定义、核心组件、能力范围以及实际演示。

3.7 MCP

定义:MCP(Model Context Protocol,模型上下文协议)是由 Entropy 提出的一个标准,旨在为大型语言模型(LLM)提供一种标准化的方式来访问外部工具和数据源。 目的:解决开发者在构建智能体式应用时,需要为每个应用重复编写代码来集成不同工具(如 Slack, GitHub, Google Drive 等)的痛点。 现状:该协议已被许多公司和开发者广泛采用,形成了一个活跃的生态系统。


一、问题与解决方案

传统开发模式的问题

重复造轮子

  • 开发者 A 构建 App 1,需要集成 Slack、Google Drive、GitHub 和 PostgreSQL。
  • 开发者 B 构建 App 2,同样需要集成这些工具。
  • 每个应用都必须独立编写封装代码来调用各个工具的 API。
  • 如果有 m 个应用和 n 个工具,整个社区的工作量是 m × n,效率低下且浪费资源。

MCP 的解决方案

  • 引入共享服务器:MCP 提出了一种标准,允许应用程序通过一个共享的 MCP 服务器来访问工具和数据源。
  • 工作量优化
    • 不再是每个应用都创建自己的工具封装。
    • 只需要开发 n 个 MCP 服务器(每个对应一个工具),然后让 m 个应用去连接这些服务器。
    • 整个社区的工作量从 m × n 降低到 m + n,实现了巨大的效率提升。

二、MCP 的核心组件

1. 客户端 (Clients)

  • 角色:希望访问外部工具或数据的应用程序。
  • 示例:Cursor, Claude Desktop, Windsurf。
  • 功能:向 MCP 服务器发送请求,获取数据或执行操作。

2. 服务器 (Servers)

  • 角色:提供工具和数据源的软件服务。
  • 示例:Slack, Google Drive, GitHub, PostgreSQL。
  • 功能:作为“包装器”,接收来自客户端的请求,并将其转换为对原始工具 API 的调用,然后将结果返回给客户端。
  • 来源:部分服务器由服务提供商开发,但也有大量第三方开发者贡献。

三、MCP 的能力范围

  • 初始设计:侧重于为 LLM 提供更多上下文,最初的工具主要是用于“获取数据”(fetch data)。
  • 当前发展:MCP 的能力已扩展,不仅能访问数据,还能调用更通用的功能和执行操作。在 MCP 文档中,这些统称为“资源”(resources)。

实际演示:Claude Desktop 使用 GitHub MCP 服务器

  1. 场景:用户在 Claude Desktop 中输入查询:“总结该 GitHub 仓库的 README 文件内容”,并附上 URL。
  2. 流程
    • Claude Desktop 作为 MCP 客户端,识别到这是一个需要访问 GitHub 的请求。
    • 它向已连接的 GitHub MCP 服务器发送一个请求,参数包含文件路径 (README.md)、仓库名 (aisuite) 和所有者 (andrewng)。
    • GitHub MCP 服务器执行请求,从仓库下载文件内容。
    • 服务器将长文本响应返回给 Claude Desktop。
    • Claude Desktop 将接收到的内容反馈给 LLM,LLM 生成一份简洁、格式良好的摘要。
  3. 第二次查询:用户询问“有哪些最新的 Pull Request?”。
    • 同样,客户端向服务器发送“List pull requests”的请求。
    • 服务器返回 JSON 格式的拉取请求列表。
    • LLM 将其整理成清晰易读的列表,包括标题、状态、作者和描述等信息。

On this page