模型上下文协议(MCP)

摘要

模型上下文协议(Model Context Protocol, MCP)是一套基于 JSON-RPC 2.0 的开放标准化协议,通过定义统一的交互规范与能力原语,在大语言模型应用与外部数据、工具、业务系统之间构建标准化接入层。针对 AI Agent 外部系统对接成本高、协议碎片化的痛点,本文从协议架构、三层角色、三类原语与生命周期四个维度解析 MCP 技术规范,结合 Python SDK 示例辨析其与 Function Calling、LSP 的边界,并总结安全最佳实践。研究表明 MCP 可显著降低多系统集成成本,是构建可扩展 Agent 系统的关键基础设施。

关键词:模型上下文协议;AI Agent;JSON-RPC;工具调用


1 引言

大语言模型驱动的智能体(AI Agent)已成为人工智能落地的核心形态,其核心能力边界取决于外部系统的接入广度与深度。在传统开发模式中,Agent需针对文档系统、日历服务、数据库、业务接口等不同外部系统进行点对点API适配,不同系统的调用格式、认证机制、返回结构差异显著,导致集成代码冗余、迁移成本高、生态碎片化严重1。

模型上下文协议(Model Context Protocol,简称MCP)应运而生,它是由社区主导的开放协议,设计灵感源自语言服务器协议(Language Server Protocol, LSP),核心目标是标准化LLM应用与外部能力的接入方式,被业界称为"AI领域的USB接口"2。支持MCP的AI应用可自动发现、接入并调用符合规范的外部服务,无需重复开发适配层,大幅提升Agent系统的可扩展性与可维护性。

本文面向Agent开发者,从协议规范、架构设计、工程实现、安全实践四个层面展开论述,为Agent系统的外部能力接入提供完整的技术参考。

2 协议底层架构

MCP采用分层设计,自下而上分为传输层与数据层,基于JSON-RPC 2.0构建标准化消息交互机制,并定义了完整的会话生命周期。

2.1 协议分层模型

MCP的协议栈分为两层,各层职责边界清晰,可独立演进:

图1 MCP协议分层架构

  1. 传输层 :负责JSON-RPC消息的物理传输,不解析协议语义。主流实现方式包括两种3:
  • Stdio模式 :通过标准输入输出流传输,适用于本地进程间通信,部署简单、安全性高。
    • Streamable HTTP模式:基于 HTTP POST 发送请求,SSE 流式推送响应,适用于远程服务接入,支持 OAuth 2.0 认证。
  1. 数据层 :基于JSON-RPC 2.0规范定义消息结构与交互语义,是协议的核心层。包含生命周期管理、服务端能力原语、客户端能力原语、通用工具原语四大模块4。

2.2 消息格式规范

MCP所有消息严格遵循JSON-RPC 2.0规范,定义三类消息类型5:

  • 请求(Request):包含唯一ID、方法名与参数,用于发起操作。ID不可为null,同一会话内不可重复。
  • 响应(Response):携带与请求相同的ID,包含结果或错误对象,二者不可同时存在。
  • 通知(Notification):不含ID,用于无需回复的事件推送,如日志、进度更新。

请求消息基础格式示例:

json 复制代码
{
  "jsonrpc": "2.0",  "id": "req_001",
  "method": "tools/call",
  "params": {
    "name": "get_weather",
    "arguments": { "city": "Shanghai" }
  }
}

2.3 会话生命周期

MCP 在 2026-07-28 版本后转为无状态协议,每个请求在 _meta 字段中携带协议版本与能力信息,服务端可独立处理每个请求。此前版本为有状态协议,会话分为三个阶段。,确保能力协商与状态管理的规范性6:

  1. 初始化阶段 :客户端发送initialize请求,携带协议版本、支持的能力集、实现信息;服务端返回自身能力集,完成能力协商。此阶段必须是会话的首个交互。2026-07-28 版本起,客户端可先发送 server/discover 请求查询服务端支持的协议版本与能力。
  2. 运行阶段:正常协议通信,进行工具调用、资源读取、模板调用等业务交互。
  3. 关闭阶段:任意一方发起关闭通知,完成资源释放与会话优雅终止。

能力协商是初始化阶段的核心,客户端与服务端双向声明支持的可选功能。服务端典型能力包括tools、resources、prompts、logging;客户端典型能力包括sampling(2026-07-28 起弃用)、roots、elicitation6。只有双方均支持的功能才可在会话中使用。

3 核心架构与角色定义

MCP采用Host-Client-Server三层架构模型,三类角色职责解耦,构成完整的交互链路。

3.1 角色职责划分

