第七部分

MCP协议

模型上下文协议(Model Context Protocol)是AI世界的"USB-C"接口标准,让AI应用能够无缝连接各种数据源和工具服务。

MCP概述

AI世界的"USB-C"接口标准

Model Context Protocol

统一AI与外部世界的连接标准

MCP(Model Context Protocol)是由Anthropic推出的开放协议,旨在标准化AI模型与外部数据源、工具之间的通信方式。就像USB-C统一了电子设备的连接标准一样,MCP正在统一AI应用与外部服务的连接方式。

在MCP出现之前,每个AI应用都需要为不同的数据源和工具编写特定的集成代码,这导致了大量的重复工作和碎片化生态。MCP通过定义统一的接口规范,让开发者只需实现一次协议,就能让任何支持MCP的AI应用使用其服务。

AI应用
MCP协议
数据源/工具
核心思想:MCP采用客户端-服务器架构,AI应用作为Host通过Client与各种Server通信。每个Server提供特定的能力(如访问文件、查询数据库、调用API),Host可以根据需要连接多个Server,组合出强大的功能。

架构解析

Host, Client, Server三层架构

MCP架构交互图
?
Host(主机)
AI应用程序,如Claude Desktop、IDE插件等,负责协调和管理Client
Client(客户端)
Host内部的MCP客户端实现,负责与Server建立连接和通信
Server(服务器)
提供具体能力的服务端,如文件系统、数据库、API服务等
Host(主机)详解

Host是最终用户直接交互的AI应用程序,主要职责包括:

  • 管理多个MCP Client的生命周期
  • 协调不同Client之间的资源分配
  • 处理用户输入和AI模型的响应
  • 决定何时调用哪个Client的能力
  • 维护安全边界和用户权限控制

典型示例:Claude Desktop、Cursor IDE、Windsurf等

Client(客户端)详解

Client是Host内部与Server通信的桥梁,主要职责包括:

  • 与Server建立和维护连接
  • 发送请求并接收响应
  • 处理协议级别的消息格式转换
  • 管理会话状态和错误恢复
  • 实现传输层(stdio或HTTP/SSE)

通信方式:标准输入输出(stdio)或 HTTP with Server-Sent Events

Server(服务器)详解

Server是提供具体能力的独立进程或服务,主要职责包括:

  • 暴露Resources(资源)供AI读取
  • 提供Tools(工具)供AI调用
  • 实现Sampling(采样)请求AI生成
  • 处理权限验证和访问控制
  • 管理自身的状态和资源

示例Server:文件系统、Git、数据库、Slack、浏览器自动化等

点击上方架构图的任意一层,查看该层的详细职责和工作原理。MCP的三层架构实现了关注点分离,让AI应用、通信层和能力提供层可以独立演进。

核心能力

Resources, Tools, Sampling三大支柱

Resources(资源)

Server暴露的只读数据资源,AI可以读取这些资源来获取上下文信息。如文件内容、数据库记录、API响应等。

Tools(工具)

Server提供的可调用函数,AI可以调用这些工具来执行操作。如创建文件、发送消息、执行命令等。

Sampling(采样)

Server可以请求Host的AI模型生成内容,实现双向通信。这让Server能够利用AI能力完成复杂任务。

JSON-RPC 2.0
// 点击上方卡片查看对应的能力示例

// Resources - AI读取资源
{
  "jsonrpc": "2.0",
  "method": "resources/read",
  "params": {
    "uri": "file:///project/README.md"
  },
  "id": 1
}

// Server返回资源内容
{
  "jsonrpc": "2.0",
  "result": {
    "contents": [
      {
        "uri": "file:///project/README.md",
        "mimeType": "text/markdown",
        "text": "# 项目说明..."
      }
    ]
  },
  "id": 1
}

MCP vs Function Calling

理解两者的区别与联系

对比维度 Function Calling MCP协议
定义 AI模型原生能力,让模型输出结构化函数调用 应用层协议,标准化AI与外部服务的通信
层级 模型层能力 应用层协议
作用范围 单次请求-响应周期内的工具调用 持久连接,支持双向通信
发现机制 工具定义需在请求时提供 动态发现Server capabilities
生态集成 每个应用单独实现 一次实现,多处复用
标准化 各厂商实现略有差异 统一的开放标准
关系 MCP内部通常使用Function Calling来实现Tools调用
关键洞察:MCP和Function Calling不是竞争关系,而是互补关系。MCP在应用层提供标准化的服务接入框架,而Function Calling在模型层提供结构化的输出能力。MCP Server内部通常会使用Function Calling来解析和执行AI的Tool调用请求。

Tool调用模拟器

体验MCP Tools的调用流程

MCP Tool调用模拟
?
可用工具
read_file
write_file
list_directory
execute_command
调用结果
success read_file
{ "content": "# Project README\\n\\nThis is a sample project...", "mimeType": "text/markdown", "size": 256 }
选择左侧的工具并填写参数,点击"执行调用"模拟MCP Tool的调用过程。在实际应用中,AI模型会根据用户请求自动选择合适的工具并填充参数。