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

传输 Transports

了解 MCP 的通信机制#

模型上下文协议 (MCP) 中的传输 (Transports) 为客户端和服务器之间的通信提供基础。传输处理消息发送和接收的底层机制。

消息格式#

MCP 使用 JSON-RPC 2.0 作为其线路格式。传输层负责将 MCP 协议消息转换为 JSON-RPC 格式以进行传输,并将接收到的 JSON-RPC 消息转换回 MCP 协议消息。
使用三种类型的 JSON-RPC 消息:

请求#

响应#

通知#

内置传输类型#

MCP 包括两个标准传输(Transport)实现:

标准输入/输出 (stdio)#

stdio 传输(transport)能够通过标准输入和输出流进行通信。 这对于本地集成和命令行工具特别有用。
在以下情况下使用 stdio:
构建命令行工具
实现本地集成
需要简单的进程通信
使用 shell 脚本
TypeScript

服务器发送事件 (SSE)#

SSE 传输(transport)支持服务器到客户端的流式传输,并使用 HTTP POST 请求进行客户端到服务器的通信。
在以下情况下使用 SSE:
只需要服务器到客户端的流式传输
使用受限网络
实现简单的更新
TypeScript

自定义传输#

MCP 可以轻松地为特定需求实现自定义传输(transport)。 任何传输(transport)实现只需要符合 Transport 接口:
您可以为以下情况实现自定义传输:
自定义网络协议
专用通信通道
与现有系统集成
性能优化
TypeScript
Python
请注意,虽然 MCP 服务器通常使用 asyncio 实现,但我们建议使用 anyio 实现传输等底层接口,以获得更广泛的兼容性。

错误处理#

传输(Transport)实现应处理各种错误情况:
1.
连接错误
2.
消息解析错误
3.
协议错误
4.
网络超时
5.
资源清理
错误处理示例:
TypeScript
Python
请注意,虽然 MCP 服务器通常使用 asyncio 实现,但我们建议使用 anyio 实现传输等底层接口,以获得更广泛的兼容性。

最佳实践#

在实现或使用 MCP 传输(transport)时:
1.
正确处理连接生命周期
2.
实施适当的错误处理
3.
在连接关闭时清理资源
4.
使用适当的超时
5.
在发送之前验证消息
6.
记录传输事件以进行调试
7.
在适当时实现重新连接逻辑
8.
处理消息队列中的背压(backpressure)
9.
监控连接健康状况
10.
实施适当的安全措施

安全注意事项#

在实现传输(transport)时:

身份验证和授权#

实施适当的身份验证机制
验证客户端凭据
使用安全令牌处理
实施授权检查

数据安全#

对网络传输使用 TLS
加密敏感数据
验证消息完整性
实施消息大小限制
过滤输入数据

网络安全#

实施速率限制
使用适当的超时
处理拒绝服务(denial of service)场景
监控异常模式
实施适当的防火墙规则

调试传输#

调试传输问题的提示:
1.
启用调试日志
2.
监控消息流
3.
检查连接状态
4.
验证消息格式
5.
测试错误场景
6.
使用网络分析工具
7.
实施健康检查
8.
监控资源使用情况
9.
测试边缘情况
10.
使用适当的错误跟踪

扫码加入 Apifox MCP 内测群

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

扫码加入交流群
上一页
根 Roots
下一页
新计划
Built with