当前位置:首页 > 知识wiki > 正文内容

MCP 协议深度解析:从通信模型到工具调用

Openclaw1周前 (07-02)知识wiki48

MCP协议架构图

MCP(Model Context Protocol)是 Anthropic 于 2024 年底推出的一项开放协议标准,旨在为 AI 应用程序提供一套统一的、标准化的外部工具与数据接入接口。形象地说,MCP 就像 AI 世界的"USB-C 接口"——无论你是 Claude、ChatGPT,还是 OpenClaw Agent,只要实现了 MCP 协议,就能即插即用地连接文件系统、数据库、搜索引擎、API 网关等任意外部系统。


🎯 一、MCP 是什么:要解决什么问题?

在 MCP 出现之前,AI Agent 接入外部工具的方式极为碎片化:

  • 每个 AI 框架自己定义 Function Calling 格式(OpenAI、Anthropic、Google 各有不同)
  • 每个工具需要单独写适配代码(查数据库一个函数、发邮件一个函数、读文件一个函数)
  • 工具复用几乎不可能——换个平台就得重写

MCP 的核心目标就是:一次定义工具,到处接入 AI。 它定义了一套标准化的通信协议(基于 JSON-RPC 2.0),让 MCP 服务器(工具提供方)和 MCP 客户端(AI 应用)之间可以自动完成能力发现、工具调用和数据交换。

支持 MCP 的生态(2026年): Claude Desktop · Claude Code · ChatGPT · Visual Studio Code · Cursor · OpenClaw · MCPJam · Continue · Zed · Copilot 等


📡 二、传输层:三种通信模式

MCP 定义了三种传输方式,适用于不同的部署场景:

传输方式 通信方向 适用场景 连接模型
stdio 子进程 stdin/stdout 本地工具,1 客户端 : 1 服务器 进程生命周期绑定
SSE(Server-Sent Events) HTTP Server-Sent Events 远程服务器,1 : N 多客户端 HTTP 长连接
Streamable HTTP HTTP 请求-响应 + 流 远程服务器,支持 OAuth 无状态 HTTP,可扩展

stdio 传输(最常用)

AI 应用(Host)以子进程方式启动 MCP 服务器,通过标准输入/输出进行 JSON-RPC 通信。适用于本地文件系统、本地数据库、代码分析器等无需网络的服务。

# OpenClaw 中注册 stdio MCP 服务器 openclaw mcp add files \ --command npx \ --arg -y \ --arg @modelcontextprotocol/server-filesystem \ --arg "$HOME/Documents"

Streamable HTTP 传输

适用于云端/远程工具,支持标准 OAuth 认证、mTLS 双向证书验证,以及并行工具调用。一个远程 MCP 服务器可以同时服务于多个 AI 客户端。


📨 三、消息层:JSON-RPC 2.0 通信格式

MCP 所有通信都基于 JSON-RPC 2.0 协议,三种基本消息类型:

➡️ Request(请求)

客户端→服务器。包含 id(唯一标识)、method(方法名)、params(参数)。

⬅️ Response(响应)

服务器→客户端。要求 id 与请求匹配,返回 resulterror

🔔 Notification(通知)

单方向消息,无对应响应。不需要 id,用于日志、进度等。

JSON-RPC Request 示例

// 请求:调用 MCP 服务器的工具 { "jsonrpc": "2.0", "id": "req-001", "method": "tools/call", "params": { "name": "read_file", "arguments": { "path": "/home/user/config.json" } } } // 响应 { "jsonrpc": "2.0", "id": "req-001", "result": { "content": [ { "type": "text", "text": "{ \"setting\": \"value\" }" } ], "isError": false } }

🔄 四、核心生命周期:初始化 → 工具列表 → 调用 → 关闭

一个完整的 MCP 连接的生命周期分为四个阶段:

MCP生命周期

△ MCP 连接生命周期:初始化→工具发现→调用→关闭

阶段一:Initialize(初始化)

客户端发送 initialize 请求,包含自己支持的协议版本和能力声明。服务器回复自己的版本和能力。双方协商出共同支持的协议版本后进入就绪状态。

// 客户端 → 服务器:初始化 { "jsonrpc": "2.0", "id": "init-1", "method": "initialize", "params": { "protocolVersion": "2025-11-25", "capabilities": { "tools": {}, "resources": {} }, "clientInfo": { "name": "openclaw", "version": "2026.6.11" } } } // 服务器 → 客户端:初始化响应 { "jsonrpc": "2.0", "id": "init-1", "result": { "protocolVersion": "2025-11-25", "capabilities": { "tools": {}, "resources": {}, "prompts": {} }, "serverInfo": { "name": "filesystem-server", "version": "1.0.0" } } } // 客户端 → 服务器:确认初始化完成 { "jsonrpc": "2.0", "method": "notifications/initialized" }

