Ian Chou's Blog

Node.js vs Bun:MCP 專案比較

Node.js vs Bun:MCP 專案比較

本文比較 2601-mcp-test-01(Node.js)與 2601-mcp-test-03(Bun)兩個 MCP 專案的差異。

差異比較表

項目 2601-mcp-test-01 2601-mcp-test-03
執行環境 Node.js Bun
主程式檔案 server.mjs(根目錄) src/index.ts
程式語言 JavaScript (.mjs) TypeScript (.ts)
鎖定檔 package-lock.json bun.lock
啟動指令 node ./server.mjs bun run src/index.ts
zod 版本 ^3.25.0 ^3.24.0
驗證腳本 有 verify script 有 verify script

為什麼會有這些差異?

1. src/index.ts vs server.mjs

2601-mcp-test-03 使用 Bun 作為執行環境。Bun 原生支援 TypeScript,所以:

2601-mcp-test-01 使用 Node.js,需要使用 .mjs(ES Module JavaScript)檔案,通常直接放在根目錄。

2. 鎖定檔差異

這兩種鎖定檔的功能相同,都是用來確保相依套件版本的一致性,只是格式不同。

3. 核心程式碼

兩個專案的核心 MCP 伺服器邏輯完全相同,都實作了一個 add 工具來加總兩個數字:

server.registerTool(
  "add",
  {
    title: "Add",
    description: "Add two numbers",
    inputSchema: { a: z.number(), b: z.number() },
    outputSchema: { result: z.number() }
  },
  async ({ a, b }) => {
    const output = { result: a + b };
    return {
      content: [{ type: "text", text: JSON.stringify(output) }],
      structuredContent: output
    };
  }
);

總結

這兩個專案功能相同,只是使用不同的 JavaScript 執行環境(Node.js vs Bun),因此在目錄結構和檔案格式上有所不同。

選擇建議

情境 推薦
需要最大相容性 Node.js(2601-mcp-test-01
追求更快啟動速度 Bun(2601-mcp-test-03
偏好 TypeScript 原生支援 Bun(2601-mcp-test-03