阿里云 FunctionAI 发布 MCP 开发平台,加速 AI 应用落地

阿里云 FunctionAI 发布 MCP 开发平台,提供 Serverless 架构支持,解决 MCP 落地难题,加速 AI 应用开发。支持快速部署、鉴权、变量管理等功能,并即将推出 Agent 开发能力。

原文标题:MCP 正当时:FunctionAI MCP 开发平台来了!

原文作者:阿里云开发者

冷月清谈:

本文介绍了阿里云 FunctionAI 基于函数计算构建的Serverless AI应用开发平台,该平台提供了完整的模型上下文协议(MCP)开发能力,旨在解决MCP生态中存在的本地化瓶颈、弹性困境和开发断层等问题。文章阐述了Serverless架构与MCP server托管的高度契合性,并详细介绍了FunctionAI在快速部署、托管、调试、鉴权、变量管理、代码仓库集成和弹性调度等方面的功能和使用方法。FunctionAI支持通过模板、自定义服务和ServerlessDevs工具等多种方式快速部署MCP服务。同时,FunctionAI还提供了鉴权、变量管理和代码仓库绑定等高阶能力,以满足复杂场景下的安全和自动化需求。此外,FunctionAI还通过极速模式优化了延迟敏感型业务的性能。文章最后展望了FunctionAI在MCP和Agent集成方面的未来发展。

怜星夜思:

1、文章提到 MCP 旨在统一 Agent 和 LLM 之间的标准化接口,你认为 MCP 协议的标准化对于整个 AI 生态的意义是什么?除了文中提到的,还有哪些潜在的优势和挑战?
2、文章提到了 FunctionAI 提供的多种部署方式,你觉得哪种方式最适合初学者?对于有经验的开发者,哪种方式更高效?为什么?
3、FunctionAI 提供了鉴权、变量管理等高阶能力,你认为这些功能对于 MCP Server 的安全性和可维护性有什么帮助?在实际应用中,你还会考虑哪些其他的安全措施?

原文内容

图片

阿里妹导读


文章详细介绍了MCP及其重要性,探讨了解决MCP生态系统中现存问题的有效方案,并展望了该领域未来的可能发展方向。


MCP:AI 时代的“操作系统接口”


2024 年 11 月,Anthropic 发布模型上下文协议(MCP),这一开放标准迅速引发开发者社区的"协议觉醒"。其本质是通过标准化接口实现 LLM 与外部世界的双向交互,正如 USB 协议统一外设接入,MCP 正成为 AI 应用连接数字生态的通用总线。随着 Cursor、Claude Desktop 等开发工具相继集成,特别是 OpenAI 宣布全面兼容 MCP 协议,标志着 MCP 从技术实验迈入产业级标准,这一标准化接口正重塑 AI 与数字世界的交互范式。

截至 2025 年 4 月,MCP.so[1]上已已有超过 8000 个注册的 MCP Server,涵盖数据处理、文件系统、API 网关、聊天机器人、数据库等服务类别,这一数量还在迅速增长。

生态暴发期的痛点

管 MCP 生态呈现指数级增长,GitHub 仓库星标数半年突破 3.5 万,但生产级落地仍面临三重挑战:


1. 本地化瓶颈:当前绝大多数 MCP server 都采用传统 STDIO 模式,该模式没有鉴权能力(缺乏 OAuth 2.1 标准的双向认证机制、无法实现基于角色的访问控制),在复杂业务场景下暴露出调试困难、网络隔离性差等缺陷,难以实现访问内网环境的数据安全管控,内网穿透导致攻击面扩大;

2. 弹性困境:MCP 工具调用流量呈现显著的非稳态特征以及"脉冲式"波动,比如智能客服系统的峰谷效应非常明显,传统虚拟机部署造成大量资源浪费;

3. 开发断层:从本地调试到云端部署需要重构鉴权、变量管理、日志、中间件等基础组件,改造成本高,开发者大量的精力消耗在非业务代码的开发上;

Serverless 是 MCP 托管的最佳解决方案

我们观察到大部分的 MCP server 有以下特点:

1. 稀疏调用,而且对算力的需求都比较小,0.5c/1G 的规格基本能够应对大部分场景;
2. 代码体积比较小(<100MB),Node.js、Python 解释型语言是 MCP 的一等公民,大部分 MCP server 直接通过 npx、uv 就能一键运行;
3. MCP server 的迭代非常快,新增、修改或弃用 MCP server 的场景会非常高频,对 MCP server 元数据管理的需求非常普遍;