角色 定位 运行位置 核心职责 典型实例
Host(主应用) Agent运行载体与用户入口 用户侧 管理对话会话、模型权限、连接生命周期;控制用户授权与高风险操作确认 桌面智能助手、IDE插件、企业办公Agent
Client(客户端) 协议通信连接器 Host内部 遵循MCP协议与Server通信;完成能力发现、请求转发、结果回传;一个Host可实例化多个Client对接多Server MCP SDK客户端组件
Server(服务端) 外部能力封装提供者 外部系统侧 将本地/远程系统能力封装为MCP标准原语;接收并执行调用请求 天气服务MCP Server、数据库MCP Server

完整交互链路为:用户指令 → Host → Client → MCP Server → 外部业务系统,执行结果沿原路径反向返回。

图2 MCP三层架构交互图

3.2 Sampling机制:服务端反向调用能力

Sampling是MCP区别于普通工具调用的核心特性,允许MCP Server反向请求Host侧的大语言模型完成推理任务7。该机制使服务端无需集成LLM SDK,即可利用宿主模型能力完成智能任务,同时保持模型权限由Host统一管控。注意:自协议版本 2026-07-28 起 Sampling 已被弃用,新实现应直接与 LLM 提供商 API 集成。

Sampling的典型应用场景包括:文档智能摘要、数据语义分析、错误自动修复等。服务端通过sampling/createMessage方法发起请求,Host根据权限配置决定是否执行,并返回模型生成结果。

3.3 其他客户端原语

  • Roots:允许服务端向客户端查询可操作的 URI 或文件系统边界,限定 Server 的操作范围。
  • Elicitation :允许服务端向用户请求额外信息或操作确认,通过 elicitation/create 方法实现。

3.4 通知机制

MCP 支持实时通知,使服务端与客户端之间保持动态同步。当服务端可用工具发生变化时(新增、修改、临时不可用),服务端通过 subscriptions/listen 长连接推送变更通知。客户端订阅特定通知类型后,服务端在流上投递匹配的变更事件。

3.5 授权框架

MCP 为 HTTP 传输场景提供 OAuth 2.0 授权框架,支持 bearer token、API key、自定义请求头等认证方式。Stdio 传输从环境变量获取凭据,HTTP 传输推荐使用 OAuth 2.0 获取认证令牌。

4 核心能力原语

MCP Server对外提供三类标准化能力原语,覆盖动作执行、上下文供给、模板复用三大场景,构成Agent外部能力的完整表达体系。

4.1 Tools(工具原语)

Tools对应可执行的函数操作,支持模型通过结构化调用修改外部系统状态,是Agent动作能力的核心载体。典型能力包括天气查询、代码执行、数据库读写、日程创建等。

工具定义采用结构化JSON Schema,标准接口包括:

  • tools/list:枚举服务端所有可用工具
  • tools/call:执行指定工具调用

基于Python官方SDK的工具定义示例8:

python 复制代码
from mcp.server.fastmcp import FastMCP

mcp = FastMCP("WeatherServer")

@mcp.tool()
def get_weather(city: str) -> str:
    """
    查询指定城市的实时天气
    Args:
        city: 城市名称,如Shanghai、Beijing
    """
    # 实际业务逻辑:调用第三方天气API
    return f"{city} 今日天气:小雨,18-23℃,建议携带雨具"

if __name__ == "__main__":
    mcp.run()

4.2 Resources(资源原语)

Resources对应只读类上下文数据,用于向Agent提供任务所需的背景信息,不改变外部系统状态。典型资源包括项目文档、配置文件、数据库表结构、会议记录等。

资源通过统一资源标识符(URI)进行定位与访问,标准接口包括resources/list与resources/read。资源URI示例:

  • file://project/docs/readme.md(本地文档资源)
  • db://sales/order_table(数据库表结构资源)

4.3 Prompts(提示模板原语)

Prompts对应可复用的交互提示模板,封装特定场景的指令结构与输出规范,支持Agent直接调用完成标准化任务。典型模板包括代码审查模板、会议总结模板、故障分析模板等。标准接口包括prompts/list与prompts/get。

5 完整交互流程

以"查询上海明日天气并添加日历出行提醒"任务为例,MCP完整调用时序如下:

图3 MCP调用时序图

完整流程分为五个阶段:

  1. 能力发现与任务规划:Host检索已连接的MCP Server,获取可用工具集,拆解任务步骤。
  2. 工具调用与结果返回:Client向目标Server发起调用请求,Server执行并返回数据。
  3. 信息整合与步骤推进:Agent解析返回结果,规划下一步操作。
  4. 高风险操作用户确认:涉及修改外部数据的操作,触发人机在环(Human-in-the-loop)机制。
  5. 执行操作与结果反馈:用户确认后执行最终操作,返回任务结果。

6 相关概念辨析

6.1 MCP与Function Calling