阶段二:能力发现(List Tools / Resources / Prompts)

初始化完成后,客户端调用 tools/list 获取服务器上所有可用的工具列表,每个工具包含名称、描述和 InputSchema(JSON Schema 格式的参数声明)。

// 客户端 → 服务器:获取工具列表 { "jsonrpc": "2.0", "id": "tools-1", "method": "tools/list" } // 服务器 → 客户端:返回工具清单 { "jsonrpc": "2.0", "id": "tools-1", "result": { "tools": [ { "name": "read_file", "description": "读取指定路径的文件内容", "inputSchema": { "type": "object", "properties": { "path": { "type": "string", "description": "文件路径" } }, "required": ["path"] } }, { "name": "write_file", "description": "写入文件内容", "inputSchema": { "type": "object", "properties": { "path": { "type": "string" }, "content": { "type": "string" } }, "required": ["path", "content"] } } ] } }

阶段三:工具调用(Tools/Call)

AI 模型根据工具列表决定调用哪个工具,客户端发送 tools/call,传入工具名和参数。服务器执行后返回结果(文本、图像、资源引用等)。

阶段四:关闭

结束会话时关闭传输通道。stdio 模式下进程退出即关闭;HTTP 模式下可发送取消通知或关闭连接。


🧩 五、工具注册与 InputSchema

每个 MCP 工具通过 inputSchema 描述自己的参数格式,采用 JSON Schema 标准。这使得 AI 模型可以自动理解每个工具需要什么参数,并正确构造调用请求。

工具定义的核心字段:

  • name — 工具名称,AI 通过此名称识别和调用
  • description — 自然语言描述,解释工具的用途和何时调用
  • inputSchema — JSON Schema,声明参数的类型、格式、必填项和描述

OpenClaw 中通过 mcp.servers 配置注册 MCP 服务器后,支持使用 toolFilter 精确控制暴露哪些工具到 Agent:

{ "mcp": { "servers": { "docs": { "url": "https://mcp.example.com", "transport": "streamable-http", "toolFilter": { "include": ["search", "read_*"], "exclude": ["admin_*"] } } } } }

⚡ 六、Skill + MCP 集成模式

在 OpenClaw 中,MCP 工具与 Skill 可以深度协作。典型的集成模式如下:

模式一:Skill 声明 MCP 依赖

Skill 的 SKILL.md 中声明其依赖的 MCP 服务器和工具,Agent 加载 Skill 时自动确保对应 MCP 服务器已注册。

# SKILL.md ## MCP Dependencies - server: filesystem (tools: read_file, search_files) - server: database (tools: query, execute) ## Usage - 当需要读取用户文件时,调用 filesystem 的 read_file - 查询数据库时调用 database 的 query - 无需手动注册,Agent 自动注入 MCP 工具

模式二:透传调用

Agent 在 Prompt 上下文中看到已注册 MCP 服务器的工具列表,AI 模型自主决定何时调用哪个工具——无需任何额外适配代码。这是 MCP 最大的优势:工具接入与 AI 推理完全解耦

模式三:OpenClaw 作为 MCP Server(服务端模式)

使用 openclaw mcp serve 将 OpenClaw 自身暴露为一个 MCP 服务器,外部 MCP 客户端(如 Claude Code)可以通过 stdio 连接,读取 OpenClaw 的会话历史、发送消息、处理审批。

# Claude Code 通过 MCP 连接 OpenClaw {"mcpServers": { "openclaw": { "command": "openclaw", "args": ["mcp", "serve", "--url", "wss://gateway:18789", "--token-file", "/path/to/token"] } }}

🔗 七、多会话连接池管理

在 OpenClaw 中,MCP 服务器连接由 Gateway 统一管理,支持:

  • 会话级注入:每个 Agent 会话可以拥有独立的 MCP 工具集
  • 空闲回收:MCP 子进程空闲超过 mcp.sessionIdleTtlMs(默认 10 分钟)后自动回收
  • 故障隔离:单个 MCP 服务器的重复协议失败会被短暂暂停,不会拖垮整个 Agent 推理
  • 热重载:openclaw mcp reload 可重新加载 MCP 服务器配置,无需重启 Gateway
  • 并行调用:对于声明支持并行工具调用的 MCP 服务器,OpenClaw 可以同时发起多个工具请求

🛡️ 八、安全边界:Scope 与 Approval 机制

MCP 协议本身不强制执行安全策略——但 OpenClaw 围绕 MCP 构建了多层安全防护:

