MCP协议技术概述:连接AI Agent与外部世界的桥梁

前言

MCP(Model Context Protocol)是 Anthropic 推出的一个开放协议,用于标准化 AI 模型与外部工具/数据源之间的通信。通过 MCP,可以让 AI Agent 安全、规范地调用外部系统能力。

本文将系统介绍 MCP 的核心原理、交互机制及部署模式。

MCP协议核心原理

整体架构

MCP 协议定义了 AI 客户端(Agent)与 MCP Server 之间的通信规范,MCP Server 再与实际的业务系统进行交互:

flowchart LR
    subgraph 客户端
        A[Agent]
    end
    
    subgraph MCP层
        B[MCP Server]
    end
    
    subgraph 业务层
        C[业务系统API]
    end
    
    A <-->|MCP协议<br/>JSON-RPC 2.0| B
    B <-->|HTTP/其他协议| C

工作机制

MCP 协议的工作流程包含以下几个关键阶段:

阶段 说明
工具注册 MCP Server 启动时向客户端声明自己提供哪些工具(tools)、资源(resources)、提示词(prompts)
消息格式 使用 JSON-RPC 2.0 协议进行通信
调用流程 Agent 识别用户意图 → 选择合适的 MCP 工具 → 发送调用请求 → MCP Server 执行业务逻辑 → 返回结果

Agent与MCP的交互机制

能力发现流程

Agent 需要"知道"当前有哪些 tools 可用、参数定义等信息,这个过程在 MCP 协议的初始化和能力发现阶段 完成:

sequenceDiagram
    participant Agent as Agent
    participant MCP as MCP Server
    participant Biz as 业务系统API

    rect rgb(240, 248, 255)
        Note over Agent, MCP: 阶段1: 初始化握手
        Agent->>MCP: initialize 请求<br/>(声明客户端能力)
        MCP-->>Agent: initialize 响应<br/>(声明服务端能力、协议版本)
        Agent->>MCP: initialized 通知<br/>(确认初始化完成)
    end

    rect rgb(255, 248, 240)
        Note over Agent, MCP: 阶段2: 工具发现
        Agent->>MCP: tools/list 请求
        MCP-->>Agent: 返回工具列表<br/>(名称、描述、参数Schema)
    end

    rect rgb(240, 255, 240)
        Note over Agent, Biz: 阶段3: 实际调用
        Agent->>MCP: tools/call 请求<br/>(工具名 + 参数)
        MCP->>Biz: HTTP 请求<br/>(调用实际API)
        Biz-->>MCP: HTTP 响应
        MCP-->>Agent: 返回执行结果
    end

整个流程可以分为三个阶段:

  1. 初始化握手:Agent 与 MCP Server 建立连接,双方交换能力信息和协议版本
  2. 工具发现:Agent 通过 tools/list 请求获取 MCP Server 提供的所有工具信息
  3. 实际调用:Agent 根据用户意图选择合适的工具,发起调用请求

tools/list返回的信息结构

MCP Server 在响应 tools/list 时,返回的核心字段:

字段 说明
name 工具唯一标识,如 create_order
description 工具功能描述,LLM 用此判断何时调用
inputSchema JSON Schema 格式的参数定义(类型、必填、描述等)

Agent 获取这些信息后,会将其注入到 LLM 的上下文中,使 LLM 能够:

  • 了解有哪些工具可用
  • 理解每个工具的用途
  • 知道调用时需要传递什么参数

传输协议:stdio与SSE

MCP Server 与客户端之间支持两种传输层协议。

stdio(Standard Input/Output)

stdio 模式通过进程的标准输入输出进行通信:

特性 说明
通信方式 通过进程的标准输入(stdin)和标准输出(stdout)
部署位置 必须在本地运行
启动方式 客户端直接启动 MCP Server 进程
连接模式 一对一,每个客户端启动独立进程
典型场景 本地开发、桌面应用、私有部署

SSE(Server-Sent Events)

SSE 模式基于 HTTP 协议,支持远程部署:

特性 说明
通信方式 基于 HTTP 的服务端推送技术
部署位置 可以在远程服务器上
启动方式 独立部署为 HTTP 服务
连接模式 一对多,可服务多个客户端
典型场景 云端部署、SaaS 服务、对外开放

架构设计方案

方案一:stdio模式

用户将 MCP Server 部署在本地,配置业务系统的凭证与业务系统进行通信,底层是 HTTP 请求,鉴权取决于业务系统的鉴权体系。

flowchart TB
    subgraph local["用户本地机器"]
        A[Agent]
        B["MCP Server<br/>(配置业务凭证)"]
        A <-->|stdin/stdout| B
    end
    
    subgraph remote["业务系统服务器"]
        C["业务系统API<br/>(鉴权、处理业务)"]
    end
    
    B -->|HTTP 请求| C
    C -->|HTTP 响应| B

特点:

  • 用户需要在本地安装 MCP Server
  • 业务凭证配置在用户本地
  • MCP Server 内部用 HTTP 调用业务系统 API
  • 鉴权由业务系统完成

方案二:SSE模式

将 MCP Server 部署在服务器上,客户端和 MCP Server 之间可以加一层网关,通过 API 秘钥进行鉴权。

flowchart TB
    subgraph local["用户本地"]
        A[Agent]
    end
    
    subgraph server["业务系统服务器"]
        B["网关<br/>(API Key 鉴权)"]
        C[MCP Server]
        D[业务系统 API]
        
        B --> C
        C --> D
    end
    
    A <-->|"HTTP/SSE<br/>API Key 鉴权"| B

特点:

  • MCP Server 部署在业务系统服务器上(云端)
  • 用户不需要本地安装,只需配置连接地址
  • 可以在前面加网关统一鉴权(API Key 方式)
  • 更适合 SaaS 化、多租户场景

两种模式对比分析

维度 stdio 模式 SSE 模式
部署复杂度 用户需本地安装 用户零安装
凭证管理 散落在各用户本地 集中管理
安全性 凭证在用户侧,有泄露风险 可通过网关统一管控
更新维护 需用户主动更新 服务端更新即可
网络要求 本地进程通信,无延迟 依赖网络,有一定延迟
可观测性 难以统一监控 可集中监控、审计
扩展性 受限于用户本地资源 可弹性扩容
适合场景 开发测试、私有部署 生产环境、对外服务

总结

MCP 协议为 AI Agent 与外部系统的交互提供了标准化的解决方案:

  1. 协议层面:使用 JSON-RPC 2.0 规范通信格式,定义了初始化、工具发现、工具调用等标准流程
  2. 传输层面:支持 stdio 和 SSE 两种模式,分别适用于本地部署和云端部署场景
  3. 架构层面:MCP Server 作为中间层,解耦了 Agent 与业务系统,使工具能力可以被多个 Agent 复用

随着 AI Agent 技术的发展,MCP 协议正在成为工具调用的行业标准,为构建丰富的 AI 应用生态奠定基础。

参考资料


本文采用 CC BY-NC-SA 4.0 许可