因此灵活部署、弹性扩展的运行时对于 MCP server 的托管非常契合,这恰恰是 Serverless 的最大优势。以阿里云函数计算为例:


1. 天然的事件驱动模型,提供毫秒级弹性能力、按量付费、安全沙箱的运行时环境,完美解决了云上托管对于性能、成本、安全的需求;
2. 官方对于 Node.js、Python 运行时的支持完善,内置代码包加速能力以及层的扩展,大幅降低代码启动时间;
3. 控制台、SDK、ServerlessDevs 工具提供丰富的函数元数据的管理能力;

这些能力让 Serverless 正成为托管 MCP 的最优解。作为 MCP 的最佳运行时,[2]

Function AI 是基于函数计算构建的 Serverless AI 应用开发平台,基于函数计算的运行时能力上线了完整的 MCP 开发能力,成为真正意义上的 MCP 开发平台。您可以进入 FunctionAI 控制台[3],快速体验 MCP 服务的能力。


快速部署

方式一:通过模板一键部署

1. 选择 MCP 模板

进入 FunctionAI 控制台[4],选择探索->筛选应用模板(MCP Server),选择一个 MCP 模板进行部署


图片

2. 填写模板配置,部署项目

图片

3. 查看部署进度

图片

方式二:创建自定义 MCP 服务


1. 创建空白项目

图片

2. 创建 MCP 服务

图片

3. 编辑 MCP 服务配置,完成后点击预览&部署

图片

4. 查看部署进度,等待部署完成

图片

方式三:使用 ServerlessDevs 工具本地部署

FunctionAI 正式发布了 ServerlessDevs[5]工具的 MCP 组件,实现本地部署 MCP 工程到 FunctionAI 的能力


1. 安装 ServerlessDevs 工具:

npm install @serverless-devs/s -g
2. 初始化 MCP 项目

s init start-fcai-mcp-nodejs
3. 查看 s.yaml

edition: 3.0.0
name: start-mcp-server-nodejs
access: 'default'
vars:
  region: 'cn-hangzhou'
resources:
  nodejs-stdio-hello-world:
    component: fcai-mcp-server
    props:
      region: ${vars.region}
      description: mcp server deployed by devs
      transport: stdio # stidio | sse
      runtime: nodejs20
      cpu: 1
      memorySize: 1024
      rootDir: ./code
      source:
        oss: auto
      build:
        default: #默认构建器
          # 构建环境
          languages:
            - nodejs20
          # 执行步骤
          steps:
            - run: npm install
            - run: npm run build
      startCommand: "node ./dist/index.js" # 启动命令
      instanceQuota: 1 # 实例数配额
4. 执行部署

s deploy
图片


登录到控制台,可以查看云端的部署详情


图片


测试 MCP 服务

FunctionAI 支持托管 STDIO/SSE 协议的 MCP server。如果 MCP server 代码采用 STDIO,FunctionAI 会启动一个 SSE 服务来代理 STDIO 的请求,客户端访问需要使用 SSE 方式。


当 MCP 服务部署完成后,平台会生成一个 SSE 的连接地址,并且会生成 MCP server 的 schema 用于测试。


用户可以直接在控制台上测试连接、测试工具,也可以使用官方的 Inspector 在本地进行测试。

方式 1:FunctionAI 控制台测试


图片


查看日志和监控


图片

图片

方式 2:Inspector 本地测试

复制 FunctionAI 生成的公网访问地址


图片

本地启动 inspector,输入访问地址进行调试


npx @modelcontextprotocol/inspector

图片

高阶能力

鉴权

MCP 的鉴权只适用于 SSE 的协议,而且必须遵循 OAuth2.1 协议标准,对于大量的 STDIO 的 MCP 服务托管的改造难度非常之高,企业落地 MCP 鉴权是一个非常痛点的问题。


FunctionAI 提供了网关侧的 Bearer 鉴权能力,用户只需要开启鉴权功能,使用平台生成的 Bearer Token,就可以让 MCP 服务自带鉴权能力。


使用方式

编辑服务配置,点击开启鉴权,保存并且部署。开启后,平台会对服务生成一个只读的 Bearer Token。


图片

图片

测试鉴权生效


使用平台生成的 Bearer Token,可以正常访问 MCP 服务


