使用说明

项目简介

nestjs-mcp 是一个 NestJS 模块,旨在帮助开发者使用 NestJS 框架快速搭建 Model Context Protocol (MCP) 服务器。它利用 NestJS 的依赖注入和装饰器机制,简化了 MCP 资源的定义、工具的注册和 Prompt 模板的创建,使得开发者可以专注于业务逻辑的实现,而无需关注底层的 MCP 协议细节。

主要功能点

  • 基于装饰器: 使用 '@Resource', '@Tool', '@Prompt' 装饰器轻松定义和暴露 MCP 资源、工具和 Prompt。
  • 模块化配置: 通过 'MCPModule.register' 和 'MCPModule.registerAsync' 方法进行灵活的模块配置,支持同步和异步配置方式。
  • 传输协议支持: 内置支持 HTTP/SSE 和 stdio 传输协议,方便客户端连接。
  • NestJS 集成: 无缝集成 NestJS 生态,利用 NestJS 的强大功能构建健壮的 MCP 服务器。
  • 参数校验: 结合 Zod 库,支持对资源、工具和 Prompt 的参数进行类型定义和校验。

安装步骤

  1. 确保已安装 Node.js 和 npm 或 yarn。
  2. 在你的 NestJS 项目中,使用 npm 或 yarn 安装 'nestjs-mcp' 及其依赖:
    npm install nestjs-mcp @modelcontextprotocol/sdk zod
    yarn add nestjs-mcp @modelcontextprotocol/sdk zod

服务器配置

MCP 服务器需要配置服务器名称和版本等基本信息。以下是一个 MCP 客户端连接 MCP 服务器时可能需要的配置信息 JSON 示例。请注意,实际 MCP 客户端可能需要根据具体实现进行调整。

{
  "serverName": "ExampleMCPServer",
  "serverVersion": "1.0.0",
  "transport": "sse",
  "sseEndpoint": "http://localhost:3000/mcp/sse",
  "messagesEndpoint": "http://localhost:3000/mcp/messages"
}

配置参数说明:

  • 'serverName': MCP 服务器的名称,与 'MCPModule.register' 中配置的 'name' 一致。
  • 'serverVersion': MCP 服务器的版本,与 'MCPModule.register' 中配置的 'version' 一致。
  • 'transport': 使用的传输协议,这里示例为 'sse' (Server-Sent Events)。
  • 'sseEndpoint': SSE 连接的端点 URL,指向 MCP 服务器的 SSE 接口。
  • 'messagesEndpoint': 消息 POST 请求的端点 URL,指向 MCP 服务器的消息处理接口。

服务器启动命令 (command) 和参数 (args) 说明 (可选):

对于 NestJS 应用,服务器启动命令通常由 'npm start' 或 'node main.js' (编译后的 JavaScript 文件) 等方式启动,具体取决于你的 NestJS 项目配置。 MCP 客户端 通常不需要直接配置服务器的启动命令和参数,而是通过上述 'sseEndpoint' 或其他传输协议的端点与已运行的 MCP 服务器建立连接。

基本使用方法

  1. 注册 MCP 模块: 在你的 NestJS 模块 (例如 'AppModule') 中导入 'MCPModule' 并进行注册,配置服务器名称和版本等信息。

    import { Module } from '@nestjs/common';
    import { MCPModule } from 'nestjs-mcp';
    
    @Module({
      imports: [
        MCPModule.register({
          name: 'ExampleMCPServer',
          version: '1.0.0',
        }),
      ],
    })
    export class AppModule {}
  2. 创建 Resource, Tool, Prompt 服务: 创建 NestJS Service,并使用 '@Resource', '@Tool', '@Prompt' 装饰器标记方法,定义 MCP 的资源、工具和 Prompt。

    import { Injectable } from '@nestjs/common';
    import { Resource, Tool, Prompt } from 'nestjs-mcp';
    
    @Injectable()
    export class MyService {
      @Resource({ name: 'my-resource', description: '...', parameters: { id: 'string' } })
      async getResource(uri, params) { /* ... */ }
    
      @Tool({ name: 'my-tool', description: '...', parameters: { a: 'number', b: 'number' } })
      async executeTool(params) { /* ... */ }
    
      @Prompt({ name: 'my-prompt', description: '...', template: '...', parameters: { name: 'string' } })
      async preparePrompt(params) { /* ... */ }
    }
  3. 启动 NestJS 应用: 运行 NestJS 应用,MCP 服务器将随之启动。客户端可以通过配置的端点连接到 MCP 服务器并使用定义的资源、工具和 Prompt。

    npm run start

    yarn start

    默认情况下,SSE 端点为 '/mcp/sse',消息端点为 '/mcp/messages',可以通过 'MCPModule.register' 的 'sseEndpoint' 和 'messagesEndpoint' 选项进行自定义。

通过以上步骤,你就可以使用 'nestjs-mcp' 模块快速构建一个功能完善的 MCP 服务器。

信息

分类

开发者工具