借助 serverless 将 MCP 服务部署到云端

简介: 本文介绍了如何将 MCP 服务通过 SSE 协议部署到云端,避免本地下载和启动的麻烦。首先,使用 Python 实现了一个基于 FastMCP 的网络搜索工具,并通过设置 `transport='sse'` 启用 SSE 协议。接着,编写客户端代码测试服务功能,确保其正常运行。随后,利用阿里云函数计算服务(FC 3.0)以 Serverless 方式部署该服务,包括创建函数、配置环境变量、添加依赖层以及部署代码。最后,提供了客户端测试方法和日志排查技巧,并展示了如何在不同工具(如 Cherry-Studio、Cline 和 Cursor)中配置云端 MCP 服务。

市面上大部分教程都是讲的如何使用本地的 MCP 服务,但是有时我们希望直接把 MCP 服务部署到云端来直接调用,就省去了本地下载启动的烦恼了。此时,我们就需要来使用 MCP 的 SSE 的协议来实现了。

此时,我们先来写 SSE 协议的 MCP 服务。实现起来很简单,只需要将我们最后的 run 命令中的 transport 参数设置为 sse 即可。下面还是以上面的网络搜索为例子,来实现一下 ,具体代码如下:

# sse_web_search.py
import httpx

from mcp.server import FastMCP


app = FastMCP('web-search', port=9000)


@app.tool()
async def web_search(query: str) -> str:
    """
    搜索互联网内容

    Args:
        query: 要搜索内容

    Returns:
        搜索结果的总结
    """
    async with httpx.AsyncClient() as client:
        response = await client.post(
            'https://open.bigmodel.cn/api/paas/v4/tools',
            headers={
   'Authorization': 'YOUR API KEY'},
            json={
   
                'tool': 'web-search-pro',
                'messages': [
                    {
   'role': 'user', 'content': query}
                ],
                'stream': False
            }
        )

        res_data = []
        for choice in response.json()['choices']:
            for message in choice['message']['tool_calls']:
                search_results = message.get('search_result')
                if not search_results:
                    continue
                for result in search_results:
                    res_data.append(result['content'])

        return '\n\n\n'.join(res_data)


if __name__ == "__main__":
    app.run(transport='sse')

FastMCP 中,有几个可以设置 SSE 协议相关的参数:

  • host: 服务地址,默认为 0.0.0.0
  • port: 服务端口,默认为 8000。上述代码中,我设置为 9000
  • sse_path:sse 的路由,默认为 /sse

此时,我们就可以直接写一个客户端的代码来进行测试了。具体代码如下:

import asyncio
from mcp.client.sse import sse_client
from mcp import ClientSession


async def main():
    async with sse_client('http://localhost:9000/sse') as streams:
        async with ClientSession(*streams) as session:
            await session.initialize()

            res = await session.call_tool(
                'web_search', {
   'query': '杭州今天天气'})
            print(res)


if __name__ == '__main__':
    asyncio.run(main())

我们可以看到,他正常工作了,并搜索到了内容:
image-20250406152518223.png

当然,我们也可以使用 mcp dev sse_web_search.py 的方式来测试。这里要注意的是,Transport Type 需要改成 SSE,然后下面填写我们的本地服务地址。
image-20250406153106098.png

当一切都测试没有问题后,我们就来将他通过 severless 的方式来部署到云端。这里我们选择的是阿里云的函数计算服务。首先我们先进入到阿里云的 函数计算 FC 3.0函数 菜单,并点击 创建函数 来创建我们的服务。地址是:https://fcnext.console.aliyun.com/cn-hangzhou/functions
image-20250406153655185.png
g)

我们这里选择 Web函数 ,运行环境我们选择 Python 10。代码上传方式这里可以根据大家需求来,因为我这里就一个 python 文件,所以我这里就直接选择使用示例代码了,这样我后面直接把我的代码覆盖进去了就行了。启动命令和监听端口我这里都保留为默认(端口需要和代码中一致)。

环境变量大家可以将代码中用到的 apikey 可以设置为一个环境变量,这里我就不设置了。最后设置完成截图如下:
image-20250406154115438.png

