項目的目錄結構如下:

.
├── 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:

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);
});

這個 Server 包含一個名字為 hello_world 的工具,它只會返回一個字符串 'hello world!',且不需要任何輸入參數。你可以參考當前代碼的實現自行修改工具,且 CLI 已經幫你配置好了 package.json,你可以按照你開發任意 Node.js 項目的方式來開發這個 Server。

部署 MCP Server 到 Function AI

完成 Server 的開發后,你可以通過 Serverless Devs CLI 工具一鍵將你的 MCP Server 部署到Function AI。Serverless Devs 是通過 s.yaml 部署代碼的,其需要包含所有部署需要的信息,包括實例規格、代碼目錄、觸發器配置等等,而 CLI 已經幫你寫好了,因此你不需要在意這些。

在部署之前,還需要對代碼進行打包。在這里我們使用 webpack 進行打包,配置已經幫你寫好了,因此你只需在 code 目錄下執行以下指令:

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

npm install # 如果你之前沒有執行
npm run build

若?code?目錄下出現了?dist?文件夾并包含以下文件,則說明構建成功:

此時,你已經準備好將這個 Server 部署到Function AI了!回到項目根目錄,執行以下指令:

s deploy -y

若看到以下信息,則說明部署成功。部署成功后,Serverless Devs 會打印部署成功的函數的配置信息:

? [nodejs-stdio-hello-world] completed (37.35s)
?? Result for [deploy] of [start-mcp-server-nodejs]
====================
serviceName: xxxxx
......配置信息

其中,projectName 和 serviceName 是部署好的項目和服務的名稱,你可以登錄阿里云Function AI控制臺[3]查看。你還可以在配置信息中找到 internetUrl 字段,這個就是你的 MCP Server 的 URL,可以用于測試和集成到你自己的系統。

測試 MCP Server

你可以本地啟動一個官方 inspector[4]測試部署好的 MCP,只需執行:

npx @modelcontextprotocol/inspector node build/index.js

或者,你也可以啟動一個我們基于官方項目修改的,內置好了 LLM 的 inspector:

npx @serverless-devs/inspector node build/index.js

Transport Type?選擇?SSE,復制之前部署獲取到的?internetUrl?,在尾部添加?/sse,然后粘貼到?URL?輸入框。點擊?Connect,再切到?Tools,點擊?List Tools,即可看到部署好的 Server 的工具信息,并能進行調試。

若你使用的是我們的包含大模型的 inspector,還可以切到 LLM,選擇大模型,填入你的 API Key,測試大模型使用你的工具的效果:

需要先點擊 List Tools,否則大模型無法使用工具

三種方式接入客戶端

方式一:官方 Client

所有部署到函數計算 FC 的 MCP Server 都遵循 SSE 協議。對于已經支持 SSE 的官方 Client (例如Cursor),接入配置如下:

{
"mcpServers": {
"server-name": {
"url": "<部署好的internetUrl>/sse",
"env": { // 如果有的話
"key": "value"
}
}
}
}

對于暫未支持 SSE 的 Client,可以參考一些開源社區代理解決方案,例如:

方式二:其他本地 Client

對于非官方的 Client,接入 MCP Server 需要使用官方的提供的 sdk 進行連接。具體開發方式可參考官方文檔[7]。一個示例 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("<部署好的internetUrl>/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]。

文章轉載自:從零開始開發 MCP Server

上一篇:

豆包才是最佳背調話術生成助手?三大模型PK結果對比

下一篇:

基于 MCP 實現 AI 應用架構設計新范式的落地實踐
#你可能也喜歡這些API文章!

我們有何不同?

API服務商零注冊

多API并行試用

數據驅動選型,提升決策效率

查看全部API→
??

熱門場景實測,選對API

#AI文本生成大模型API

對比大模型API的內容創意新穎性、情感共鳴力、商業轉化潛力

25個渠道
一鍵對比試用API 限時免費

#AI深度推理大模型API

對比大模型API的邏輯推理準確性、分析深度、可視化建議合理性

10個渠道
一鍵對比試用API 限時免費