MCP 官方文档中文版
  1. 概念
MCP 官方文档中文版
  • 开始使用
    • 简介
    • 示例 Servers
    • 示例 Clients
    • 快速上手
      • 服务器开发
      • 客户端开发
      • Claude 桌面版开发
  • 教程
    • 使用 LLMs 构建 MCP
    • 调试 Debugging
    • 调试器 Inspector
  • 概念
    • 核心架构
    • 资源 Resources
    • 提示词 Prompts
    • 工具 Tools
    • 采样 Sampling
    • 根 Roots
    • 传输 Transports
  • 开发
    • 新计划
    • 规划
    • 贡献
  1. 概念

核心架构

了解 MCP 如何连接客户端、服务器和 LLM
模型上下文协议 (MCP) 构建在灵活、可扩展的架构之上,能够实现 LLM 应用程序和集成之间的无缝通信。本文档涵盖了核心架构组件和概念。

概述#

MCP 遵循客户端-服务器架构,其中:
宿主(Hosts) 是启动连接的 LLM 应用程序(如 Claude Desktop 或 IDE)
客户端(Clients) 在宿主应用程序内与服务器保持 1:1 连接
服务器(Servers) 向客户端提供上下文、工具和提示
image-20250312145458026

核心组件#

协议层(Protocol Layer)#

协议层处理消息组帧、请求/响应链接以及高级通信模式。
TypeScript
Python
关键类包括:
Protocol
Client
Server

传输层(Transport Layer)#

传输层处理客户端和服务器之间的实际通信。 MCP 支持多种传输机制:
1.
标准输入/输出传输(Stdio Transport)
使用标准输入/输出进行通信
适用于本地进程
2.
HTTP with SSE 传输
使用服务器发送事件(Server-Sent Events,SSE)进行服务器到客户端的消息传递
使用 HTTP POST 进行客户端到服务器的消息传递
所有传输都使用 JSON-RPC 2.0 交换消息。 有关模型上下文协议消息格式的详细信息,请参见规范。

消息类型(Message Types)#

MCP 具有以下主要消息类型:
1.
请求(Requests) 期望另一方做出响应:
2.
结果(Results) 是对请求的成功响应:
3.
错误(Errors) 表示请求失败:
4.
通知(Notifications) 是不需要响应的单向消息:

连接生命周期(Connection Lifecycle)#

1. 初始化(Initialization)#

image.png
1.
客户端发送带有协议版本和功能的 initialize 请求
2.
服务器响应其协议版本和功能
3.
客户端发送 initialized 通知作为确认
4.
正常的 message exchange (消息交换) 开始

2. 消息交换(Message Exchange)#

初始化后,支持以下模式:
请求-响应(Request-Response):客户端或服务器发送请求,另一方响应
通知(Notifications):任一方发送单向消息

3. 终止(Termination)#

任一方都可以终止连接:
通过 close() 清理关闭
传输断开连接
错误情况

错误处理(Error Handling)#

MCP 定义了以下标准错误代码:
SDK 和应用程序可以在 -32000 以上定义自己的错误代码。
错误通过以下方式传播:
对请求的错误响应
传输上的错误事件
协议级别的错误处理程序

实现示例(Implementation Example)#

这是一个实现 MCP 服务器的基本示例:
TypeScript
Python

最佳实践(Best Practices)#

传输选择(Transport Selection)#

1.
本地通信(Local Communication)
对于本地进程,使用标准输入/输出传输(stdio transport)
对于同机通信,效率高
简单的进程管理
2.
远程通信(Remote Communication)
对于需要 HTTP 兼容性的场景,使用 SSE
考虑安全影响,包括身份验证和授权

消息处理(Message Handling)#

1.
请求处理(Request Processing)
彻底验证输入
使用类型安全的模式(schema)
优雅地处理错误
实施超时
2.
进度报告(Progress Reporting)
对于长时间运行的操作,使用进度令牌(progress tokens)
增量报告进度
在已知总进度时包括总进度
3.
错误管理(Error Management)
使用适当的错误代码
包括有用的错误消息
在发生错误时清理资源

安全注意事项(Security Considerations)#

1.
传输安全(Transport Security)
对于远程连接,使用 TLS
验证连接来源
在需要时实施身份验证
2.
消息验证(Message Validation)
验证所有传入消息
清理输入
检查消息大小限制
验证 JSON-RPC 格式
3.
资源保护(Resource Protection)
实施访问控制
验证资源路径
监视资源使用情况
限制请求速率
4.
错误处理(Error Handling)
不要泄露敏感信息
记录与安全相关的错误
实施适当的清理
处理 DoS 场景

调试和监控(Debugging and Monitoring)#

1.
日志记录(Logging)
记录协议事件
跟踪消息流
监控性能
记录错误
2.
诊断(Diagnostics)
实施健康检查
监视连接状态
跟踪资源使用情况
分析性能
3.
测试(Testing)
测试不同的传输
验证错误处理
检查边缘情况
负载测试服务器

扫码加入 Apifox MCP 内测群

MCP生态正在快速发展,我们正在与开发者们一起探索 AI 和 API 协作的未来。

扫码加入交流群
上一页
调试器 Inspector
下一页
资源 Resources
Built with