在高级设置中,为了方便调试,我启动了日志功能。
image-20250406154228341.png

设置完成后,点创建即可。他就跳转到代码编辑部分,然后我们把之前的代码复制进去即可。
image-20250406154441634.png

完成后,我们来安装下依赖。我们点击右上角的编辑层。这里默认会有个默认的 flask 的层,因为开始的模板用的是 flask,这里我们就不需要了。我们删除他,再添加一个 mcp 的层。选择添加官方公共层,然后搜索 mcp 就能看到了一个 python 版的 MCP 层,里面包含了 MCP 所有用到的依赖。
image-20250406154753623.png

如果你还有其他第三方的,可以先搜索下看看公共层中是否有,没有就可以自行构建一个自定义的层。点击这里就可以,只需要提供一个 requirements 列表就可以了,这里就不赘述了。
image-20250406154935751.png

当我们都设置完成后,点击右下角的部署即可。

然后我们又回到了我们代码编辑的页面,此时,我们再点击左上角的部署代码。稍等一两秒就会提示代码部署成功。此时,我们的 MCP 服务就被部署到了云端。
image-20250406155135563.png

然后,我们切换到配置触发器中,就可以看到我们用来访问的 URL 地址了。当然,你也可以绑定自己的域名。
image-20250406155353662.png

然后,我们就可以用我们上面的客户端代码进行测试了。

import asyncio
from mcp.client.sse import sse_client
from mcp import ClientSession


async def main():
    async with sse_client('https://mcp-test-whhergsbso.cn-hangzhou.fcapp.run/sse') as streams:
        async with ClientSession(*streams) as session:
            await session.initialize()

            res = await session.call_tool('web_search', {
   'query': '杭州今天天气'})
            print(res)


if __name__ == '__main__':
    asyncio.run(main())

如果我们发现在客户端有报也不用慌,我们可以直接在日志中找到对应出错的请求点击请求日志查看报错来修复。
image-20250406155803071.png

到这里,我们的 MCP 服务就被部署到了云端,我们就可以在任何地方直接来使用它了。

比如,在 Cherry-Studio 中,我们可以这样来设置:
image-20250406160152782.png

Cline 中:
image-20250406160709759.png

Cursor 中:
image-20250406161055717.png

{
   
  "mcpServers": {
   
    "web-search": {
   
      "url": "https://mcp-test-whhergsbso.cn-hangzhou.fcapp.run/sse"
    }
  }
}

其他 MCP 教程可以查看:https://github.com/liaokongVFX/MCP-Chinese-Getting-Started-Guide

