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 应用都需要为每个外部服务单独写集成代码的问题,实现了 "一次接入,处处可用" 的目标。

相关推荐
MediaTea17 小时前
AI 术语通俗词典:ID3 算法
人工智能·算法
薛定猫AI17 小时前
【深度解析】Open Design 本地优先 AI 设计系统:用多模型 Agent 生成高保真 UI 原型
人工智能·ui
Old Uncle Tom17 小时前
《企业AI成功部署实战指南:51 次成功部署的经验教训》给我们的启发
人工智能
卷卷说风控18 小时前
【卷卷观察】Agent Skills 为什么突然火了?我花了一晚上研究,结论有点反直觉
人工智能
deephub18 小时前
BM25 + Vectors:为什么真实 RAG 系统通常两者都需要
人工智能·大语言模型·向量检索·rag·bm25
愚公搬代码18 小时前
【愚公系列】《AI漫剧创作一本通》006-剧本拆解,把小说改编为可落地的脚本(拆剧本,把故事变成可拍的文本)
人工智能·ai漫剧
郝学胜-神的一滴18 小时前
深度学习损失函数:从原理到实战之 Smooth L1 Loss
人工智能·pytorch·python·深度学习·机器学习·数据挖掘
yjfkpyu18 小时前
让 AI 不再按过期文档写代码:AgentLockDoc 开源了
人工智能·ai编程
OneBlock Community18 小时前
重磅!SEC & CFTC 联手“定义加密”,Polkadot 被写进规则!
大数据·人工智能
lazy熊18 小时前
初学者如何快速入门学会 Claude Code?
人工智能·gpt·ai编程