iT邦幫忙

2025 iThome 鐵人賽

DAY 23
0
自我挑戰組

攔截記憶碼:每日一小時記錄技術學習系列 第 23

Day 22 - zen-mcp-server:為 Claude Code 打造的輕量 MCP 伺服器框架

  • 分享至 

  • xImage
  •  

攔截源頭

  • 發現管道:社群
  • 攔截原因:最近我在試做自己的 MCP Provider,想讓 Claude Code 能連接到我專案內部 API(像是資料庫、文件索引、筆記服務)。
    官方的 mcp-proxy 雖然能用,但太原始了。看到 Beehive Innovations 推出的 zen-mcp-server,主打「快速構建、簡單擴展」,立刻決定攔截來玩一小時。

技術初探

  • 官方定義:zen-mcp-server is a lightweight, extensible framework for building MCP (Model Context Protocol) servers in Node.js.
    It simplifies the process of exposing tools, resources, and prompts to MCP clients like Claude Code.

  • 核心賣點:

    • 極速上手:只需幾行程式就能建立一個 MCP Server。
    • 模組化架構:支援動態註冊 Tools / Resources / Prompts。
    • 支援 Claude Code、Gemini CLI 等 MCP 客戶端。
    • TypeScript First:提供完整型別支援,開發體驗順暢。
    • 自訂認證與路由:可以整合自己的 API、資料庫、LLM、Plugin 等。
  • 適用場景:

    • 想為 Claude Code 寫自家專用 MCP Provider。
    • 想把公司內部 API 暴露成安全的工具集。
    • 想建立多工具 MCP Hub 給開發者或團隊使用。

實戰使用

安裝與初始化

npm install zen-mcp-server

建立一個 server.js:

import { ZenServer, tool } from "zen-mcp-server";

const server = new ZenServer({
  name: "my-mcp",
  version: "0.1.0",
});

// 定義一個簡單的 tool
server.addTool(
  tool("greet", {
    description: "打招呼工具",
    parameters: { name: "string" },
    execute: async ({ name }) => {
      return `嗨,${name}!歡迎使用 Zen MCP Server 🙌`;
    },
  })
);

server.listen();

執行伺服器:

node server.js

Claude Code 偵測到後,就可以用 /greet 指令呼叫這個 MCP Tool

增加 Resource Provider

zen-mcp-server 不只支援 Tool,還能提供「資源」(Resources),像文件、API 資料庫、系統狀態:

server.addResource({
  name: "system-status",
  description: "提供目前伺服器狀態",
  fetch: async () => ({
    uptime: process.uptime(),
    memory: process.memoryUsage(),
  }),
});

Claude Code 可以直接查詢這個資源,類似:

“/get system-status”

增加 Prompt Library

如果你想讓 Claude Code 有自己的 Prompt 模板,也可以直接注入:

server.addPrompt({
  name: "summarize-doc",
  description: "幫我摘要這份文件",
  template: "請閱讀以下內容並摘要:\n\n{{text}}",
});

整合外部 API

舉個例子,讓 Claude 能透過 MCP 取得即時天氣資訊:

server.addTool(
  tool("weather", {
    description: "查詢城市天氣",
    parameters: { city: "string" },
    execute: async ({ city }) => {
      const res = await fetch(`https://wttr.in/${city}?format=3`);
      return await res.text();
    },
  })
);

Claude Code 啟動後直接輸入:

“/weather Taipei”
它就會回傳「Taipei: 🌦️ +29°C」。

記憶碼摘要

技術:zen-mcp-server  
分類:MCP 伺服器框架 / Claude 擴展開發  
難度:⭐⭐⭐☆☆(1–5 顆星)  
實用度:⭐⭐⭐⭐⭐(1–5 顆星)  
一句話:用最 Zen 的方式快速打造 Claude Code 專屬 MCP Provider。  
適用情境:想讓 Claude 能直接調用你的 API、工具或資料庫。

結語

zen-mcp-server 讓我重新理解 MCP 的核心價值 —— 讓 AI 能安全、模組化地存取外部世界。
它讓「幫 Claude 寫工具」變得不再需要搞半天 CLI 或設定 Protocol,只要幾行程式就能讓你的 API 成為 Claude 的新能力。


上一篇
Day 21 - crewAI — 打造多 Agent 協作的任務指揮系統
系列文
攔截記憶碼:每日一小時記錄技術學習23
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言