MCP简介和实现技术路线概述
1 MCP简介
MCP 起源于 2024 年 11 月 25 日 Anthropic 发布的文章:Introducing the Model Context Protocol。
MCP(模型上下文协议)是一种用于将人工智能应用程序连接到外部系统的开源标准。
MCP (Model Context Protocol,模型上下文协议)定义了应用程序和 AI 模型之间交换上下文信息的方式。这使得开发者能够以一致的方式将各种数据源、工具和功能连接到 AI 模型(一个中间协议层),就像 USB-C 让不同设备能够通过相同的接口连接一样。MCP 的目标是创建一个通用标准,使 AI 应用程序的开发和集成变得更加简单和统一。
借助 MCP,像 Claude 或 ChatGPT 这类人工智能应用程序能够连接到数据源(如本地文件、数据库)、工具(如搜索引擎、计算器)和工作流(如专用提示词),从而使它们能够获取关键信息并执行任务。

2 MCP的构成
核心组件
MCP 由三个核心组件构成:Host、Client 和 Server。
MCP Host:协调和管理一个或多个 MCP 客户端的人工智能应用程序
MCP Client:维持与 MCP 服务器的连接,并从 MCP 服务器获取上下文供 MCP 主机使用的组件
MCP Server:为 MCP 客户端提供上下文的程序
例如:Visual Studio Code 充当 MCP 主机。当 Visual Studio Code 与 MCP 服务器(如 Sentry MCP 服务器)建立连接时,Visual Studio Code 运行时会实例化一个 MCP 客户端对象,该对象维持与 Sentry MCP 服务器的连接。当 Visual Studio Code 随后连接到另一个 MCP 服务器(如本地文件系统服务器)时,Visual Studio Code 运行时会实例化另一个 MCP 客户端对象来维持此连接,因此 MCP 客户端与 MCP 服务器之间保持着一对一的关系。

MCP 服务器指的是提供上下文数据的程序,无论其运行在何处。MCP 服务器可以在本地或远程执行。例如,当 Claude 桌面版启动文件系统服务器时,该服务器在同一台机器上本地运行,因为它使用 STDIO 传输方式。这通常被称为 “本地” MCP 服务器。官方的 Sentry MCP 服务器运行在 Sentry 平台上,并使用可流式传输的 HTTP 传输方式。这通常被称为 “远程” MCP 服务器。
MCP的层次
MCP 由两个层级构成:
数据层:定义基于 JSON-RPC 的客户端 - 服务器通信协议,包括生命周期管理以及核心基础组件(如工具、资源、提示词和通知)。
传输层:定义实现客户端与服务器之间数据交换的通信机制和渠道,包括特定于传输方式的连接建立、消息帧处理和授权。
从概念上讲,数据层是内层,而传输层是外层。
数据层
数据层实现了基于 JSON-RPC 2.0 的交换协议,该协议定义了消息结构和语义。这一层包含:
生命周期管理:处理客户端与服务器之间的连接初始化、能力协商和连接终止
服务器功能:使服务器能够提供核心功能,包括供人工智能执行操作的工具、用于上下文数据的资源以及往返于客户端的交互模板提示词
客户端功能:使服务器能够请求客户端从主机大语言模型采样、获取用户输入以及向客户端记录消息
实用功能:支持附加功能,如用于实时更新的通知和用于长时间运行操作的进度跟踪
传输层
传输层负责管理客户端与服务器之间的通信渠道和身份验证。它处理 MCP 参与方之间的连接建立、消息帧处理和安全通信。
MCP 支持两种传输机制:
标准输入输出(Stdio)传输:使用标准输入 / 输出流在同一台机器上的本地进程之间进行直接进程通信,可提供最佳性能且无网络开销。
可流式 HTTP 传输:使用 HTTP POST 处理客户端到服务器的消息,并可选地使用服务器发送事件SSE(Server-Sent Events)实现流式传输功能。这种传输方式支持远程服务器通信,并支持标准 HTTP 身份验证方法,包括承载令牌(bearer tokens)、API 密钥和自定义标头。MCP 建议使用 OAuth 获取身份验证令牌。
传输层从协议层抽象出通信细节,使相同的 JSON-RPC 2.0 消息格式能够在所有传输机制中使用。
3 实现 MCP
使用SDK
官方提供支持Node.js、Python、Go、Kotlin、Swift、Java、C#、Ruby、Rust、PHP的SDK。
所有 SDK 都支持:
- 创建可公开工具、资源和提示的 MCP 服务器
- 构建可连接到任何 MCP 服务器的 MCP 客户端
- 本地和远程传输协议
- 符合类型安全的协议
使用fastMCP框架
fastMCP 是一款专为 “模型上下文协议” 设计的轻量级 Python 框架,它内置了 MCP 所需的 “数据格式校验”“权限管控”“传输适配” 等核心能力,无需像 FastAPI 那样手动搭建完整流程,可大幅减少重复编码,让开发者更聚焦于业务逻辑而非协议基础组件。
fastMCP 的核心特性与 MCP 需求的契合度:
-
原生上下文模型支持:提供 ContextModel 基类,可直接定义上下文结构,自动实现格式校验(替代 FastAPI + Pydantic 的手动校验逻辑);
-
内置权限引擎:基于 RBAC 模型封装了权限过滤功能,只需配置角色 - 字段映射,即可自动过滤无权访问的上下文数据;
-
传输层自适应:支持 HTTP/gRPC/MQ 等多种传输方式,无需手动编写不同协议的接口适配代码;
-
可追溯日志:自动记录上下文的生成、传输、校验全流程日志,便于问题排查(如上下文丢失、权限异常)。
相比官方 SDK,FastMCP的 API 设计更加简洁、开发效率更高,且具备更强的可扩展性,支持多种客户端/服务端传输模式(Stdio、SSE、内存)、资源模板机制,极大地降低了 MCP 服务器与客户端的开发门槛。
4 使用 MCP Inspector 验证服务端功能
MCP Inspector 是专为 Model Context Protocol(MCP)服务端设计的交互式调试工具,提供了一个直观的界面,使得开发者能够快速地验证服务端的响应和状态。


被折叠的 条评论
为什么被折叠?



