作者:张星宇
在大型语言模型(LLM)生态快速演进的今天,Model Context Protocol(MCP)作为连接 AI 能力与真实世界的标准化协议,正逐步成为智能体开发的事实标准。该协议通过定义 Resources(静态资源)、Prompts(提示词模板)和 Tools(可执行工具)三大核心能力,让开发者能够以模块化方式为 LLM 扩展文件系统访问、API 集成甚至物联网控制等交互能力。
然而当前 MCP Server 的开发部署仍存在显著痛点:开发者需要手动配置 Python/TypeScript SDK、处理依赖冲突,最终还需自行解决云端的 IaC 部署难题。这种碎片化体验使得从零构建 MCP Server 的成本过高。而通过 Serverless Devs CLI 工具,开发者能够一键拉起 MCP Server 项目,并在开发完成后一键部署到云端,显著缩短开发链路,提升 MCP Server 的开发效率。
本文将带你通过 Serverless Devs CLI 工具,开发并一键部署一个原生 SSE 的示例 MCP Server 到阿里云函数计算(FC),提供自带 LLM 的 Client ,可对部署好的 MCP Server 进行测试。
什么是 Serverless Devs?
Serverless Devs【1】 是一个开源开放的 Serverless 开发者平台,致力于为开发者提供强大的工具链体系。通过该平台,开发者可以一键体验多云 Serverless 产品,极速部署 Serverless 项目。Serverless Devs 于 2020 年 10 月 23 日正式开源,并于 2022年 进入 CNCF 沙箱,成为首个入选的 Serverless 工具项目,目前项目已经服务于成千上万的开发者和企业用户。
Serverless Devs 包含 CLI 工具,Registry 各类热门 AI 应用模版、实用 AI 工具以及 AI 工作流),CICD 工具,并与函数计算 FC、FunctionAI 开发平台密切合作,为开发者提供更加便利的 Serverless+AI 服务。
从零开发 MCP Server
本地初始化 MCP Server
初始化 MCP Server 项目到本地需要借助 Serverless Devs 工具。可依照此文档【2】进行安装。安装并配置完成后,通过以下指令初始化一个 Hello World MCP Server 项目:
csharp
s init start-mcp-nodejs-hello-world
按照提示填入地域,函数名和配置好的 access,即可完成项目的初始化:

项目的目录结构如下:
csharp
.
├── build.yaml # 构建配置
├── code # 项目代码目录
│ ├── check_node_version.mjs # 部署前检查脚本
│ ├── package-lock.json
│ ├── package.json
│ ├── src
│ │ └── index.ts # 项目源码
│ ├── tsconfig.json
│ └── webpack.config.js
├── readme.md
└── s.yaml # 部署 YAML
开发 MCP Server
项目根目录下的 code
文件夹即是项目代码的目录,部署时只有这个文件夹里的内容会部署到函数计算 FC 上。打开 src/index.ts
文件,可以看到 CLI 已经帮你写好了一个简单的、可直接进行部署的Hello World MCP Server:
typescript
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
import { z } from "zod";
import express from "express";
import { SSEServerTransport } from "@modelcontextprotocol/sdk/server/sse.js";
// Create a map to store the transport for each session
const sessionTransport: Map<string, SSEServerTransport> = new Map();
// Create a new server instance every time a new connection is made to ensure concurrency
const createServer = () => {
// Create server instance
const server = new McpServer({
name: "my-mcp-server",
version: "1.0.0",
});
// Implement your tools here
server.tool(
"hello_world",
"Return string 'hello world!'",
{
// Define input parameters using zod. example:
// prefix: z.string().describe('prefix').optional(),
},
async () => {
console.log("Hello World tool called");
return {
content: [{
type: "text",
text: 'hello world!',
}]
}
},
);
return server;
}
const app = express();
app.get("/sse", async (req, res) => {
console.log("SSE connection opened");
console.log("Request Headers:", req?.headers); // 按需输出特定属性
console.log("Request Query:", req?.query);
const server = createServer();
server.server.onclose = async () => {
await server.close();
sessionTransport.delete(transport.sessionId);
};
const transport = new SSEServerTransport("/messages", res);
sessionTransport.set(transport.sessionId, transport);
await server.server.connect(transport);
return;
});
app.post("/messages", async (req, res) => {
const sessionId = req.query.sessionId as string;
if (!sessionId) {
throw new Error("sessionId query parameter is required");
}
const transport = sessionTransport.get(sessionId);
if (transport) {
console.log("SSE message received");
console.log("Request Headers:", req?.headers); // 按需输出特定属性
console.log("Request Query:", req?.query);
console.log("Request Body:", req?.body);
await transport.handlePostMessage(req, res);
}
return;
});
app.listen(8080, () => {
console.log('MCP Server running on port 8080');
});
这个 Server 包含一个名字为 hello_world
的工具,它只会返回一个字符串 'hello world!'
,且不需要任何输入参数。你可以参考当前代码的实现自行修改工具,且 CLI 已经帮你配置好了 package.json
,你可以按照你开发任意 Node.js
项目的方式来开发这个 Server。
部署 MCP Server 到函数计算 FC
完成 Server 的开发后,你可以通过 Serverless Devs CLI 工具一键将你的 MCP Server 部署到函数计算。Serverless Devs 是通过 s.yaml
部署代码的,其需要包含所有部署需要的信息,包括实例规格、代码目录、触发器配置等等,而 CLI 已经帮你写好了,因此你不需要在意这些。
在部署之前,还需要对代码进行打包。在这里我们使用 webpack
进行打包,配置已经帮你写好了,因此你只需在 code
目录下执行以下指令:
注意:需要本地 node 版本为 20 或以上。
arduino
npm install # 如果你之前没有执行
npm run build
若 code
目录下出现了 dist
文件夹并包含以下文件,则说明构建成功:

