从零开始开发 MCP Server

打印 上一主题 下一主题

主题 1380|帖子 1380|积分 4140

作者:张星宇
在大型语言模子(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 项目:
  1. s init start-fcai-mcp-nodejs
复制代码
按照提示填入地域和配置好的 access,即可完成项目的初始化:

项目的目次结构如下:
  1. .
  2. ├── build.yaml                  # 构建配置
  3. ├── code                        # 项目代码目录
  4. │   ├── check_node_version.mjs  # 部署前检查脚本
  5. │   ├── package-lock.json      
  6. │   ├── package.json      
  7. │   ├── src
  8. │   │   └── index.ts            # 项目源码
  9. │   ├── tsconfig.json
  10. │   └── webpack.config.js
  11. ├── readme.md
  12. └── s.yaml                      # 部署 YAML
复制代码
开发 MCP Server

项目根目次下的code文件夹即是项目代码的目次,部署时只有这个文件夹里的内容会部署到 FunctionAI 上。打开src/index.ts文件,可以看到 CLI 已经帮你写好了一个简单的、可直接举行部署的Hello World MCP Server:
  1. import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
  2. import { z } from "zod";
  3. import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
  4. // Create a new server instance every time a new connection is made to ensure concurrency
  5. const createServer = () => {
  6.   // Create server instance
  7.   const server = new McpServer({
  8.     name: "my-mcp-server",
  9.     version: "1.0.0",
  10.   });
  11.   
  12.   // Implement your tools here
  13.   server.tool(
  14.     "hello_world",
  15.     "Return string 'hello world!'",
  16.     {
  17.       // Define input parameters using zod. example:
  18.       // prefix: z.string().describe('prefix').optional(),
  19.     },
  20.     async () => {
  21.       console.log("Hello World tool called");
  22.       return {
  23.         content: [{
  24.           type: "text",
  25.           text: 'hello world!',
  26.         }]
  27.       }
  28.     },
  29.   );
  30.   return server;
  31. }
  32. // Create a new server instance
  33. const server = createServer();
  34. // Create a new stdio transport instance
  35. const transport = new StdioServerTransport();
  36. // Start the server
  37. server.connect(transport).then(() => {
  38.   console.log("Server started");
  39. }).catch((err) => {
  40.   console.error("Error starting server:", err);
  41. });
复制代码
这个 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 或以上。
  1. npm install # 如果你之前没有执行
  2. npm run build
复制代码
若code目次下出现了dist文件夹并包含以下文件,则分析构建成功:

此时,你已经准备好将这个 Server 部署到 FunctionAI 了!回到项目根目次,执行以下指令:
  1. s deploy -y
复制代码
若看到以下信息,则分析部署成功。部署成功后,Serverless Devs 会打印部署成功的函数的配置信息:
[code]✔ [nodejs-stdio-hello-world] completed (37.35s)
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

小小小幸运

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表