你是否想过,只需几行代码,就能让你现有的NestJS后端服务摇身一变,成为大语言模型(如Claude、GPT)的“超级工具箱”?MCP Nest项目正是为此而生。它不是一个独立的AI模型,而是一个基于 Model Context Protocol (MCP) 的桥梁,将你的业务逻辑封装成标准化的工具,供AI智能体直接调用。
简单来说,它让你能用熟悉的NestJS框架,快速开发出AI时代的“插件”或“API”,极大地扩展了模型的能力边界。
重要说明:在评估过程中,我发现社区中存在多个名称相似的项目。本测评主要针对核心的
@rekog/mcp-nest模块。此外,也存在专注于SSE传输的nest-mcp-sse,以及作为统一网关的Nest-LLM-Agent。下表对比了三者的主要区别:
| 特性维度 | @rekog/mcp-nest (本测评核心) |
nest-mcp-sse |
Nest-LLM-Agent |
|---|---|---|---|
| 核心定位 | 全面的MCP服务器集成模块 | 专注于SSE传输的轻量模块 | MCP服务的统一HTTP API网关 |
| 技术特点 | 支持多传输协议(SSE, HTTP, STDIO),深度依赖注入集成 | 仅支持SSE,轻量级,更接近原生SDK | 将多个MCP服务聚合,对外提供统一HTTP接口 |
| 适用场景 | 在NestJS应用中构建功能完整的MCP服务 | 快速开发仅需SSE通信的MCP工具 | 企业级集成,为前端或现有系统提供统一AI能力层 |
| 安装方式 | npm install @rekog/mcp-nest |
npm install nest-mcp-sse |
需配置私有NPM及配置文件 |
1. 模型概述:你的NestJS服务AI化核心引擎
1.1 能力评估
@rekog/mcp-nest 模块本身并非AI模型,而是一个协议适配器和能力暴露框架。它的核心能力是将你已有的NestJS服务、函数或API,转换成符合MCP标准协议的“工具”,供AI模型调用。
-
能完成的任务:
-
工具暴露:将任意函数(如查询数据库、调用外部API、处理文件)注册为AI可调用的工具。
-
上下文管理:创建和管理与AI对话相关的上下文会话,维持多轮对话的状态。
-
资源与提示词提供:除了工具,还能向AI提供只读资源(如文档)和预设的提示词模板。
-
-
接口与参数:该模块提供了一套完整的NestJS模块接口(
McpModule),包含forRoot、registerTool、createContext等方法。它通过装饰器和依赖注入与你的业务代码结合,本身没有固定数量的“参数”,其能力取决于你注册了多少个工具和资源。
1.2 技术特点介绍
-
原生NestJS集成:采用标准的NestJS模块模式,完美支持依赖注入,可以轻松将现有Service转化为MCP工具。
-
多传输协议支持:支持 SSE (Server-Sent Events)、Streamable HTTP 和 STDIO 三种协议,让你能灵活对接不同的MCP客户端(如IDE插件或桌面应用)。
-
企业级特性:内置安全考量,支持通过标准的NestJS Guards进行端点认证和授权,并提供了速率限制和进度报告等高级功能。
1.3 应用场景
-
企业内部AI助手:将公司的CRM、ERP系统接口封装成MCP工具,员工可以通过自然语言(如“帮我找出上个月消费最高的十个客户”)操作复杂系统。
-
增强开发工具:为Cursor、Claude Desktop等支持MCP的IDE或应用编写自定义工具,例如一键生成特定框架的代码、连接内部部署平台等。
-
快速AI应用原型开发:前端开发者可以基于此快速构建一个拥有后端复杂逻辑的AI聊天应用原型,而无需深入学习AI模型调用细节。
2. 安装与部署方式
在开始前,请确保你的系统已安装 Node.js (v18或更高版本) 和 npm (v8或更高版本) 。版本过低可能导致安装或运行失败。
Windows 系统
-
安装Node.js:
-
访问 Node.js官网 下载最新LTS版本的安装包并运行。或使用
nvm-windows管理多个版本:# 在PowerShell中安装nvm-windows后,执行 nvm install 22.14.0 nvm use 22.14.0
-
-
验证安装:打开命令提示符或PowerShell,执行以下命令,确认版本符合要求。
node -v npm -v npx -v
-
创建并配置NestJS项目:
# 1. 安装NestJS CLI npm i -g @nestjs/cli # 2. 创建新项目 nest new my-mcp-server cd my-mcp-server # 3. 安装MCP Nest核心模块 npm install @rekog/mcp-nest @modelcontextprotocol/sdk
macOS 系统
-
使用Homebrew安装Node.js(推荐):
# 1. 更新Homebrew并安装Node brew update brew install node # 2. 验证安装 echo "Node.js版本: $(node -v)" echo "npm版本: $(npm -v)"
如果遇到权限或路径问题,可能需要将Node路径添加到shell配置文件中(如
~/.zshrc)。 -
后续步骤:与Windows系统的第3步相同,使用
nest new创建项目并安装依赖。
Linux 系统 (以Ubuntu为例)
-
使用NodeSource仓库安装:
# 1. 安装curl并添加NodeSource仓库 sudo apt update sudo apt install curl curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash - # 2. 安装Node.js sudo apt-get install -y nodejs # 3. 验证安装 node -v npm -v
-
后续步骤:与Windows系统的第3步相同。
安装中常见问题与修复
-
npx命令未找到:这表示Node.js未正确安装或环境变量未配置。请重新安装Node.js,并确保安装时勾选了“Add to PATH”选项(Windows)或按照提示配置shell环境变量。 -
网络超时或包下载失败:可以尝试配置国内镜像源加速。
# 配置npm淘宝镜像 npm config set registry https://registry.npmmirror.com # 然后重试安装命令
-
公司网络安全软件拦截:某些安全软件可能会拦截Node.js进程。根据安全软件的提示,对Node.js、npm相关进程进行授权或加白操作。
3. 配套客户端
MCP协议采用客户端-服务器架构。@rekog/mcp-nest 构建的是服务器(Server),它需要被一个客户端(Client) 连接,而客户端则运行在主机(Host) 应用程序中。
-
主流MCP客户端与主机:
-
Cursor IDE:目前最流行的支持MCP的代码编辑器之一。
-
Claude Desktop:Anthropic官方桌面应用,原生支持MCP。
-
智谱清言、通义灵码等:国内一些AI编码助手也开始集成MCP客户端。
-
-
配置方式:客户端配置通常涉及在其设置文件(如Cursor的
mcp.json)中添加你的服务器配置,指定服务器启动命令(使用stdio协议)或连接URL(使用sse协议)。 -
是否付费:上述客户端/主机应用程序本身有免费版本,部分高级功能可能需要付费订阅。
@rekog/mcp-nest作为开源库完全免费。
4. 案例讲解:构建一个“待办事项”AI助手
我们来模拟一个实际场景:开发一个MCP服务器,让AI模型能够帮你管理一个简单的待办事项列表。
第一步:创建工具服务
在NestJS项目中创建 src/todos/todo.service.ts:
// src/todos/todo.service.ts import { Injectable } from '@nestjs/common'; interface TodoItem { id: string; task: string; completed: boolean; } @Injectable() export class TodoService { private todos: Map<string, TodoItem> = new Map(); private idCounter = 1; // 1. 添加待办事项 addTodo(task: string): TodoItem { const id = `todo_${this.idCounter++}`; const newTodo: TodoItem = { id, task, completed: false }; this.todos.set(id, newTodo); return newTodo; } // 2. 列出所有待办事项 listTodos(showCompleted?: boolean): TodoItem[] { let items = Array.from(this.todos.values()); if (showCompleted === false) { items = items.filter(item => !item.completed); } return items; } // 3. 标记为完成 completeTodo(id: string): TodoItem | null { const todo = this.todos.get(id); if (todo) { todo.completed = true; return todo; } return null; } }
第二步:将服务注册为MCP工具
创建 src/todos/todo.tool.ts,利用@rekog/mcp-nest将Service方法暴露给AI:
// src/todos/todo.tool.ts import { Injectable, OnModuleInit } from '@nestjs/common'; import { McpServerService } from '@rekog/mcp-nest'; // 假设模块导出此服务 import { TodoService } from './todo.service'; import { z } from 'zod'; // 用于定义输入模式,需安装:npm install zod @Injectable() export class TodoTool implements OnModuleInit { constructor( private readonly mcpServer: McpServerService, // 注入MCP服务 private readonly todoService: TodoService, // 注入业务服务 ) {} onModuleInit() { // 注册“添加待办”工具 this.mcpServer.registerTool('add_todo', { inputSchema: { task: z.string().describe('待办事项的具体内容') }, description: '添加一个新的待办事项' }, async ({ task }) => { const newTodo = this.todoService.addTodo(task); return { content: [{ type: 'text', text: `✅ 已添加待办事项:“${newTodo.task}” (ID: ${newTodo.id})` }] }; }); // 注册“列出待办”工具 this.mcpServer.registerTool('list_todos', { inputSchema: { showCompleted: z.boolean().optional().describe('是否显示已完成事项,默认为true') }, description: '列出所有的待办事项' }, async ({ showCompleted = true }) => { const todos = this.todoService.listTodos(showCompleted); if (todos.length === 0) { return { content: [{ type: 'text', text: '📝 当前没有待办事项。' }] }; } const listText = todos.map(t => `${t.completed ? '✅' : '⭕'} ${t.id}: ${t.task}` ).join('\n'); return { content: [{ type: 'text', text: `📋 待办事项列表:\n${listText}` }] }; }); // 注册“完成待办”工具 this.mcpServer.registerTool('complete_todo', { inputSchema: { id: z.string().describe('要标记为完成的待办事项ID') }, description: '将一个待办事项标记为已完成' }, async ({ id }) => { const updated = this.todoService.completeTodo(id); if (updated) { return { content: [{ type: 'text', text: `🎉 已完成:“${updated.task}”` }] }; } else { return { content: [{ type: 'text', text: `❌ 未找到ID为“${id}”的待办事项` }] }; } }); } }
第三步:在应用模块中整合
修改 src/app.module.ts:
// src/app.module.ts import { Module } from '@nestjs/common'; import { McpModule } from '@rekog/mcp-nest'; // 导入MCP模块 import { TodoService } from './todos/todo.service'; import { TodoTool } from './todos/todo.tool'; @Module({ imports: [ McpModule.forRoot({ name: 'todo-mcp-server', // 你的服务器名称 version: '1.0.0', transport: 'stdio', // 使用标准输入输出,便于IDE连接 }), ], providers: [TodoService, TodoTool], // 注册服务和工具 }) export class AppModule {}
第四步:运行与测试
-
启动服务器:
npm run start你的NestJS应用现在同时也是一个MCP服务器,等待客户端连接。
-
配置客户端连接:
-
以Cursor IDE为例,在其设置(Settings -> MCP)中,添加一个新的服务器配置(
mcp.json):{ “mcpServers”: { “todo-server”: { “command”: “node”, “args”: [“dist/main.js”], // 指向你编译后的入口文件 “env”: { “NODE_ENV”: “production” } } } }
-
-
在AI对话中调用:
-
重启Cursor,在聊天框中输入:“帮我把‘写项目测评报告’添加到待办列表”。
-
Cursor内置的AI模型会识别出你的意图,自动调用
add_todo工具,并返回添加成功的确认信息。你可以继续对话:“给我看看所有没做完的事”,AI会调用list_todos工具并展示结果。
-
5. 使用成本与商业价值
-
使用成本:
-
直接成本:零。
@rekog/mcp-nest及其依赖均为开源软件。 -
学习与开发成本:中等。开发者需要理解MCP协议基本概念和NestJS框架。但项目提供了清晰的API和NestJS原生集成,显著降低了为现有服务添加AI能力的门槛。
-
部署成本:与你现有的NestJS应用部署成本一致,无需额外资源。
-
-
商业价值:
-
赋能现有系统:最大价值在于“AI化”存量业务系统。无需重写架构,就能让企业内部的软件具备自然语言交互能力,提升效率。
-
统一能力出口:通过标准化协议,将散落的各种后端能力统一管理,成为企业内部的“AI工具平台”,方便管理和复用。
-
加速产品创新:极大缩短了为产品增加AI特性的开发周期,使团队能快速验证AI功能原型,抓住市场机会。
-
总结:@rekog/mcp-nest是一个设计精良、与NestJS生态深度契合的“赋能型”开源项目。它技术选型成熟,降低了开发者进入AI应用领域的门槛,特别适合拥有NestJS技术栈、希望快速探索或落地AI能力的团队和个人。虽然你需要搭配特定的客户端使用,但其带来的“将任何后端函数瞬间转化为AI工具”的能力,无疑具有强大的吸引力和广阔的想象空间。

关注 “悠AI” 更多干货技巧行业动态
