/ 目錄 / 演練場 / MCP-Nest
● 社群 rekog-labs ⚡ 即開即用

MCP-Nest

作者 rekog-labs · rekog-labs/MCP-Nest

NestJS 模組,將你現有的服務轉變為 MCP 伺服器——你已經在使用的 DI、守衛與驗證,現在也能暴露給 AI 使用。

MCP-Nest 是一個 NestJS 模組(非獨立 MCP),可為任何 Nest 應用程式新增 MCP 功能。透過裝飾器暴露工具、資源與提示;支援 stdio/HTTP+SSE/Streamable HTTP 傳輸;整合 NestJS 守衛進行身份驗證。當你的後端已是 Nest 並希望讓 AI 代理呼叫時,是最理想的選擇。

為什麼要用

核心特性

即時演示

實際使用效果

nest.replay ▶ 就緒
0/0

安裝

選擇你的客戶端

~/Library/Application Support/Claude/claude_desktop_config.json  · Windows: %APPDATA%\Claude\claude_desktop_config.json
{
  "mcpServers": {
    "nest": {
      "command": "npx",
      "args": [
        "-y",
        "MCP-Nest"
      ],
      "_inferred": true
    }
  }
}

開啟 Claude Desktop → Settings → Developer → Edit Config。儲存後重啟應用。

~/.cursor/mcp.json · .cursor/mcp.json
{
  "mcpServers": {
    "nest": {
      "command": "npx",
      "args": [
        "-y",
        "MCP-Nest"
      ],
      "_inferred": true
    }
  }
}

Cursor 使用與 Claude Desktop 相同的 mcpServers 格式。專案級設定優先於全域。

VS Code → Cline → MCP Servers → Edit
{
  "mcpServers": {
    "nest": {
      "command": "npx",
      "args": [
        "-y",
        "MCP-Nest"
      ],
      "_inferred": true
    }
  }
}

點擊 Cline 側欄中的 MCP Servers 圖示,然後選 "Edit Configuration"。

~/.codeium/windsurf/mcp_config.json
{
  "mcpServers": {
    "nest": {
      "command": "npx",
      "args": [
        "-y",
        "MCP-Nest"
      ],
      "_inferred": true
    }
  }
}

格式與 Claude Desktop 相同。重啟 Windsurf 生效。

~/.continue/config.json
{
  "mcpServers": [
    {
      "name": "nest",
      "command": "npx",
      "args": [
        "-y",
        "MCP-Nest"
      ]
    }
  ]
}

Continue 使用伺服器物件陣列,而非映射。

~/.config/zed/settings.json
{
  "context_servers": {
    "nest": {
      "command": {
        "path": "npx",
        "args": [
          "-y",
          "MCP-Nest"
        ]
      }
    }
  }
}

加入 context_servers。Zed 儲存後熱重載。

claude mcp add nest -- npx -y MCP-Nest

一行命令搞定。用 claude mcp list 驗證,claude mcp remove 移除。

使用場景

實戰用法: MCP-Nest

將現有的 NestJS 後端暴露為 MCP

👤 需要讓 AI 代理呼叫內部 API 的 NestJS 團隊 ⏱ ~45 min intermediate

何時使用: 你不想用 Python 或 TS MCP SDK 重寫服務邏輯——直接複用已經測試過的程式碼。

前置條件
  • NestJS 10+ 應用程式 — 你現有的專案
  • 安裝 @rekog/mcp-nest — npm i @rekog/mcp-nest
步驟
  1. 註冊模組
    在 app.module.ts 中加入 McpModule.forRoot({name: 'acme', version: '1.0'})。✓ 已複製
    → 應用程式正常啟動;/mcp 端點存在
  2. 將服務方法裝飾為工具
    在 TicketsService 中,用 @Tool({name:'search_tickets', description:'...'}) 和 Zod schema 裝飾 searchTickets,現有的身份驗證守衛仍然生效。✓ 已複製
    → 工具出現在 Claude 的工具列表中
  3. 接入身份驗證
    在 MCP controller 上套用現有的 JwtAuthGuard,讓 AI 代理必須提供有效的 bearer token。✓ 已複製
    → 未授權的呼叫回傳 401

