/ 目录 / 演练场 / MCP-Nest
● 社区 rekog-labs ⚡ 即开即用

MCP-Nest

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

一个 NestJS 模块,让你现有的服务变成 MCP 服务器 —— DI、守卫和验证都能复用,直接暴露给 AI。

MCP-Nest 是一个 NestJS 模块(不是独立的 MCP),为任何 Nest 应用添加 MCP 能力。通过装饰器暴露工具、资源和 prompt;支持 stdio、HTTP+SSE、Streamable HTTP 传输;集成 NestJS 守卫进行认证。当你的后端已经是 Nest 且希望 agent 能调用它时,这很理想。

为什么要用

核心特性

实时演示

实际使用效果

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

👤 需要 agent 调用内部 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 endpoint 出现
  2. 将服务方法装饰为工具
    在 TicketsService 中,用 @Tool({name:'search_tickets', description:'...'}) 和 Zod schema 装饰 searchTickets。现有的认证守卫仍然适用。✓ 已复制
    → 工具出现在 Claude 的工具列表中
  3. 接入认证
    在 MCP controller 上应用现有的 JwtAuthGuard,使得 agent 需要有效的 bearer token。✓ 已复制
    → 未认证的调用返回 401

结果: 你的 agent 调用真实后端 —— 相同的验证、相同的认证、无需服务重复。

注意事项
  • 混合用户级和服务级工具会导致认证混乱 — 分成两个 MCP 模块:一个用用户 JWT,一个用服务 token

构建交互式工具,在调用过程中向用户请求输入

👤 构建高级 agent 流程的 Nest 开发者 ⏱ ~30 min advanced

何时使用: 你的工具需要确认或是 agent 不应该默认拥有的秘密。

步骤
  1. 在工具内使用询问 API
    在 delete_account 工具中,删除前从用户(真实的人,不是 agent)那里获取确认。✓ 已复制
    → Agent 在聊天中提示用户;仅在确认时继续

结果: 不可逆的操作被关在人工输入之后,即使通过 agent 也是如此。

将动态 Nest 数据作为 MCP 资源提供

👤 希望 agent 读取实时数据而不是过时快照的团队 ⏱ ~35 min advanced

何时使用: Agent 需要看到实时状态(构建、部署、工单队列)作为上下文,而不是通过工具调用。

步骤
  1. 声明资源模板
    创建一个 @Resource('ticket://{id}'),按 id 返回工单 JSON。✓ 已复制
    → Agent 可以引用 ticket://123 并获得实时内容
  2. 订阅更新
    当工单变化时发出更新,使订阅者看到新鲜状态而无需轮询✓ 已复制
    → 向订阅的客户端发送 MCP 推送通知

结果: 实时上下文而不是快照 —— agent 看到用户看到的内容。

组合

与其他 MCP 搭配,撬动十倍杠杆

nest + golf

Python 团队和 TS 团队都用同样的框架优先方式构建 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 将 prompt 作为版本化代码发布 0

成本与限制

运行它的成本

API 配额
取决于你的服务
每次调用 Token 数
取决于工具输出
费用
免费,MIT 许可证
提示
在返回列表的工具上添加响应大小限制 —— 无限制的工单列表会快速耗尽 token 预算

安全

权限、密钥、影响范围

凭据存储: 标准 Nest 配置;使用 @nestjs/config + 密钥管理器
数据出站: 随着你的 Nest 服务

故障排查

常见错误与修复

工具未出现在 Claude 中

确保类已在模块 provider 中注册,装饰器导入来自 @rekog/mcp-nest 而不是过时的副本

验证: curl http://localhost:3000/mcp tools/list
运行时 Zod 验证错误

你的 schema 与 agent 发送的实际输入不匹配 —— 严格描述,使模型填充正确的字段

SSE 连接每 30 秒断开

上游代理超时;在 nginx 中设置 keepalive 为 60s+ 或改用 Streamable HTTP 传输

替代方案

MCP-Nest 对比其他方案

替代方案何时用它替代权衡
TS MCP SDK (官方)你不使用 NestJS 且想要原始 SDK无 DI、无守卫,你需要自己连接一切
GolfPython 后端不同语言;类似的框架野心
FastMCPPython,比 Golf 更简单企业工具较少

更多

资源

📖 阅读 GitHub 上的官方 README

🐙 查看未解决的 issue

🔍 浏览全部 400+ MCP 服务器和 Skills