作者:封崇

近期,中国第一AI开源社区魔搭(ModelScope)推出全新MCP广场,上架千余款热门的 MCP 服务。从当下火热的高德地图、网页抓取再到独家的支付宝,开发者/机构可以查看近1500种MCP的功能与应用场景,并通过MCP实验场直接上手使用。魔搭的加入无疑对国内 MCP 的发展开启了加速键。

既支持阿里云百炼 MCP服务之后,作为云上托管 MCP 服务的最佳运行时,函数计算 FC 为魔搭(ModelScope) MCP 提供弹性调用能力,实现开源 MCP Server 一键托管到云上,函数计算 FC 会准备好计算资源,并以弹性、可靠的方式运行 MCP 服务,按实际调用时长和次数计费,用户可以直接访问函数计算交付的 SSE 服务。欢迎您在魔搭(ModelScope)和函数计算 FC 上体验 MCP 服务。

云上托管 MCP 服务有什么挑战?

要回答这个问题,首先请跟着我在 ModelScope MCP 广场上创建一个 MCP 服务,并测试,对比自建 MCP 服务,你发现了什么?

1.在ModelScope MCP广场,选择一个MCP服务(比如高德地图)

2.输入高德地图的 API-Key,点击链接

大概1s左右时间,魔搭 MCP 就交付了一个SSE地址,可以用于在 client 进行测试

3.添加MCP服务后,去 MCP Playground 上测试

规模化托管多租 MCP 服务的问题

如果你更换一个其他的 MCP 服务或者换个账号,重复这个流程,发现平台生成的 MCP 地址是完全不同的。这说明魔搭的 MCP 服务是多租隔离的,为每个租户的每个 MCP 服务生成一个独立的 SSE 地址。 这个过程看似简单,实际上背后的技术挑战是非常高的,我们提炼下魔搭的具体需求:

1.上架大量的 MCP 服务,大部分都是开源 MCP 并且采用STDIO模式,使用uv、npx命令就能跑起来;

2.每个托管的 MCP 服务都要自动生成独立的 SSE 测试地址,生成速度要足够快。用户点击测试1s 左右就要完成地址的生成;

3.生成好的 MCP 服务地址能够被魔搭的 Playground 调用,要求托管的 MCP 服务稳定可靠;

要满足这些需求,对于底层的计算平台要求非常高,如果采用纯自建的方案

1.自购服务器:实时弹出服务器时间都是分钟级的,无法满足秒级启动的需求,需要提前创建好一批服务。这样在稀疏调用时会产生极大的资源浪费。另外MCP服务涉及用户的敏感信息需要在启动时加载,因此多个租户复用相同实例来提升利用率的方案是不安全的;

2.自建网关,为每个 MCP 服务创建API并关联后端地址,API需要频繁的创建和销毁,管理API的成本很高;

那么有没有既省资源成本,又省运维成本,还能满足需求的解决方案呢?魔搭选择了函数计算作为 MCP 的运行时托管,并且在短时间内上线了MCP市场, 接下来我们揭秘下魔搭选择函数计算的原因。

为什么魔搭会选择函数计算支持MCP服务?

函数计算作为全托管的 Serverless 服务,有以下运行MCP服务的天然优势:

  1. 事件触发,内置网关,HTTP触发器自动生成公网及内网的http地址:解决MCP网关调用侧需求;

  2. 毫秒级弹性能力,按请求付费,最小支持0.05 vCPU/128M的实例规格:解决MCP服务弹性调度的需求;

  3. 运行时支持单实例多并发:一个实例serve多个MCP请求,减少实例频繁冷启动的开销;

  4. 多租安全隔离:MicroVM安全沙箱,提供虚拟机级别隔离能力;

  5. 完善的语言支持:Node.js、Python、Java、Golang、C#。对于Node.js、Python解释型语言通过WebIDE可以实现快速的调试和运维;

但是这些对于托管MCP还不够,函数计算上线了完整的 MCP 运行时扩展能力 ,针对MCP的特点又做了如下升级:

发布SSE会话亲和性能力,提升 MCP SSE 访问的可靠性

SSE(Server-Sent Events)是一种基于 HTTP 的服务器到客户端的单向实时通信协议:

  • MCP客户端的connect 回向服务端发送Get /sse请求,服务端建立SSE长连接,并且返回带有sessionid的事件流;

  • 后续的客户端请求通过post /message?sessionId=xxx 向服务端发送消息,服务端通过SSE的长连接持续向客户端推送数据;

SSE本质上是一种有状态通信,由服务端维护会话的状态,当同一个会话的客户端post请求调度到不同的服务端实例时,由于会话状态不匹配会到导致服务端连接失败,最终影响client的效果。