相关实践学习
【AI破次元壁合照】少年白马醉春风,函数计算一键部署AI绘画平台
本次实验基于阿里云函数计算产品能力开发AI绘画平台,可让您实现“破次元壁”与角色合照,为角色换背景效果,用AI绘图技术绘出属于自己的少年江湖。
从 0 入门函数计算
在函数计算的架构中,开发者只需要编写业务代码,并监控业务运行情况就可以了。这将开发者从繁重的运维工作中解放出来,将精力投入到更有意义的开发任务上。
相关文章
|
4月前
|
人工智能 运维 Serverless
函数计算 × MSE Nacos : 轻松托管你的 MCP Server
本文将通过一个具体案例,演示如何基于 MCP Python SDK 开发一个标准的 MCP Server,并将其部署至函数计算。在不修改任何业务代码的前提下,通过控制台简单配置,即可实现该服务自动注册至 MSE Nacos 企业版,并支持后续的动态更新与统一管理。
732 64
|
9月前
|
JSON 安全 Serverless
MCP Server On FC之旅2: 从0到1-MCP Server市场构建与存量OpenAPI转MCP Server
本文介绍了将社区主流STDIO MCP Server一键转为企业内可插拔Remote MCP Server的方法,以及存量API智能化重生的解决方案。通过FunctionAI平台模板实现STDIO MCP Server到SSE MCP Server的快速部署,并可通过“npx”或“uvx”命令调试。同时,文章还探讨了如何将OpenAPI规范数据转化为MCP Server实例,支持API Key、HTTP Basic和OAuth 2.0三种鉴权配置。该方案联合阿里云百练、魔搭社区等平台,提供低成本、高效率的企业级MCP Server服务化路径,助力AI应用生态繁荣。
1234 40
|
10月前
|
人工智能 开发框架 安全
Serverless MCP 运行时业界首发,函数计算让 AI 应用最后一公里提速
作为云上托管 MCP 服务的最佳运行时,函数计算 FC 为阿里云百炼 MCP 提供弹性调用能力,用户只需提交 npx 命令即可“零改造”将开源 MCP Server 部署到云上,函数计算 FC 会准备好计算资源,并以弹性、可靠的方式运行 MCP 服务,按实际调用时长和次数计费,欢迎你在阿里云百炼和函数计算 FC 上体验 MCP 服务。
828 30
|
10月前
|
人工智能 运维 安全
函数计算支持热门 MCP Server 一键部署
云上托管 MCP 搭建 AI Agent 将成为趋势。函数计算 FC 目前已经支持开源 MCP Server 一键托管,欢迎体验。
1359 113
|
10月前
|
自然语言处理 安全 数据挖掘
Hologres+函数计算+Qwen3,对接MCP构建企业级数据分析 Agent
本文介绍了通过阿里云Hologres、函数计算FC和通义千问Qwen3构建企业级数据分析Agent的解决方案。大模型在数据分析中潜力巨大,但面临实时数据接入与跨系统整合等挑战。MCP(模型上下文协议)提供标准化接口,实现AI模型与外部资源解耦。方案利用SSE模式连接,具备高实时性、良好解耦性和轻量级特性。Hologres作为高性能实时数仓,支持多源数据毫秒级接入与分析;函数计算FC以Serverless模式部署,弹性扩缩降低成本;Qwen3则具备强大的推理与多语言能力。用户可通过ModelScope的MCP Playground快速体验,结合TPC-H样例数据完成复杂查询任务。
|
9月前
|
人工智能 Serverless API
MCP Server 之旅第 4 站: 长连接闲置计费最高降低87%成本的技术内幕
阿里云函数计算(FC)提供事件驱动的全托管计算服务,支持 MCP Server 场景优化。通过 [MCP Runtime](https://mp.weixin.qq.com/s/_DSMRovpr12kkiQUYDtAPA),实现 Stdio MCP Server 一键托管,并借助亲和性调度解决 Session 保持问题。针对 MCP Server 的稀疏调用特性,函数计算引入长连接闲置计费机制,在毫秒级计费基础上,显著降低资源闲置成本(最高可达87%)。用户可通过控制台或 API 开启该功能,Websocket 长请求场景亦默认支持。此方案有效提升资源利用率,为用户提供灵活、经济的计算服务。
|
9月前
|
JSON 安全 Serverless
MCP Server 之旅第 2 站: 从 0 到 1 - MCP Server 市场构建与存量 OpenAPI 转 MCP Server
本文聚焦MCP协议在企业应用中的两大核心痛点:如何将社区主流STDIO MCP Server一键转为可插拔Remote MCP Server,以及如何实现存量OpenAPI向MCP Server的智能化转型。文章通过具体示例,展示了基于函数计算和协议转译Adapter的解决方案,支持npm/pip生态,实现零改造一键迁移,大幅降低成本。
|
10月前
|
人工智能 运维 安全
函数计算支持热门 MCP Server 一键部署
MCP(Model Context Protocol)自2024年发布以来,逐渐成为AI开发领域的实施标准。OpenAI宣布其Agent SDK支持MCP协议,进一步推动了其普及。然而,本地部署的MCP Server因效率低、扩展性差等问题,难以满足复杂生产需求。云上托管成为趋势,函数计算(FC)作为Serverless算力代表,提供一键托管开源MCP Server的能力,解决传统托管痛点,如成本高、弹性差、扩展复杂等。通过CAP平台,用户可快速部署多种热门MCP Server,体验高效灵活的AI应用开发与交互方式。
3841 10

热门文章

最新文章

相关产品

  • 函数计算