图片


使用错误的 token 时,访问失败


图片


使用本地的 Inspector,输入服务的 token,访问正常。


图片

变量管理

很多的 MCP Server 代码都需要访问第三方服务,比如高德地图、Github 等,需要持有用户的访问秘钥,比如 API-Key、AccessToken,这些秘钥通常以环境变量加载或者启动命令参数注入。


FunctionAI 提供了变量管理能力,并且支持敏感变量托管,可以实现 MCP 服务访问秘钥的安全可靠管理。


配置方式:设置服务变量

选择服务->服务变量,添加服务变量的 Key 和 Value


图片

加载方式 1:环境变量

FunctionAI 上配置的服务变量会默认注入到函数启动的环境变量中,MCP 服务代码可以直接通过系统环境变量读取


图片

加载方式 2:启动参数

FunctionAI 的服务变量支持通过 ${self.KEY_NAME} 的方式引用,可以在启动命令中修改命令行参数,使用变量的引用,在启动阶段注入变量的值。


图片
图片

绑定代码仓库进行持续部署

FunctionAI 的 MCP 服务面向开发态能力,提供以代码仓库托管 MCP 服务的能力。

使用方式:


1. 编辑 MCP 服务配置,选择代码仓库,目前支持了 Github、Gitee、Codeup、GitLab、OSS 代码仓库。
2. 选择仓库分支、MCP 工程在代码仓库中的根目录
3. 选择构建环境:对于多语言的工程,可以选择多个构建环境
4. 编辑构建命令:例如 npm build、pip install -r requirements.txt
5. 可选:开启构建缓存,缓存目录根据不同语言可以设置~/.npm(Node.js)、~/.cache(Python)、~/.m2、(Java)

图片

绑定 Git 仓库后,如果指定的分支有 push 操作,会自动触发服务的持续部署


图片

极速模式

对于延迟敏感性的业务,FunctionAI 提供了极速模式,可以提前预留指定数量的实例快照,降低频繁冷启动带来的开销,并且只有在有活跃请求时才会产生 vCPU 费用,可以实现性能和成本的平衡。

另外由于 MCP SSE 请求的 session 机制,同一个 session id 访问到不同实例会导致上下文丢失,因此建议开启预置快照为 1 并且实例限额为 1,这样可以让 SSE 请求打到不同弹性实例的概率更小。

FunctionAI 后面会上线会话亲和性能力,尽情期待。


图片


开启后,可以在函数监控页面看到预留实例的个数


图片

总结与未来展望


FunctionAI 现在已经支持了完整的 MCP 开发能力,包括:

  • 部署形式上,支持模板直接部署、自定义 MCP 服务、ServerlessDevs 工具本地部署
  • 托管能力上,支持 STDIO/SSE 的自动托管,无需业务改造既能生成可用于访问的 SSE 地址
  • 调试能力上,支持控制台直接调试以及 Inspector 本地调试
  • 二次开发能力上,支持变量管理、鉴权、绑定代码仓库进行持续部署
  • 可观测能力上,支持函数监控、实例监控以及日志
  • 弹性调度上,支持标准模式以及极速模式


MCP 的价值是统一了 Agent 和 LLM 之间的标准化接口,有了 MCP Server 的托管以及开发态能力只是第一步,接下来重要的是做好 MCP 和 Agent 的集成,FunctionAI 即将上线 Agent 开发能力,敬请期待。


[1]MCP.so:https://mcp.so/

[2]
[3]FunctionAI 控制台:https://account.aliyun.com/login/login.htm?oauth_callback=https%3A%2F%2Fcap.console.aliyun.com%2Fexplore&clearRedirectCookie=1&lang=zh
[4]FunctionAI 控制台:https://account.aliyun.com/login/login.htm?oauth_callback=https%3A%2F%2Fcap.console.aliyun.com%2Fexplore&clearRedirectCookie=1&lang=zh
[5]ServerlessDevs:https://www.serverless-devs.com/

点击阅读原文,立即体验!

个人感觉哈,如果是刚入门,那肯定选模板一键部署啊!就像新手玩游戏,直接选个简单模式,先体验一下再说。等熟悉了,再自己慢慢研究各种高级操作。对于大佬来说,ServerlessDevs 这种本地部署方式就像是开了作弊器,能更快更精准地搞定一切,效率杠杠的!而且大佬们都喜欢用命令行,感觉更 Geek,更有掌控感!