Serverless 的弹性调度本身是无状态的,其负载均衡不会感知到SSE的会话状态,因此使用Serverless计算环境托管MCP server时,保证SSE会话的亲和性是一个关键挑战,现在社区以及其他厂商也正在攻克:

  • smithery.ai 采用WebSocket替换了SSE,WebSocket作为全双工通信自带会话亲和性能力,即使突增流量弹出新的实例,相同的client始终会连到同一个服务端实例。WebSocket对于 Serverless运行环境的适配确实更加友好,各个云厂商的Serverless平台也都支持WebSocket,但这种方式的缺点是对client有侵入,需要client进行改造;

  • MCP社区上有个关于MCP Hosting的讨论,关于是否引入WebSocket各方的态度不一,以Glama为代表认为SSE在扩展性要更优;

  • MCP 官方3月底推出了最新的Streamable HTTP协议,计划替代旧版 HTTP+SSE,支持双向流式通信,简化端点管理(单一 /mcp端点),但同样支持主动开启SSE长连接以及旧版SSE协议的向后兼容。

函数计算上线了会话亲和性特性,并且首先支持了MCP SSE策略,保证同一个MCP session请求永远调度到同一个实例。

当开启会话亲和性后,同一个sessionid的请求会被路由到同一个函数实例上

没开启会话亲和性时,突增流量会很容易导致同一个client的sessionid访问到不同实例上,造成5xx错误。

会话亲和性当前处于Beta阶段,目前还在部分region进行灰度,近期会对全部region开放。FaaS环境下的会话亲和性实现非常复杂,不光要考虑session的调度,还要考虑各种场景下的异常行为,函数计算后面会揭秘这部分的技术实现。

函数计算的会话亲和性是针对有状态连接的一种通用能力,并非和MCP SSE完全绑定。官方的Streamable HTTP 针对SSE做了重大升级,但同样支持session的有状态会话,函数计算的会话亲和性后续同样会支持Streamble HTTP的会话亲和性策略。

支持将传统 STDIO 模式的 MCP server 自动转换成SSE服务,业务零改造

通过FunctionAI,可以配置MCP服务的协议类型。当配置STDIO协议时,部署后会自定生成SSE访问地址,函数计算会启动SSE代理,将SSE请求转发到STDIO服务上。

发布Bearer鉴权能力,传统STDIO无鉴权能力的MCP server托管后自带鉴权能力

通过FunctionAI,只需要开启鉴权配置,就可以使用平台提供的只读Token访问MCP 服务,让传统STDIO的服务自带鉴权能力。

发布 Debian12 运行时

函数计算发布了custom.debian12运行时,并且支持了Python3.12/Python3.11/Python3.10、Node.js22/Node.js20/Node.js18、Java11/Java17/Java21 主流运行时版本,内核更小启动速度更快,对于MCP npx/uv直接启动的场景更加友好。

总结

从百炼再到魔搭,越来越多的平台选择了函数计算作为云上MCP托管的解决方案,头部平台的规模化实践印证了 Serverless 在MCP托管领域的技术领先性,函数计算针对MCP做的多项优化价值正在逐渐体现,随着更多的落地案例,函数计算会发布更多AI应用相关的功能,敬请期待。如果您有更多问题与我们交流请添加钉钉群(群号:64970014484)。

