从零开始开发 MCP Server

本文涉及的产品
Serverless 应用引擎免费试用套餐包,4320000 CU,有效期3个月
函数计算FC,每月15万CU 3个月
简介: 文章介绍了如何利用Serverless Devs CLI工具从零开发并一键部署MCP Server至阿里云函数计算(FC)。涵盖MCP协议背景、Serverless Devs工具简介、本地初始化与开发MCP Server步骤、通过SSE协议部署及测试MCP Server方法,以及三种客户端接入方式。读者可快速上手构建支持LLM扩展交互能力的智能体服务,并使用内置LLM的Inspector进行调试。文末还提供了更多资源和交流渠道。

作者:张星宇

在大型语言模型(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 到 FunctionAI 开发平台,提供自带 LLM 的 Client ,可对部署好的 MCP Server 进行测试。

什么是 Serverless Devs?

Serverless Devs 是一个开源开放的 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 工具。可依照此文档进行安装。安装并配置完成后,通过以下指令初始化一个 Hello World MCP Server 项目:

s init start-fcai-mcp-nodejs
AI 代码解读

按照提示填入地域和配置好的 access,即可完成项目的初始化:

截屏2025-04-17 10.20.36.png

项目的目录结构如下:

.
├── 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
AI 代码解读

开发 MCP Server

项目根目录下的code文件夹即是项目代码的目录,部署时只有这个文件夹里的内容会部署到 FunctionAI 上。打开src/index.ts文件,可以看到 CLI 已经帮你写好了一个简单的、可直接进行部署的Hello World MCP Server:

import {
    McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
import {
    z } from "zod";
import {
    StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';


// 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;
}
// Create a new server instance
const server = createServer();
// Create a new stdio transport instance
const transport = new StdioServerTransport();
// Start the server
server.connect(transport).then(() => {
   
  console.log("Server started");
}).catch((err) => {
   
  console.error("Error starting server:", err);
});
AI 代码解读

这个 Server 包含一个名字为hello_world的工具,它只会返回一个字符串'hello world!',且不需要任何输入参数。你可以参考当前代码的实现自行修改工具,且 CLI 已经帮你配置好了package.json,你可以按照你开发任意Node.js项目的方式来开发这个 Server。

部署 MCP Server 到 FunctionAI

完成 Server 的开发后,你可以通过 Serverless Devs CLI 工具一键将你的 MCP Server 部署到 FunctionAI。Serverless Devs 是通过s.yaml部署代码的,其需要包含所有部署需要的信息,包括实例规格、代码目录、触发器配置等等,而 CLI 已经帮你写好了,因此你不需要在意这些。

在部署之前,还需要对代码进行打包。在这里我们使用webpack进行打包,配置已经帮你写好了,因此你只需在code目录下执行以下指令:

注意:需要本地 node 版本为 20 或以上。

npm install # 如果你之前没有执行
npm run build
AI 代码解读

code目录下出现了dist文件夹并包含以下文件,则说明构建成功:

截屏2025-04-17 10.49.11.png

此时,你已经准备好将这个 Server 部署到 FunctionAI 了!回到项目根目录,执行以下指令:

s deploy -y
AI 代码解读

若看到以下信息,则说明部署成功。部署成功后,Serverless Devs 会打印部署成功的函数的配置信息:

✔ [nodejs-stdio-hello-world] completed (37.35s)

🚀  Result for [deploy] of [start-mcp-server-nodejs]
====================
serviceName:               xxxxx
......配置信息
AI 代码解读

其中,projectNameserviceName 就是部署好的项目和服务的名称,你可以登录阿里云 Function AI 控制台查看。你还可以在配置信息中找到 internetUrl 字段,这个就是你的 MCP Server 的 URL,可以用于测试和集成到你自己的系统。

测试 MCP Server

你可以本地启动一个官方 inspector 测试部署好的MCP,只需执行:

npx @modelcontextprotocol/inspector node build/index.js
AI 代码解读

或者,你也可以启动一个我们基于官方项目修改的,内置好了 LLM 的 inspector:

npx @serverless-devs/inspector node build/index.js
AI 代码解读

Transport Type选择SSE,复制之前部署获取到的system_url,在尾部添加/sse,然后粘贴到URL输入框。点击Connect,再切到Tools,点击List Tools,即可看到部署好的 Server 的工具信息,并能进行调试。截屏2025-04-17 11.08.15.png

若你使用的是我们的包含大模型的 inspector,还可以切到LLM,选择大模型,填入你的 API Key,测试大模型使用你的工具的效果:

需要先点击 List Tools,否则大模型无法使用工具

截屏2025-04-17 11.19.32.png

三种方式接入客户端

方式一:官方 Client

所有部署到函数计算FC的 MCP Server 都遵循 SSE 协议。对于已经支持 SSE 的官方 Client (例如Cursor),接入配置如下:

{
   
  "mcpServers": {
   
    "server-name": {
   
      "url": "<部署好的system_url>/sse",
      "env": {
    // 如果有的话
        "key": "value"
      }
    }
  }
}
AI 代码解读

对于暂未支持 SSE 的 Client,可以参考一些开源社区代理解决方案,例如:

方式二:其他本地 Client

对于非官方的 Client,接入 MCP Server 需要使用官方的提供的 sdk 进行连接。具体开发方式可参考官方文档。一个示例 Node Client 如下:

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);
AI 代码解读

方式三:在 FC 部署一个 Client

如果你需要一个远端的 Client,你也可以在 函数计算 FC 应用中心部署 inspector 到函数计算。你可以通过这个链接一键部署。部署完成后,点击访问域名即可进入 inspector 界面。

image

截屏2025-04-17 16.03.05.png

结语

至此,你已经成功初始化,开发并部署了一个属于你自己的 SSE MCP Server!除了文章中示范的基于 Node 的 MCP Server Hello World 项目,Serverless Devs 还提供了基于 Python,Java 的 Hello World 项目,以及大量可以一键部署的开源 Server,包括高德地图、百度地图、Github 等等,详情可以查看这个代码仓库

欢迎您加入Serverless 开发者技术学习群 钉钉群,群号:33947367 与我们交流。

截屏2025-04-17 14.27.53.png

目录
打赏
0
64
63
0
97
分享
相关文章
MCP Server 实践之旅第 1 站:MCP 协议解析与云上适配
本文深入解析了Model Context Protocol(MCP)协议,探讨其在AI领域的应用与技术挑战。MCP作为AI协作的“USB-C接口”,通过标准化数据交互解决大模型潜力释放的关键瓶颈。文章详细分析了MCP的生命周期、传输方式(STDIO与SSE),并提出针对SSE协议不足的优化方案——MCP Proxy,实现从STDIO到SSE的无缝转换。同时,函数计算平台被推荐为MCP Server的理想运行时,因其具备自动弹性扩缩容、高安全性和按需计费等优势。最后,展望了MCP技术演进方向及对AI基础设施普及的推动作用,强调函数计算助力MCP大规模落地,加速行业创新。
1161 77
从零开始开发 MCP Server
本文介绍如何使用Serverless Devs CLI工具从零开发并一键部署MCP Server到阿里云函数计算(FC)。首先通过初始化MCP Server项目,完成本地代码编写,利用Node.js实现一个简单的Hello World工具。接着对代码进行打包,并通过Serverless Devs工具将项目部署至云端。部署完成后,提供三种客户端接入方式:官方Client、其他本地Client及在FC上部署的Client。最后可通过内置大模型的inspector测试部署效果。Serverless Devs简化了开发流程,提升了MCP Server的构建效率。
998 119
阿里云 MCP Server 开箱即用!
本文介绍了如何通过alibaba-cloud-ops-mcp-server和MCP(Model Context Protocol)实现AI助手对阿里云资源的复杂任务操作。内容涵盖背景、准备步骤(如使用VS Code与Cline配置MCP Server)、示例场景(包括创建实例、监控实例、运行命令、启停实例等),以及支持的工具列表和参考文档。借助这些工具,用户可通过自然语言与AI助手交互,完成ECS实例管理、VPC查询、云监控数据获取等运维任务,实现高效“掌上运维”。
MCP云托管最优解,揭秘国内最大MCP中文社区背后的运行时
本文介绍了魔搭(ModelScope)推出的全新MCP广场,将提供1500多种MCP服务。文章探讨了云上托管MCP服务的挑战,如多租户隔离、快速生成SSE地址及稳定性要求。为解决这些问题,魔搭选择阿里云函数计算作为运行时托管平台,因其具备事件触发、毫秒级弹性、会话亲和性、自动鉴权及多语言支持等优势。函数计算还针对MCP特性优化,如支持STDIO模式自动转换为SSE服务、发布Debian12运行时等。文章总结了Serverless在MCP托管领域的技术领先性,并展望未来更多AI应用功能的发布。
MCP Server 开发实战 | 大模型无缝对接 Grafana
以 AI 世界的“USB-C”标准接口——MCP(Model Context Protocol)为例,演示如何通过 MCP Server 实现大模型与阿里云 Grafana 服务的无缝对接,让智能交互更加高效、直观。
1302 115
借助 serverless 将 MCP 服务部署到云端
本文介绍了如何将 MCP 服务通过 SSE 协议部署到云端,避免本地下载和启动的麻烦。首先,使用 Python 实现了一个基于 FastMCP 的网络搜索工具,并通过设置 `transport='sse'` 启用 SSE 协议。接着,编写客户端代码测试服务功能,确保其正常运行。随后,利用阿里云函数计算服务(FC 3.0)以 Serverless 方式部署该服务,包括创建函数、配置环境变量、添加依赖层以及部署代码。最后,提供了客户端测试方法和日志排查技巧,并展示了如何在不同工具(如 Cherry-Studio、Cline 和 Cursor)中配置云端 MCP 服务。
831 11
借助 serverless 将 MCP 服务部署到云端
开源 Remote MCP Server 一站式托管来啦!
MCP Server 的实施存在着诸多挑战,特别是在认证授权、服务可靠性和可观测性方面,Higress 作为 AI 原生的 API 网关,提供了完整的开源 MCP Server 托管解决方案,实现存量 API 到 MCP 的协议转换。即将上线的 MCP 市场,将大幅降低开发者构建 MCP Server 的时间和人力成本。
1412 107
开源 Remote MCP Server 一站式托管来啦!
【MCP教程系列】如何自己打包MCP服务并部署到阿里云百炼上
本文章以阿里云百炼的工作流为例,介绍如何将其封装为MCP服务并部署到平台。主要步骤包括:1)使用Node.js和TypeScript搭建MCP服务;2)将项目打包并发布至npm官方平台;3)在阿里云百炼平台创建自定义MCP服务;4)将服务添加到智能体中进行测试。通过这些步骤,您可以轻松实现工作流的MCP化,并在智能体中调用自定义服务。
2184 106
【MCP教程系列】如何自己打包MCP服务并部署到阿里云百炼上
一键部署 Dify + MCP Server,高效开发 AI 智能体应用
本文将着重介绍如何通过 SAE 快速搭建 Dify AI 研发平台,依托 Serverless 架构提供全托管、免运维的解决方案,高效开发 AI 智能体应用。
4759 65
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等

登录插画

登录以查看您的控制台资源

管理云资源
状态一览
快捷访问