MCP Nest深度测评:让AI能力无缝融入你的NestJS应用

MCP专区5小时前发布 小悠
1 0 0

你是否想过,只需几行代码,就能让你现有的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),包含forRootregisterToolcreateContext等方法。它通过装饰器和依赖注入与你的业务代码结合,本身没有固定数量的“参数”,其能力取决于你注册了多少个工具和资源。

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 系统

  1. 安装Node.js

    • 访问 Node.js官网 下载最新LTS版本的安装包并运行。或使用nvm-windows管理多个版本:

      powershell
      # 在PowerShell中安装nvm-windows后,执行
      nvm install 22.14.0
      nvm use 22.14.0
  2. 验证安装:打开命令提示符或PowerShell,执行以下命令,确认版本符合要求。

    cmd
    node -v
    npm -v
    npx -v
  3. 创建并配置NestJS项目

    bash
    # 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 系统

  1. 使用Homebrew安装Node.js(推荐):

    bash
    # 1. 更新Homebrew并安装Node
    brew update
    brew install node
    
    # 2. 验证安装
    echo "Node.js版本: $(node -v)"
    echo "npm版本: $(npm -v)"

    如果遇到权限或路径问题,可能需要将Node路径添加到shell配置文件中(如 ~/.zshrc)。

  2. 后续步骤:与Windows系统的第3步相同,使用nest new创建项目并安装依赖。

Linux 系统 (以Ubuntu为例)

  1. 使用NodeSource仓库安装

    bash
    # 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
  2. 后续步骤:与Windows系统的第3步相同。

安装中常见问题与修复

  • npx命令未找到:这表示Node.js未正确安装或环境变量未配置。请重新安装Node.js,并确保安装时勾选了“Add to PATH”选项(Windows)或按照提示配置shell环境变量。

  • 网络超时或包下载失败:可以尝试配置国内镜像源加速。

    bash
    # 配置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

typescript
// 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:

typescript
// 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

typescript
// 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 {}

第四步:运行与测试

  1. 启动服务器

    bash
    npm run start

    你的NestJS应用现在同时也是一个MCP服务器,等待客户端连接。

  2. 配置客户端连接

    • Cursor IDE为例,在其设置(Settings -> MCP)中,添加一个新的服务器配置(mcp.json):

      json
      {
        “mcpServers”: {
          “todo-server”: {
            “command”: “node”,
            “args”: [“dist/main.js”], // 指向你编译后的入口文件
            “env”: { “NODE_ENV”: “production” }
          }
        }
      }
  3. 在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” 更多干货技巧行业动态

© 版权声明
广告也精彩

相关文章

暂无评论

您必须登录才能参与评论!
立即登录
暂无评论...