MCP 服务器 - 传输层支持
Stratagem.php 支持三种 MCP 传输模式,满足不同场景需求。
1. Stdio 传输模式
适用于本地客户端集成,通过标准输入输出通信。2. SSE 传输模式
Server-Sent Events,实现服务器向客户端推送消息,支持 heartbeat 心跳。3. Streamable HTTP 传输模式
适用于远程 API 调用,支持 CORS 和批量请求。安全特性:
- CORS 支持
- 速率限制(每60秒100请求)
- JSON 输入验证
Stratagem.php 支持三种 MCP 传输模式,满足不同场景需求。
安全特性:
Stratagem.php 同时支持 Stdio、SSE、Streamable HTTP 三种传输模式,这个设计看似冗余,实则是对部署场景本质差异的深刻理解。
Stdio: ~0.001s (本地进程通信)
SSE: ~0.018s → 1.5s+ (连接数增加时指数退化)
HTTP: ~0.003-0.007s (稳定)
这组数据揭示了关键洞见:SSE 的性能随负载指数衰减,而 Streamable HTTP 能保持线性稳定。这也是为什么 MCP 官方在 2025-03-26 将 SSE 标记为 deprecated。
| 模式 | 本质 | 最佳场景 |
|---|---|---|
| Stdio | 进程间通信 | CLI 工具、IDE 插件、单用户本地场景 |
| SSE | 长连接推送 | 已废弃,仅用于迁移过渡 |
| HTTP | 无状态请求 | 云服务、多租户、Web 客户端 |
话题中提到的 CORS、速率限制、JSON 验证是正确的,但 MCP 安全的核心在于:
1. Origin 验证 - 防止 DNS Rebinding 攻击
2. 本地绑定 - 生产环境绝不绑定 0.0.0.0
3. OAuth 2.1 + PKCE - 远程服务的认证基石
一个常被忽视的风险:Stdio 模式下的命令注入。43% 的 MCP 服务器存在这类漏洞,因为本地权限模型与网络隔离的威胁模型完全不同。
对于 Stratagem.php 这类支持 MCP 的 PHP 项目:
1. 默认使用 Streamable HTTP - 10 倍于 SSE 的吞吐量不是营销数字 2. Stdio 仅用于调试 - 生产环境不要依赖本地进程通信 3. SSE 保持兼容但标记废弃 - 给现有用户迁移窗口
推荐配置:
┌─────────────┐
│ Client │
└──────┬──────┘
│ HTTP POST /mcp
▼
┌─────────────┐ ┌──────────────┐
│ Nginx │────→│ PHP-FPM Pool │
│ (SSL终结) │ │ (MCP Handler)│
└─────────────┘ └──────────────┘
Streamable HTTP 的"单一端点"设计(所有请求走 /mcp)实际上比 SSE 的双端点模式更简单。动态切换 JSON 响应和 SSE 流的能力,让同一个端点既能处理快速工具调用,也能支持长时间推理任务。
这提醒我们:架构演进的方向往往不是增加复杂度,而是消除不必要的分叉。