MCP 原理及部分深层代码解析

导语:
除了整理网络上基本的概念原理,还会增加一些有深度的代码解析,帮助读者进一步了解MCP。

一、什么是MCP

MCP(Model Context Protocol)是由Anthropic于2024年底提出并开源的一种协议,旨在为AI系统(如AI编程助手、Agent等)提供安全、标准化的数据访问方式。它采用客户端-服务器架构,使AI工具(如Claude Desktop、IDE插件等)能够通过MCP客户端与MCP服务端交互,访问本地或远程数据源。

官方文档:MCP Quickstart

https://modelcontextprotocol.io/quickstart/server

MCP的核心特点包括:
模块化:每个模块专注于一个概念、任务或技能。
组合性:多个模块可按需组合,处理复杂任务。
动态路由:主控制器根据上下文动态调用合适模块。
可解释性:每一步推理过程清晰可追踪。
在这里插入图片描述

二、为什么需要MCP

MCP 则提供了一种新的范式,让模型能像人类一样“拆分任务”、“调动知识”、“有条理地思考”。它就像一个“转接头”或“通用插座”,它的核心作用是统一不同外部服务(如 Google Drive、GitHub、Slack、本地文件系统等),通过标准化接口与 AI 模型对接。

这样,开发者只需基于 MCP 规范开发一次“接口适配器”(MCP 服务器),就能让所有兼容 MCP 的模型(MCP 客户端)无缝接入,无需针对每个模型单独适配,大幅提升兼容性与开发效率。

MCP可以标准化地连接AI系统与各类外部工具和数据源:
在这里插入图片描述
传统的 API 就像不同的门和特定的钥匙:在这里插入图片描述

三、MCP的架构

MCP遵循客户端 - 服务器架构,包含以下几个核心部分:

MCP 主机(MCP Hosts):
发起请求的 AI 应用程序,比如聊天机器人、AI 驱动的 IDE 等。

MCP 客户端(MCP Clients):
在主机程序内部,与 MCP 服务器保持 1:1 的连接。

MCP 服务器(MCP Servers):
为 MCP 客户端提供上下文、工具和提示信息。

本地资源(Local Resources):
本地计算机中可供 MCP 服务器安全访问的资源,如文件、数据库。

远程资源(Remote Resources):
MCP 服务器可以连接到的远程资源,如通过 API 提供的数据。
在这里插入图片描述
这个图比较直观的展现了一个样例交互流程。在这里插入图片描述
协议层与传输层
在这里插入图片描述
协议层(Protocol Layer)
负责消息封装(framing)、请求/响应关联、高级通信模式管理。

传输层(Transport Layer)
支持两种通信方式:

1.Stdio传输(标准输入/输出)

  • 适用于本地进程间通信。

2.HTTP + SSE传输

  • 服务端→客户端:Server-Sent Events(SSE)

  • 客户端→服务端:HTTP POST

  • 适用于远程网络通信。

所有传输均采用JSON-RPC 2.0进行消息交换。

消息类型

MCP 拥有多种类型的消息来处理不同的场景

请求(Request)(期望获得响应)

interface Request {
   
   
  method: string;
  params?: {
   
    ... };
}

成功响应(Result)

interface Result {
   
   
  [key: string]: unknown;
}

错误响应(Error)

interface Error {
   
   
  code: number;
  message: string;
  data?: unknown;
}

通知(Notification)(单向,无需响应)

interface Notification {
   
   
  method: string;
  params?: {
   
    ... };
<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值