MCP 部署:托管的真实成本
大多数教程都会教你如何在本地构建 MCP 服务器。它们会教你端点和身份验证,但不会教你如何让服务器 24/7 全天候运行。
我花了三个月的时间为我的个人知识库构建了一个 MCP 服务器。我通过惨痛的教训了解到,部署才是真正痛苦的开始。
如果你希望你的 AI 助手能在移动端、网页端或云端客户端工作,你就不能依赖 localhost。你必须部署到公共主机上。
以下是我基于真实生产环境测试的托管方案分析:
Heroku
- 优点:部署简单,自动提供 HTTPS。
- 缺点:免费层在 30 分钟后会进入休眠状态。这会导致 10 到 30 秒的延迟。在此期间,MCP 客户端经常会超时并失败。
- 结论:3/10。适合测试,不适合日常使用。
Fly.io
- 优点:部署快速,拥有全球网络。支持为你的文件提供持久化卷(persistent volumes)。
- 缺点:免费层应用在停止活动一周后会停止运行。你需要使用 cron job 来保持它们处于活跃状态。
- 结论:6/10。对大多数用户来说是一个可靠的选择。
Serverless(例如腾讯云 SCF)
- 优点:低流量时极其便宜。如果你在中国等特定地区,延迟非常低。
- 缺点:冷启动需要几秒钟。你必须针对无状态架构进行设计。
- 结论:7.5/10。非常适合使用率较低的个人项目。
VPS(虚拟专用服务器)
- 优点:完全控制,服务器不会休眠。每月成本可预测。
- 缺点:你必须自己管理安全、更新和 SSL。
- 结论:最适合多用户或高流量场景。
三个可以为你节省数小时调试时间的经验教训:
设置超时:MCP 客户端非常缺乏耐心。如果你的搜索超过 10 秒,客户端就会断开连接。请在服务器配置中设置严格的连接超时。
添加健康检查:云提供商需要一种方式来了解你的应用是否在线。创建一个简单的
/health端点。修复 CORS:身份验证经常会破坏 CORS 预检请求(preflight requests)。确保你的配置允许无需身份验证的
OPTIONS请求。
我的工作流:
- 本地构建。
- 使用 ngrok 测试远程客户端。
- 稳定后部署到 Fly.io 或 VPS。
部署并不光鲜亮丽,但它是必要的。如果你的 AI 客户端无法连接到它,那么一个完美的服务器也毫无用处。
你正在使用什么来托管你的 MCP 服务器?请在评论区告诉我。
Optional learning community: https://t.me/GyaanSetuAi
