MCP协议核心解析:标准化AI工具调用的设计与实践

一、MCP 解决的两个根本问题

大模型有两个结构性缺陷:训练数据有截止日期(如 GPT-3.5 Turbo 截止 2021 年 9 月),以及无法主动与外部系统交互------不能调用 API、查询数据库、执行状态变更操作。

MCP(Model Context Protocol)是 Anthropic 在 2024 年推出的开放协议,专门为解决这两个问题而设计。它在大模型与外部数据源、服务之间建立了标准化的通信通道,让静态的语言模型具备动态调用外部能力的基础设施。


二、MCP 的三个核心组件

MCP 架构由三个角色组成,各自职责清晰:

MCP Server 是能力提供方。每个 Server 封装一类资源或服务(本地文件系统、数据库、远程 API 等),通过 MCP 协议对外暴露工具列表。类比 HTTP 服务:Server 封装业务逻辑,通过协议提供访问入口。

MCP Client 是协议翻译层。负责将 MCP 协议的消息格式转换为 Host 应用可以理解的内容。类比各语言的 HTTP Client 库(Java 的 HttpClient、Python 的 requests),Client 屏蔽了协议细节,让 Host 专注于业务逻辑。

MCP Host 是使用方。任何集成了 MCP Client 的应用都可以作为 Host,例如 Claude Desktop、Cursor、Cline(VS Code 插件)。Host 负责将 Server 提供的工具列表格式化为 LLM 可理解的 prompt,接收 LLM 返回的 tool_calls 指令,再调用对应的 MCP Server 执行操作。

整个调用链路:Host 从 Server 获取工具列表 → 将工具列表注入 LLM prompt → LLM 返回 tool_calls JSON → Host 调用 Server 执行 → 返回结果给 LLM。


三、传输方式与消息格式

传输层有两种模式:

  • STDIO:用于本地资源,MCP Server 作为子进程运行,通过标准输入输出通信。延迟低,适合访问本地文件系统、本地数据库等场景。
  • SSE / Streamable HTTP:用于远程服务,通过 HTTP 长连接传输。MCP 协议 2025-03-26 版本起推荐用 Streamable HTTP 替代 SSE。

消息格式采用 JSON-RPC 2.0,定义三种消息类型:

  • request:Client 发给 Server 的操作请求,包含唯一 id、方法名(如 tools/call)和参数。
  • response:Server 返回给 Client 的结果,包含与 request 相同的 id 及处理结果或错误信息。
  • notification:单向通知,无需回应,通常由 Server 发给 Client,用于事件推送。

JSON-RPC 2.0 的优势在于语言无关、规范清晰、易于调试,这也是 MCP 能快速获得多语言生态支持的原因之一。


四、MCP vs Function Call:标准化的价值

Function Calling 是 OpenAI 提出的机制,允许开发者定义函数供 LLM 调用。两者目标相同,但实现层面有本质差异:

维度 Function Call MCP
标准化程度 各模型平台自定义,实现不统一 开放协议,跨模型、跨平台通用
集成方式 每个模型平台单独对接 一次实现,多处复用
生态复用 无法跨平台共享 开源 Server 可直接复用
上下文保持 单次调用 支持跨应用/服务保持上下文

MCP 的类比是 USB Type-C:不同设备(模型)和不同外设(服务)通过同一标准接口互联。Function Call 则类似各厂商自定义的私有接口------功能相同,但无法互换。

OpenAI 后来也宣布支持 MCP,印证了统一标准的价值。


五、本地 MCP Server 配置实践

以 Claude Desktop 接入本地文件系统 MCP Server 为例,展示完整配置流程。

前置条件:安装 Node.js 环境。

配置文件claude_desktop_config.json):

json 复制代码
{
  "mcpServers": {
    "filesystem": {
      "command": "npx",
      "args": [
        "-y",
        "@modelcontextprotocol/server-filesystem",
        "/Users/username/Desktop",
        "/Users/username/Downloads"
      ]
    }
  }
}

username 替换为本机用户名,配置允许 MCP Server 访问桌面和下载文件夹。

操作路径:Claude Desktop → Settings → Developer → Edit Config → 写入上述配置 → 重启应用。

重启后点击锤子图标可查看 Server 提供的工具列表(list_allowed_directoriesget_file_infocreate_directory 等)。

使用示例:在 Claude Desktop 输入「把桌面上的所有图片移到新文件夹 picture」,LLM 会自动识别可用工具,依次调用文件系统操作完成任务。执行过程中会请求权限授权,需手动允许。


六、对测试工程师的实际意义

MCP 对测试开发工程师的价值在于低成本接入大模型能力:

从零训练或微调一个测试专用模型需要大量算力、人力和时间,并非个人或小团队能承担的。但开发一个 MCP Server,将测试服务、测试数据、测试工具暴露给大模型,成本极低------只需掌握 MCP Server 的开发方式。

具体场景:将接口测试框架封装为 MCP Server,让 LLM 直接调用执行测试;将测试数据库接入 MCP,让 LLM 查询历史缺陷数据辅助分析;将 CI/CD 系统接入 MCP,让 LLM 触发构建和部署流程。

现有支持 MCP 的 Host(Claude Desktop、Cursor、Cline 等)可以直接复用,无需重复开发 Host 层,专注于 Server 侧的业务封装即可。

相关推荐
测试员周周5 小时前
【Appium 系列】第16节-WebView-H5上下文切换 — 混合应用的自动化难点
运维·开发语言·人工智能·功能测试·appium·自动化·测试用例
K姐研究社7 小时前
怎么用AI制作电商口播视频,开拍APP一键生成
人工智能·音视频
LaughingZhu7 小时前
Product Hunt 每日热榜 | 2026-05-21
前端·人工智能·经验分享·chatgpt·html
传说故事8 小时前
【论文阅读】MotuBrain: An Advanced World Action Model for Robot Control
论文阅读·人工智能·具身智能·wam
北京耐用通信8 小时前
全域适配工业场景耐达讯自动化Modbus TCP 转 PROFIBUS 网关轻松实现以太网与现场总线互通
网络·人工智能·网络协议·自动化·信息与通信
火山引擎开发者社区8 小时前
TRAE × 火山引擎 Supabase:为你的 AI 应用装上“数据引擎”
人工智能
小a彤9 小时前
GE 在 CANN 五层架构中的位置
人工智能·深度学习·transformer
前端若水9 小时前
会话管理:创建、切换、删除对话历史
前端·人工智能·python·react.js
Upsy-Daisy9 小时前
AI Agent 项目学习笔记(八):Tool Calling 工具调用机制总览
人工智能·笔记·学习
企学宝9 小时前
企学宝5月专题课程丨《OpenClaw AI 智能体实战营:从零基础部署到全场景自动化落地》
人工智能·ai·企业培训