MCP初步

120次阅读
没有评论

1. 概述

MCP(Model Context Protocol,模型上下文协议) 是由 Anthropic 推出的一种开放标准,旨在统一大型语言模型(LLM)与外部数据源和工具之间的通信协议。MCP 的主要目的在于解决当前 AI 模型因数据孤岛限制而无法充分发挥潜力的难题,MCP 使得 AI 应用能够安全地访问和操作本地及远程数据,为 AI 应用提供了连接万物的接口。
官网Model Context ProtocolIntroduction – Model Context Protocol
SPECSpecification (Latest) – Model Context Protocol Specification
SDK支持:目前支持的版本有:

2. 整体架构

2.1 MCP协议架构

MCP 遵循客户端-服务器架构(client-server),支持多种数据形式的交换,并具有良好的可扩展性。内置了安全机制以确保资源分配的安全控制,并且目前支持本地运行。官方计划未来增加对企业级身份验证的支持,以允许远程服务器的操作。Anthropic公司希望通过推动MCP成为行业开放标准,类似于HTTP对于网络浏览器和服务器间信息交换的作用。这样的标准化努力已经得到了一些合作伙伴的认可和支持,包括金融支付公司Block和数据管理解决方案供应商Apollo。此外,Anthropic还获得了亚马逊40亿美元的投资,用于加强其企业市场的服务,特别是针对企业客户的AI模型训练和部署。市场上也有声音质疑MCP能否真正成为广泛接受的标准,担心这可能会导致AI生态系统的进一步碎片化。然而,Anthropics的努力显示了他们致力于将MCP构建为开源生态系统,邀请更多的AI工具开发者和企业加入,共同促进AI技术的发展和应用。

MCP初步

基础协议
All messages between MCP clients and servers MUST follow the JSON-RPC 2.0 specification. The protocol defines three fundamental types of messages:

MCP初步

通信机制
MCP(Model Context Protocol)的连接机制遵循客户端-服务器架构。在这种架构中,MCP Clients与MCP Servers之间建立一对一的连接。
这种设计允许MCP Hosts(如AI应用程序)通过MCP Clients与一个或多个MCP Servers进行通信,以获取数据和执行任务。
MCP支持两种类型的通信机制:

  • 标准输入输出(Stdio):适用于本地进程间通信,其中Client启动Server程序作为子进程,消息通讯通过stdin/stdout进行,消息格式为JSON-RPC 2.0。
  • 服务器发送事件(SSE):用于基于HTTP的通信,允许服务器向客户端推送消息,而客户端到服务器的消息传递则使用HTTP POST,同样采用JSON-RPC 2.0格式进行消息交换。
    所有传输都使用JSON-RPC 2.0进行消息交换,这为MCP Clients和MCP Servers之间的通信提供了统一的消息格式。至于连接类型,MCP没有明确指出是长连接还是短连接,但考虑到其基于JSON-RPC 2.0的特性,它更可能支持长连接,以便保持客户端和服务器之间的持久交互状态。MCP的通信协议可以是TCP或UDP,这取决于具体的实现和部署需求。

2.2 核心概念

  • MCP 主机(MCP Hosts):发起请求的 LLM 应用程序(例如 Claude Desktop、IDE 或 AI 工具)。
  • MCP 客户端(MCP Clients):在主机程序内部,与 MCP server 保持 1:1 的连接。
  • MCP 服务器(MCP Servers):为 MCP client 提供上下文、工具和 prompt 信息。
  • 本地资源(Local Resources):本地计算机中可供 MCP server 安全访问的资源(例如文件、数据库)。
  • 远程资源(Remote Resources):MCP server 可以连接到的远程资源(例如通过 API)。

2.3 MCP Server

MCP Server 是 MCP 架构中的关键组件,Servers provide the fundamental building blocks for adding context to language models via MCP. These primitives enable rich interactions between clients, servers, and language models:

  • Prompts: Pre-defined templates or instructions that guide language model interactions
  • Resources: Structured data or content that provides additional context to the model
  • Tools: Executable functions that allow models to perform actions or retrieve information
    MCP初步

资源(Resources),工具(Tools)和 提示(Prompts),这些功能使 MCP server 能够为 AI 应用提供丰富的上下文信息和操作能力,从而增强 LLM 的实用性和灵活性。
可以在 MCP Servers RepositoryAwesome MCP Servers 中找到许多由社区实现的 MCP server。使用 TypeScript 编写的 MCP server 可以通过 npx 命令来运行,使用 Python 编写的 MCP server 可以通过 uvx 命令来运行。

2.4 MCP Client

MCP client 充当 LLM 和 MCP server 之间的桥梁,MCP client 的工作流程如下:

  • MCP client 首先从 MCP server 获取可用的工具列表。
  • 将用户的查询连同工具描述通过 function calling 一起发送给 LLM。
  • LLM 决定是否需要使用工具以及使用哪些工具。
  • 如果需要使用工具,MCP client 会通过 MCP server 执行相应的工具调用。
  • 工具调用的结果会被发送回 LLM。
  • LLM 基于所有信息生成自然语言响应。
  • 最后将响应展示给用户。
    Example Clients – Model Context Protocol 找到当前支持 MCP 协议的客户端程序。
    以下是部分支持的应用:

    MCP初步
正文完
 0
评论(没有评论)