部署 MCP 服务器#
本存储库提供了使用 Ray Serve 和 Anyscale Service 部署和扩展模型上下文协议 (MCP) 服务器的端到端示例,涵盖了可流式传输的 HTTP 和 stdio 传输类型。
01-Deploy_custom_mcp_in_streamable_http_with_ray_serve.ipynb: 在 FastAPI + Ray Serve 后面署一个自定义的天气 MCP 服务器,采用可流式传输的 HTTP 模式,演示了 Anyscale 上的自动伸缩、负载均衡和端到端测试。02-Build_mcp_gateway_with_existing_ray_serve_apps.ipynb: 展示了如何设置一个单一的 MCP 网关,该网关可以将请求多路复用到多个现有的 Ray Serve 应用程序,都在一个统一的/mcp端点下,而无需更改底层服务的代码。03-Deploy_single_mcp_stdio_docker_image_with_ray_serve.ipynb: 使用 Ray Serve 封装了一个仅支持 stdio 的 MCP Docker 映像(例如 Brave Search),使其公开/tools和/callHTTP 端点,并能在不重新构建映像的情况下进行水平伸缩。04-Deploy_multiple_mcp_stdio_docker_images_with_ray_serve.ipynb: 扩展了之前的模式,运行多个基于 stdio 的 MCP 映像,使用分数 CPU 部署和一个路由器来将流量定向到正确的服务。05-(Optional)_Build_docker_image_for_mcp_server.ipynb: 在 Anyscale 工作空间中,为具有 uv 的 Weather MCP 服务器构建并推送一个基于 Podman 的轻量级 Docker 映像。
为什么选择 Ray Serve 来处理 MCP#
自动伸缩:动态调整副本数量以匹配流量高峰并保持响应能力。
负载均衡:智能地将传入请求分配给所有副本,以实现稳定的吞吐量。
可观测性:公开请求速率、资源使用情况和系统健康状况的实时指标。
容错:检测故障、重启组件并将流量重新路由到健康的副本,以实现持续可用性。
组合:将部署(预处理、推理、后处理和自定义逻辑)链接成一个无缝的管道。
Anyscale 服务优势#
先决条件#
Ray Serve,包含在基础 Docker 映像中。
Podman,用于部署 MCP 工具与现有 Docker 映像(用于笔记本 3 到 5)。
在您的环境中设置的 Brave API 密钥 (
BRAVE_API_KEY),用于笔记本 3 和 4。MCP Python 库。
开发#
您可以在自己的 Ray 集群或 Anyscale 工作空间 上运行此示例,这使您无需担心基础设施即可进行开发——就像在笔记本电脑上一样。工作空间附带:
开发工具:从您的本地 IDE(Cursor、VS Code 等)启动远程会话并开始编码,使用您熟悉的工具结合 Anyscale 计算的强大功能。
依赖项:继续使用 pip 等常用工具安装依赖项。Anyscale 会将所有依赖项传播到您的集群。
计算:通过将 Anyscale 部署到您的帐户中,利用任何预留的实例容量、来自您选择的任何计算提供商的 Spot 实例。或者,您可以使用 Anyscale 云来实现完全无服务器的体验。
调试:利用分布式调试器获得与 VS Code 相似的调试体验。
在官方文档中了解有关 Anyscale 工作空间的更多信息。
注意:在Anyscale上免费运行整个教程——所有依赖项都已预装,计算会自动缩放。要在其他地方运行它,请从提供的 Dockerfile 安装依赖项并提供适当的资源……
生产#
通过利用 Anyscale CLI 或 SDK,无缝集成到您现有的 CI/CD 管道中,以部署高可用性服务并运行可靠的批处理作业。在一个与生产环境几乎相同的环境(多节点集群)中开发,可以极大地加速从开发到生产的过渡。本教程还介绍了 RayTurbo 的专有功能,可优化工作负载的性能、容错能力、规模和可观测性。
无基础设施烦恼#
将基础设施抽象化,让您的 ML/AI 开发人员可以专注于核心 ML 开发。您还可以通过企业治理和可观测性以及管理员功能更好地管理计算资源和成本,以便您可以设置资源配额,为不同的工作负载设置优先级,并获得跨整个计算集群的利用率可观测性。如果您在 Kubernetes 云(EKS、GKE 等)上运行,仍然可以通过部署Anyscale Kubernetes 运算符来访问本教程中演示的专有 RayTurbo 优化。