結果: AI 代理使用你真實的後端——相同的驗證、相同的身份驗證,無需重複服務邏輯。

注意事項
  • 混用使用者範圍與服務範圍的工具會造成身份驗證混亂 — 拆分為兩個 MCP 模組:一個使用使用者 JWT,另一個使用服務 token

建立可在呼叫途中向使用者索取輸入的互動工具

👤 正在建構進階 AI 代理流程的 Nest 開發者 ⏱ ~30 min advanced

何時使用: 你的工具需要確認步驟,或需要 AI 代理預設不應擁有的機密資訊。

步驟
  1. 在工具內使用 elicitation API
    在 delete_account 工具中,刪除前先向使用者(真實的人,而非 AI 代理)取得有型別的確認輸入。✓ 已複製
    → AI 代理在對話中提示使用者;僅在確認後繼續執行

結果: 即使透過 AI 代理執行,不可逆的操作也需要人工確認才能進行。

將 Nest 動態資料作為 MCP 資源提供

👤 希望 AI 代理讀取最新資料而非過時快照的團隊 ⏱ ~35 min advanced

何時使用: AI 代理需要以即時狀態(建置、部署、工單佇列)作為上下文,而非透過工具呼叫取得。

步驟
  1. 宣告資源範本
    建立一個 @Resource('ticket://{id}'),根據 id 回傳對應的工單 JSON。✓ 已複製
    → AI 代理可引用 ticket://123 並取得即時內容
  2. 訂閱更新
    當工單變更時發送更新,讓訂閱者無需輪詢即可看到最新狀態✓ 已複製
    → MCP 推送通知至已訂閱的客戶端

結果: 即時上下文取代快照——AI 代理看到的與使用者看到的一致。

組合

與其他 MCP 搭配,撬動十倍槓桿

nest + golf

Python 團隊與 TypeScript 團隊都以相同的框架優先方式建構 MCP

將我們 Python Golf MCP 的功能移植到 Nest 團隊的 MCP-Nest 伺服器——比較兩者的開發體驗。✓ 已複製
nest + mcptools

在部署前於 CI 中驗證工具 schema

在 CI 中啟動 Nest MCP,執行 mcp tools 以驗證預期的工具列表。✓ 已複製

工具

此 MCP 暴露的能力

工具輸入參數何時呼叫成本
@Tool({...}) decorator method args validated via Zod schema 將任何 Nest 服務方法標記為 MCP 工具 standard Nest method cost
@Resource({...}) decorator URI template params 暴露動態或靜態資源 standard Nest cost
@Prompt({...}) decorator prompt vars 將提示以版本化程式碼的形式發布 0

成本與限制

運行它的成本

API 配額
取決於你的服務
每次呼叫 Token 數
取決於工具輸出內容
費用
免費,MIT 授權
提示
為回傳列表的工具加上回應大小限制——無上限的工單列表很快就會超出 token 預算

安全

權限、密鑰、影響範圍

憑證儲存: 使用標準 Nest 設定;搭配 @nestjs/config 與密鑰管理服務
資料出站: 取決於你的 Nest 服務的資料流向

故障排查

常見錯誤與修復

Tool not appearing in Claude

確認該類別已在模組的 provider 中註冊,且裝飾器是從 @rekog/mcp-nest 匯入,而非舊版的複本

驗證: curl http://localhost:3000/mcp tools/list
Zod validation errors at runtime

你的 schema 與 AI 代理實際傳送的輸入不符——優化描述,讓模型填入正確的欄位

SSE connection drops every 30s

上游代理逾時;將 nginx 的 keepalive 設定為 60 秒以上,或改用 Streamable HTTP 傳輸

替代方案

MCP-Nest 對比其他方案

替代方案何時用它替代權衡
TS MCP SDK (official)你不使用 NestJS 且想直接使用原始 SDK無 DI、無守衛,所有內容都需要自行串接
GolfPython 後端不同語言;但有相似的框架設計理念
FastMCPPython 環境且需求比 Golf 更簡單企業級工具支援較少

更多

資源

📖 閱讀 GitHub 上的官方 README

🐙 查看未解決的 issue

🔍 瀏覽全部 400+ MCP 伺服器和 Skills