对于初学者,我推荐使用模板一键部署。这种方式屏蔽了很多底层细节,让初学者可以快速体验 MCP 的功能,建立起对整个流程的感性认识。而对于有经验的开发者,使用 ServerlessDevs 工具本地部署会更高效。因为他们更熟悉命令行操作,可以更灵活地配置和管理项目,同时也能更好地进行版本控制和自动化部署。

这些功能当然是雪中送炭啦!鉴权就像是给数据上了一把锁,保证只有授权用户才能访问,这对于保护用户隐私至关重要。变量管理则可以避免敏感信息泄露,降低安全风险。但光有这些还不够,我认为还需要考虑以下几点:

1. 数据加密:对敏感数据进行加密存储和传输,防止数据泄露。
2. 访问控制:实施严格的访问控制策略,限制用户对资源的访问权限。
3. 安全审计:定期进行安全审计,发现潜在的安全漏洞。
4. 安全培训:加强开发者和运维人员的安全意识培训。

作为一名老码农,我觉得对于初学者来说,模板一键部署无疑是最友好的选择。它可以让新手快速上手,避免被繁琐的配置和部署过程吓退。而对于经验丰富的开发者,使用 ServerlessDevs 工具本地部署则更具优势。这种方式可以充分利用开发者熟悉的工具和流程,提高开发效率。同时,本地部署也更方便进行调试和测试,可以更快地发现和解决问题。

谢邀,利益相关,简单说两句。我觉得 MCP 的意义在于它提供了一种标准化的方式来连接各种 AI 组件,就像乐高积木一样,不同的组件可以灵活组合,构建出各种复杂的应用。但是,标准化也可能带来一些问题,比如可能限制了某些特定场景下的优化,或者可能导致过度设计。总的来说,我认为 MCP 的发展需要不断地在标准化和灵活性之间寻找平衡。

从我个人的角度来看,MCP 的标准化就像是给 AI 世界建立了一套通用的“交流语言”。优势在于,它打破了不同模型和应用之间的壁垒,促进了互操作性,降低了开发和集成的成本。想象一下,如果每个 USB 设备都有自己的接口标准,那会多么混乱!但挑战也存在,比如如何保证协议的持续演进以适应快速发展的 AI 技术,以及如何平衡标准化和创新之间的关系。另外,安全问题也是一个需要长期关注的点。

我觉得鉴权和变量管理是 MCP Server 安全性的基础。鉴权可以防止未经授权的访问,变量管理可以避免敏感信息泄露。对于可维护性,这些功能可以降低代码的复杂性,提高代码的可读性和可维护性。在实际应用中,我还会考虑以下安全措施:DDoS 防护、Web 应用防火墙(WAF)、入侵检测系统(IDS)等。另外,定期进行安全演练,提高团队的安全应急响应能力也很重要。

MCP 的标准化对于 AI 生态的意义,可以类比于互联网 TCP/IP 协议的出现。它使得不同的 AI 模型和 Agent 能够无缝连接和交互,极大地降低了 AI 应用开发的门槛和成本。除了文中提到的优势,我认为还有以下几点:

1. 促进 AI 技术的普及:标准化的接口使得更多的开发者能够更容易地使用 AI 技术,无需深入了解底层模型的细节。
2. 加速 AI 创新:开发者可以基于标准化的接口构建各种创新的应用,而无需担心兼容性问题。
3. 提高 AI 应用的可靠性和稳定性:标准化的接口使得 AI 应用更容易进行测试和维护,从而提高其可靠性和稳定性。

当然,MCP 的标准化也面临着一些挑战,例如:

1. 标准化过程中的利益博弈:不同的 AI 模型和 Agent 厂商可能会在标准化过程中争夺主导权,从而影响标准化的进程。
2. 标准化与创新的平衡:过度标准化可能会阻碍 AI 技术的创新。
3. 安全风险:标准化的接口也可能成为黑客攻击的目标,从而带来安全风险。

鉴权和变量管理绝对是安全性和可维护性的关键!鉴权就像给 MCP Server 加上了一道防火墙,防止未经授权的访问。而变量管理则可以让我们集中管理敏感信息(比如 API 密钥),避免硬编码在代码里,降低泄露风险。除了这些,我还会在网络层面加强隔离,定期进行安全漏洞扫描,并建立完善的日志审计机制,确保系统安全可靠。