此时,你已经准备好将这个 Server 部署到函数计算了!回到项目根目录,执行以下指令:
s deploy -y
若看到以下信息,则说明部署成功。部署成功后,Serverless Devs 会打印部署成功的函数的配置信息:
scss
✔ [start-mcp-nodejs-hello-world] completed (5.9s)
🚀 Result for [deploy] of [start-mcp-server-nodejs]
====================
region: xxxxx
......配置信息
其中,functionName
就是部署好的函数的名称,你可以登录阿里云函数计算控制台【3】查看。你还可以在配置信息中找到 system_url
字段,这个就是你的 MCP Server 的 URL,可以用于测试和集成到你自己的系统。
测试 MCP Server
你可以本地启动一个官方 inspector【4】 测试部署好的 MCP,只需执行:
bash
npx @modelcontextprotocol/inspector node build/index.js
或者,你也可以启动一个我们基于官方项目修改的,内置好了 LLM 的 inspector:
bash
npx @serverless-devs/inspector node build/index.js
Transport Type
选择 SSE
,复制之前部署获取到的 system_url
,在尾部添加 /sse
,然后粘贴到 URL
输入框。点击 Connect
,再切到 Tools
,点击 List Tools
,即可看到部署好的 Server 的工具信息,并能进行调试。

若你使用的是我们的包含大模型的 inspector,还可以切到 LLM
,选择大模型,填入你的 API Key,测试大模型使用你的工具的效果:
需要先点击 List Tools,否则大模型无法使用工具

三种方式接入客户端
方式一:官方 Client
所有部署到函数计算 FC 的 MCP Server 都遵循 SSE 协议。对于已经支持 SSE 的官方 Client (例如Cursor),接入配置如下:
json
{
"mcpServers": {
"server-name": {
"url": "<部署好的system_url>/sse",
"env": { // 如果有的话
"key": "value"
}
}
}
}
对于暂未支持 SSE 的 Client,可以参考一些开源社区代理解决方案,例如:
- mcp-proxy【5】
- supergateway【6】
方式二:其他本地 Client
对于非官方的 Client,接入 MCP Server 需要使用官方的提供的 sdk 进行连接。具体开发方式可参考官方文档【7】。一个示例 Node Client 如下:
javascript
import { Client } from "@modelcontextprotocol/sdk/client/index.js";
import { SSEClientTransport } from "@modelcontextprotocol/sdk/client/sse.js";
const client = new Client({
name: "example-client",
version: "1.0.0"
}, {
capabilities: {}
});
const transport = new SSEClientTransport(
new URL("<部署好的system_url>/sse")
);
await client.connect(transport);
方式三:在 FC 部署一个 Client
如果你需要一个远端的 Client,你也可以在函数计算 FC 应用中心部署 inspector 到函数计算。你可以通过这个链接【8】一键部署。部署完成后,点击访问域名即可进入 inspector 界面。


结语
至此,你已经成功初始化,开发并部署了一个属于你自己的 SSE MCP Server!除了文章中示范的基于 Node 的 MCP Server Hello World 项目,Serverless Devs 还提供了基于 Python,Java 的 Hello World 项目,以及大量可以一键部署的开源 Server,包括高德地图、百度地图、Github 等等,详情可以查看这个代码仓库【9】。
欢迎您加入 Serverless 开发者技术学习群 钉钉群,群号:33947367 与我们交流。

【1】Serverless Devs
【2】Serverless Devs 快速入门文档
docs.serverless-devs.com/getting-sta...
【3】阿里云函数计算控制台
account.aliyun.com/login/login...
【4】官方 inspector
【5】mcp-proxy
【6】supergateway
【7】MCP 官方文档
modelcontextprotocol.io/docs/concep...
【8】函数计算 FC 应用中心
fcnext.console.aliyun.com/application...
【9】mcp-servers