MCP协议

AI 第三篇

背景

知道MCP还是源于因为之前验证大模型集成时了解到的。因为当时后续计划做AI应用,增加saas平台的噱头的同时成为一个亮点功能,提升用户体验。

基础概念与架构设计

MCP(Model Context Protocol)是一个开放协议,它标准化了应用程序如何向大语言模型(LLMs)提供上下文。可以将MCP比作AI应用的USB-C接口。正如USB-C提供了一种标准化的方式,将你的设备连接到各种外围设备和配件,MCP 也提供了一种标准化的方式,将AI模型连接到不同的数据源和工具。

一、协议本质解构

MCP是一种客户端-服务器架构的数据访问协议,专为AI应用(如大语言模型)设计,其核心是为AI应用提供一种标准化方式来安全访问多种数据源。

关键组件

  1. MCP 主机:运行AI应用并发起数据请求,如聊天应用或IDE
  2. MCP 客户端:处理与 MCP 服务器的通信
  3. MCP 服务器:连接到各种数据源的轻量级程序
  4. 大型语言模型(LLM):分析问题并选择回答的 AI 模型
  5. 数据源:包括数据库、外部 API 等

MCP采用简洁的JSON格式进行通信,主要支持两类基本操作:

  • 发现操作:客户端识别服务器提供的能力
  • 执行操作:请求服务器执行特定工具来访问数据

二、核心作用剖析

  1. 访问标准化

    • 为不同类型的数据源提供统一的访问接口
    • 客户端无需了解每个数据源的具体访问细节
  2. 安全控制

    • 服务器明确声明其访问能力和权限范围
    • 支持基本的认证和授权机制
    • 客户端可以限制服务器的访问范围
  3. 工具扩展性

    • 服务器可以动态注册和提供各种工具
    • 客户端可以发现并使用这些工具
    • 支持从简单的文件读取到复杂的API调用等多种操作

三、基本工作流程

MCP的典型工作流程如下:内部实现可能会有多次循环

alt text
大体流程如下:

  1. 用户向 MCP 主机(如聊天应用或 IDE)提出问题
  2. 主机将问题发送给大型语言模型(LLM)进行分析
  3. LLM 确定需要使用哪些工具来回答问题
  4. 主机通过 MCP 客户端请求执行相应工具
  5. MCP 客户端向不同的 MCP 服务器发送工具执行请求
  6. MCP 服务器访问相应的数据源(数据库或外部 API)
  7. 数据源返回结果给 MCP 服务器,再传回客户端
  8. MCP 客户端汇总工具执行结果并返回给主机
  9. 主机将工具结果发送给 LLM 生成最终回答
  10. 最终回答显示给用户

四、现实应用场景

MCP适用于以下典型场景:

  1. 增强型AI聊天应用

    • 让聊天机器人能够访问用户本地文件和数据库
    • 使AI可以获取并引用真实、最新的信息
  2. 智能开发工具

    • IDE中的代码助手可以访问项目代码文件
    • 辅助工具可以查询API文档和相关资源
  3. 企业AI集成

    • 让AI应用安全地访问企业内部数据
    • 在保护敏感信息的同时提供个性化服务

五、协议现状与局限

当前MCP协议的特点与局限:

  1. 简洁性优先

    • 协议设计相对简单,专注于解决基本的数据访问问题
    • 尚未包含复杂的加密、动态路由等高级功能
  2. 开发阶段

    • 协议仍在发展中,标准可能会随时间演进
    • 生态系统正在逐步构建
  3. 基础功能聚焦

    • 当前主要聚焦于基础的数据访问能力
    • 缺乏高级的事务处理、分布式一致性等特性

结论

MCP代表了AI工具与数据源之间交互的一个重要标准化尝试。它为构建能够访问和利用各种数据的AI应用提供了基础架构,虽然相对简单,但解决了AI应用难以安全访问多样化数据的关键问题。随着协议的发展,MCP有潜力成为AI应用与数据源之间交互的重要标准,类似于HTTP对于web应用的意义。

但是目前MCP仍处于相对早期阶段,其真正的潜力和影响力将随着更多实现和应用的出现而逐步显现。

参考

https://www.anthropic.com/news/model-context-protocol
https://github.com/modelcontextprotocol
https://modelcontextprotocol.io/introduction
https://www.youtube.com/watch?v=sahuZMMXNpI
https://www.youtube.com/watch?v=eur8dUO9mvE
https://www.youtube.com/watch?v=kQmXtrmQ5Zg&t=2s