MCP 官方文档中文版
概念
复制页面
MCP 官方文档中文版
开始使用
简介
示例 Servers
示例 Clients
快速上手
服务器开发
客户端开发
Claude 桌面版开发
教程
使用 LLMs 构建 MCP
调试 Debugging
调试器 Inspector
概念
核心架构
资源 Resources
提示词 Prompts
工具 Tools
采样 Sampling
根 Roots
传输 Transports
开发
新计划
规划
贡献
概念
复制页面
传输 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 协作的未来。
扫码加入交流群
修改于
2025-03-17 06:45:16
上一页
根 Roots
下一页
新计划