Function Calling是大语言模型的原生能力,负责生成结构化的函数调用参数;MCP是接入层协议,负责标准化外部系统的发现、接入与交互流程。二者是互补关系:Function Calling解决"模型怎么调用"的问题,MCP解决"怎么接入更多系统"的问题9。

6.2 MCP与LSP

MCP在设计理念上借鉴了LSP(语言服务器协议):LSP标准化了编辑器与语言服务的对接,MCP标准化了Agent与外部能力的对接。二者均采用客户端-服务器架构、JSON-RPC通信、能力协商机制,目标都是构建可复用的生态系统2。

6.3 MCP、Function Calling、Skill三者关系

  • Function Calling:模型底层能力,生成调用指令。
  • MCP:接入层标准,打通外部系统通道。
  • Skill:业务层能力组合,由多个工具调用与逻辑流程封装而成。

三者逻辑关系:MCP提供标准化接入通道,Function Calling实现指令生成,二者结合支撑Skill构建,最终形成Agent完成真实任务的完整能力。

7 Agent开发安全最佳实践

MCP协议本身不强制实现安全机制,安全边界与权限控制需由Host与Server共同落地,面向Agent开发的核心实践原则包括:

  1. 最小权限原则 :仅授予任务执行所需的最低权限,如只读场景不开放写入权限,严格限制Server可访问的资源范围10。
  2. 高风险操作强制确认:涉及数据修改、消息发送、资源删除等高风险操作,必须触发用户确认流程,禁止自动执行。
  3. 敏感凭证隔离:认证密钥、接口凭证等敏感信息由Client/Server层独立管理,严禁传入大模型上下文,防止提示注入泄露。
  4. 输入校验与防注入:对工具调用参数进行严格校验与清洗,防范Prompt Injection与命令注入攻击。
  5. 全链路审计日志:完整记录调用主体、目标Server、调用工具、传入参数、返回结果与执行时间,支持事后审计与问题排查。
  6. 沙箱隔离:执行代码、文件操作类工具时,运行在独立沙箱环境中,限制系统资源访问权限。

8 结论

模型上下文协议(MCP)通过标准化的架构设计、能力原语与交互机制,解决了AI Agent多外部系统集成的碎片化问题,为Agent生态提供了可复用、可扩展的接入基础设施。其三层角色架构、三类能力原语与完整的会话机制,兼顾了灵活性与安全性,能够适配从个人工具到企业级系统的多元接入场景。

对于Agent开发者而言,基于MCP构建外部能力层,可大幅降低多系统适配的开发与维护成本,提升系统的可演进性。随着Agent技术的普及,MCP将成为智能体生态的核心接入标准,推动AI能力与业务系统的深度融合。


参考文献

1 Model Context Protocol. "MCP Specification." Official , 2025.\ 2 Model Context Protocol. "MCP Architecture Overview." Official , 2025.\ 3 Vectree. "Implementation Details of JSON-RPC Messaging in MCP." Vectree , 2025.\ 4 Model Context Protocol. "Basic Protocol Messages." Official , 2024.\ 5 Model Context Protocol. "JSON-RPC Message Specification." Official , 2025.\ 6 Model Context Protocol. "Lifecycle & Capability Negotiation." Official , 2025.\ 7 Model Context Protocol. "Sampling Mechanism." Official , 2025.\ 8 Model Context Protocol. "Build an MCP Server - Python SDK." Official , 2026.\ 9 Microsoft. "Semantic Kernel Adds MCP Support for Python." MS DevBlogs , 2025.\ 10 Model Context Protocol. "Authorization Framework." Official , 2025.\ 11 屿哥扒透AI. "Agent里的MCP到底是什么?" 抖音视频, 2025.

相关推荐
李溪白1 小时前
篇十:实战:搭建一个企业知识库问答系统
agent
Jing_jing_X3 小时前
大模型只会输出token,是怎么“调用工具“的?
ai·agent·个人开发·ai应用开发
枫叶丹43 小时前
语音 AI 怎样边听边答:实时对话系统的工作原理
开发语言·人工智能·chatgpt·开源·php·agent·codex
七牛云行业应用4 小时前
Dots 完整教程:从安装入口、跑第一个任务到给 Codex 派活(2026 年 10 月)
人工智能·大模型·agent
hpoenixf13 小时前
从工具调用到模型输入:把 Agent 的观测链路接起来
agent
10年前端老司机14 小时前
你的RAG检索正在“高效地重复废话”:一文彻底搞懂MMR算法
langchain·llm·agent
Csvn15 小时前
线上出问题怎么查?一套可复现的排障 SOP(O04)
人工智能·aigc·agent
我跟你说19 小时前
不改权重的终身学习:AI Agent 的“可塑性”架构与技能自演进深度解构
agent
用户7217465882620 小时前
把云端沙箱实例拆成三层看:控制面、运行时、计费面的一次全流程核查
agent·ai编程