MCP云托管最优解,揭秘国内最大MCP中文社区背后的运行时的更多相关文章

  1. 云原生生态周报 Vol. 16 | CNCF 归档 rkt,容器运行时“上古”之战老兵凋零

    作者列表:木苏,临石,得为,等等 业界要闻 安全漏洞 CVE-2019-9512 CVE-2019-9514 http2 的 DOS 漏洞,一旦攻击成功会耗尽服务器的 cpu/mem,从而导致服务不可 ...

  2. 云托管,边缘物理计算&托管物理计算,你所需要了解的……

    随着业务发展,传统数据中心建设复杂性越来越高,基建的管理.设备的繁杂.人力成本的提升,是否让你的运维成本越来越高?企业生产效率却越来越低? 业务快速发展,设备采购周期冗长,大量采购造成CAPEX过重, ...

  3. 在阿里云托管kubernetes上利用 cert-manager 自动签发 TLS 证书[无坑版]

    前言 排错的过程是痛苦的也是有趣的. 运维乃至IT,排错能力是拉开人与人之间的重要差距. 本篇会记录我的排错之旅. 由来 现如今我司所有业务都运行在阿里云托管kubernetes环境上,因为前端需要对 ...

  4. 华为云企业级Redis揭秘第16期:超越开源Redis的ACID"真"事务

    摘要: 开源Redis只支持伪事务,应用场景受限.高斯Redis发布企业级事务特性,支持完备ACID,为交易.库存等上层业务带来全新可能. 本文分享自华为云社区<华为云企业级Redis揭秘第16 ...

  5. Spring Boot项目微信云托管入门部署

    微信云托管本身是一个服务器,里面的软件都已经配置好了,直接使用即可,适用于一些简单部署的项目.直接把项目直接上传到服务器即可.无需各种繁琐的软件配置和打包,微信云托管统统给你搞定.而且系统会根据使用量 ...

  6. 乘风破浪,.Net Core遇见Dapr,为云原生而生的分布式应用运行时

    Dapr是一个由微软主导的云原生开源项目,国内云计算巨头阿里云也积极参与其中,2019年10月首次发布,到今年2月正式发布V1.0版本.在不到一年半的时间内,github star数达到了1.2万,超 ...

  7. 活动精彩实录 | 阿里云刘军民(米诺):Cassandra中文社区年度回顾

    点击这里观看完整视频 大家好,我是刘军民,我是阿里云数据库的产品经理,目前负责云数据库的产品规划以及相关工作.曾在2019年和多位小伙伴一起发起了中文社区,我希望有更多的小伙伴能加入到社区建设中,这样 ...

  8. 百度云BaaS体系揭秘,突破共识机制、单机计算和串行处理三大瓶颈

    区块链作为去中心化的技术机制拥有广泛的应用场景与市场潜能.自2017年爆发式增长后,区块链虽然已经进入平稳期,但仍然存在概念混淆.技术性能制约.智能合约制约.共识机制.网络建设等痛点.为了打破行业壁垒 ...

  9. 在阿里云托管的k8s上使用nas做动态存储

    前言 关于aliyun托管k8s的存储插件主要有两种: CSI # kubectl get pod -n kube-system | grep csi-plugin csi-plugin-8bbnw ...

  10. 基于阿里云托管kubernetes的版本升级

    前言 因为阿里云的knative对应得k8s版本大于1.15,而我们目前得集群环境是1.14.8,因此需要对预发环境进行版本升级.基于aliyun托管的kubernetes集群版本升级本没有什么可写, ...

随机推荐

  1. 浅说TCP状态机制

    本文分享自天翼云开发者社区<浅说TCP状态机制>,作者:云云生息 TCP(Transmission Control Protocol)是一种面向连接的.可靠的传输协议,常用于互联网中应用层 ...

  2. Q:xml 需要转义的字符

    XML实体中不允许出现"&","<",">"等特殊字符,否则XML语法检查时将出错,如果编写的XML文件必须包含这些字符 ...

  3. Linux嵌入式设备怎么确定网络端口的速率

    Linux嵌入式设备怎么确定网络端口的速率 突发奇想,就是Linux下面我能不能查询到端口的速率,以此来判断要不要频繁的发送网络数据包呢? 或者更换包利用率更高的协议呢. 于是抱着这样的想法,我开始学 ...

  4. C# Web下的类库 项目中获取程序的运行路径

    System.AppDomain.CurrentDomain.SetupInformation.ApplicationBase

  5. Typecho Mirages 主题自定义公告样式

    使用步骤 将以下代码加入到 <head> 标签中.对于本主题,依次进入 控制台 - 外观 - 设置外观 - 主题自定义扩展,将代码加入到 自定义 HTML 元素拓展 - 标签: head ...

  6. 大数据之路Week10_day05 (Redis的安装与简单命令使用)

    Redis 支持单机版和集群,下面的步骤是单机版安装步骤 redis3.0.0版本的安装包百度云链接: 链接:https://pan.baidu.com/s/1mb_SdU5hHlrmUkWN7Drx ...

  7. 大数据之路Week08_day02 (Flume 三个组件Source, channel, sink)

    在使用之前,先介绍组件Flume的特点和一些组件 Flume的优势: 1. Flume可以将应用产生的数据存储到任何集中存储器中,比如HDFS,HBase 2. 当收集数据的速度超过将写入数据的时候, ...

  8. Python基础-模块、Python操作excel

    今日概要 模块 自定义模块 内置模块 第三方模块 [!Caution] 这个地方讲的会比较多,而且有的东西网上搜不到!!! 自动化办公相关模块 -- Excel和Word 面向对象 1. 面向对象中的 ...

  9. sql sever查询库中每个表是否存在某个列名 列出表名

    select t.TABLE_NAME from information_schema.columns t where t.COLUMN_NAME='列名';

  10. [I.1] 个人作业:阅读和提问

    个人作业:阅读和提问 项目 内容 这个作业属于哪个课程 2025年春季软件工程(罗杰.任健) 这个作业的要求在哪里 [I.1] 个人作业:阅读和提问 我在这个课程的目标是 学习并掌握软件工程方法,与团 ...