AI大模型-6:MCP原理和开发

一、MCP介绍


定义

MCP(Model Context Protocol,模型上下文协议) 是由 Anthropic 于 2024 年 11 月提出的一种开放标准协议,旨在为 AI 模型(如大语言模型 LLM)提供一种统一的方式来连接和访问外部数据源、工具和服务。

可以把 MCP 理解为 AI 世界的 USB-C 接口 ------ 就像 USB-C 为各种设备提供了统一的连接标准一样,MCP 为 AI 模型与外部系统之间提供了统一的交互协议。

定位:

连接Agent、RAG、Skill的"中间层",负责标准化调度、权限管理、上下文维护,

当驾驶员(Agent)想打开空调,他不需要知道压缩机的工作原理,他只需要按下中控台的标准化按钮(MCP 接口)。MCP 将"打开空调"的指令标准化,让 Agent 能无缝调用任何品牌的空调(Skill)。

在旧式 AI 中,驾驶员(Agent)可能需要专门学习如何操作某一款特定的空调(Skill)。而有了 MCP,就像汽车有了标准化的 CAN 总线,任何符合标准的设备(如新加的自动驾驶仪、氛围灯)都能即插即用,Agent 无需重新学习。

核心能力:

统一调度:接收Agent的调用请求,根据请求类型(需要知识/需要执行),分发到对应的RAG或Skill组件;

接口标准化:为RAG、Skill提供统一的调用接口,避免不同组件"接口不兼容"的问题,降低系统集成成本;

上下文与权限管理:保存任务进度、用户偏好、会话状态,同时控制Agent对RAG/ Skill的调用权限,避免违规操作;

异常处理:当RAG检索失败、Skill调用超时或权限不足时,统一处理并反馈给Agent,让Agent重新调整决策。

类比:电脑的USB-TypeC接口------不管是U盘、显示器还是充电器,都能通过这个统一接口连接电脑,MCP就相当于这个"统一接口",让Agent、RAG、Skill能高效、安全地协同工作。

二、核心架构


MCP 采用经典的 客户端-服务器(Client-Server) 架构

角色说明

MCP Host(宿主):AI 应用程序本身,如 IDE(Copilot)、Claude Desktop 等

MCP Client(客户端):嵌入在 Host 中,负责与 MCP Server 建立连接、发送请求

MCP Server(服务端):轻量级服务程序,封装了对外部资源/工具的访问能力

通信协议

MCP 基于 JSON-RPC 2.0 协议进行通信,支持两种传输方式:

stdio:通过标准输入/输出通信,使用场景: 本地进程,如本地脚本、CLI 工具

HTTP(Streamable HTTP):通过 HTTP 请求通信, **使用场景:**远程服务。

MCP 的三大核心能力

MCP Server 可以向 Client 暴露三种类型的能力:
1. 🔧 Tools(工具)

模型可以调用的函数/操作

例如:查询告警事件、创建 TAPD 需求、执行数据库查询

以你的配置为例,s1sPplEvent 提供了 ListEvent、UpdateEvent 等工具
2. 📦 Resources(资源)

模型可以读取的数据

例如:文件内容、数据库记录、API 响应
3. 📝 Prompts(提示模板)

预定义的提示词模板

帮助模型更好地完成特定任务

三、MCP工作原理


核心原理:MCP 协议的服务发现机制

MCP 协议的设计灵感类似于 OpenAPI/Swagger 或 gRPC 的服务反射,它内置了一套标准的服务发现(Service Discovery)流程:

详细步骤

第一步:初始化连接(Initialize)

当 IDE 启动或加载 MCP 配置时,客户端向你配置的 URL 发送一个 initialize 请求:

{

"jsonrpc": "2.0",

"method": "initialize",

"params": {

"protocolVersion": "2024-11-05",

"clientInfo": { "name": "CodeBuddy", "version": "1.0" },

"capabilities": {}

}

}

服务端返回它支持的能力,比如是否支持 tools、resources、prompts 等。

返回格式:

{"jsonrpc":"2.0","id":1,"result":{

"protocolVersion": "2025-03-26",

"capabilities": {

"experimental": {},

"tools": {

"listChanged": false

}

},

"serverInfo": {

"name": "newrpc_mcp_server",

"version": "0.0.1"

}

}}

第二步:列出工具(tools/list)

客户端发送 tools/list 请求:

{

"jsonrpc": "2.0",

"method": "tools/list"

}

服务端返回所有注册的工具定义,包括:

{

"tools": [

{

"name": "ListBiz",

"description": "查询业务列表...",

"inputSchema": {

"type": "object",

"properties": {

"biz_name": { "type": "string", "description": "业务名" },

"start_time": { "type": "string", "description": "开始时间" }

},

"required": []

}

},

{

"name": "ListBizDecl",

"description": "查询全部业务定义列表..."

}

// ... 其他工具

]

}

第三步:调用工具(tools/call)

当 AI 决定使用某个工具时,客户端发送 tools/call 请求:

{

"jsonrpc": "2.0",

"method": "tools/call",

"params": {

"name": "ListEventDecl",

"arguments": {}

}

}

类比理解:

四、总结


简单来说,MCP 就是一个让 AI 模型能够安全、标准化地调用外部工具和访问外部数据 的协议。它解决了以往每个 AI 应用都需要为每个外部服务单独写集成代码的问题,实现了 "一次接入,处处可用" 的目标。

相关推荐
花间相见2 小时前
【AI私人家庭医生day01】—— 项目介绍
大数据·linux·人工智能·python·flask·conda·ai编程
@atweiwei2 小时前
LangChainRust:用 Rust 构建高性能 LLM 应用的完整指南
开发语言·人工智能·ai·rust·大模型·llm·agent
renhongxia12 小时前
人机智能体合作:承诺理论考虑
大数据·人工智能·深度学习·语言模型·自然语言处理·transformer
vivo互联网技术2 小时前
OpenClaw 落地到生产实际应用的一种可能的路径
人工智能·agent·ai编程
工頁光軍2 小时前
论文:面向长期存续的数字社会型智能体矩阵架构设计与演进研究
大数据·人工智能
云飞云共享云桌面2 小时前
制造研发降本新思路:云飞云共享云桌面集群如何将软硬件利用率提升至200%?
运维·服务器·网络·人工智能·3d·制造
Uopiasd1234oo2 小时前
AAttn区域注意力机制改进YOLOv26特征感知与表达能力提升
人工智能·yolo·目标跟踪
Swift社区2 小时前
Policy Engine 如何设计成一个可扩展系统?
人工智能·openclaw
fanstuck2 小时前
当 openClaw 遇上 EdgeOne Pages:不只智能问数,更能直接获取BI 数据大屏(附工程落地实战)
人工智能·ai·aigc·openclaw