安全层 机制 作用
toolFilter Include/Exclude 过滤 控制 Agent 可见的 MCP 工具范围
Approval 可配置审批规则 高风险工具需要用户手动确认
OAuth 标准 OAuth 2.0 流程 远程 MCP 服务器的身份认证
mTLS 双向证书验证 私密 HTTPS 端点的安全通信
Env 安全过滤 拦截危险环境变量 防止 stdio 启动时被注入恶意配置
⚠️ 安全原则:OpenClaw 会拦截可能被 stdio 子进程滥用的环境变量(如 NODE_OPTIONS、PYTHONPATH、RUBYOPT 等),防止注入攻击。同时建议为 MCP 服务器设置最小的 toolFilter,只暴露必要的工具。

🔄 九、MCP vs Function Calling

维度 MCP 传统 Function Calling
协议标准 开放标准,跨平台跨厂商 各家厂商私有格式
工具注册 MCP Server 自动注册+发现 代码中手动定义函数签名
复用性 一次构建,任何 MCP Host 可用 每个项目/平台单独实现
传输层 stdio / SSE / HTTP 通常绑定 SDK 内部
实时通知 支持(服务端推送进度/日志) 不支持
生命周期 有状态连接,能力协商 无状态,每次调用独立
生态规模 快速增长中(2026年) 成熟但碎片化

结论:MCP 不是要取代 Function Calling——它是 Function Calling 的"上层标准"。Function Calling 解决了"模型如何调用函数"的技术问题,而 MCP 解决了"工具如何被 AI 发现和复用"的生态问题。两者在同一个 Agent 中可以共存:MCP 处理外部工具的标准化接入,Function Calling 处理模型内部的推理交互。


📝 总结

MCP 是 AI Agent 生态走向标准化的重要里程碑。它用一套简洁的 JSON-RPC 协议,将"工具接入"从重复劳动变成了"一次开发,随处可用"。对于 OpenClaw 用户来说,MCP 意味着:

  • 已有 MCP 生态中 1000+ 个工具可以直接集成
  • 无需为每个工具编写适配代码
  • 工具接入与 AI 推理完全解耦
  • 不同 MCP 客户端共享同一套工具注册表

OpenClaw 知识百科 · MCP协议深度解析 · 知识wiki

扫描二维码推送至手机访问。

版权声明:本文由点度点度金讯时代-BLOG发布,如需转载请注明出处。

本文链接:https://lmwmm.com/post/2610.html

分享给朋友:

“MCP 协议深度解析:从通信模型到工具调用” 的相关文章

OpenClaw AI 助手平台使用指南

OpenClaw AI 助手平台使用指南

OpenClaw 是一款功能强大的AI助手平台,支持部署在自有服务器上,通过微信、企业微信、Telegram等多种渠道交互。本文详细介绍其核心功能、模型配置、技能系统、记忆机制、子代理系统和cron任务等使用要点。…

什么是AI Agent:定义、分类与核心能力

什么是AI Agent:定义、分类与核心能力

AI Agent是能自主感知、决策并执行任务的智能程序。本文介绍Agent的核心定义、术语表、发展简史、分类方式、典型架构、关键组件和主要应用场景,适合快速建立对AI Agent的系统认知。…

AI Agent 框架横向对比:CrewAI、LangGraph、OpenAI SDK、AutoGen、OpenClaw

AI Agent 框架横向对比:CrewAI、LangGraph、OpenAI SDK、AutoGen、OpenClaw

本文对比CrewAI、LangGraph、OpenAI Agents SDK、AutoGen、OpenClaw五个主流Agent开发框架,从上手难度、多Agent协作、工具/MCP支持、记忆系统和生产部署五个维度以表格形式对比,帮助开发者了…

AutoGen对话模式:基于对话的多Agent协作框架

AutoGen对话模式:基于对话的多Agent协作框架

AutoGen是微软研究院推出的多Agent对话框架,核心创新在于将Agent间的交互建模为结构化对话。本文系统梳理了四种对话模式,包括一对一执行模式、顺序流水线、群聊多角色协作和嵌套任务分解,并与LangGraph、CrewAI进行了横向…

AI Agent 评估体系:Benchmark、评估指标与自动化测试

AI Agent 评估体系:Benchmark、评估指标与自动化测试

AI Agent评估体系是衡量智能体性能的标准化方法论,涵盖基准测试集、量化指标和自动化测试框架三大组件。本文介绍GAIA、AgentBench等主流Benchmark,任务完成度、效率成本、安全合规三类评估指标,以及LLM-as-Judg…

AI Agent 可观测性:轨迹追踪与生产调试实践

AI Agent 可观测性:轨迹追踪与生产调试实践

AI Agent可观测性是指通过捕获Agent执行全链条轨迹数据,实现对生产环境中Agent行为的理解、调试与评估的能力,其核心追踪单元是轨迹而非单个提示词。本文对比了传统调试与Agent调试的差异,介绍了追踪、评估、模拟三个技术层次,梳理…