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,所以:
- 可以直接使用
.ts檔案,不需要編譯步驟 - 慣例上會將原始碼放在
src/目錄下,這是 TypeScript 專案的常見結構
而 2601-mcp-test-01 使用 Node.js,需要使用 .mjs(ES Module JavaScript)檔案,通常直接放在根目錄。
2. 鎖定檔差異
- Bun 使用
bun.lock - npm/Node.js 使用
package-lock.json
這兩種鎖定檔的功能相同,都是用來確保相依套件版本的一致性,只是格式不同。
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) |