使用说明
项目简介
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 的参数进行类型定义和校验。
安装步骤
- 确保已安装 Node.js 和 npm 或 yarn。
- 在你的 NestJS 项目中,使用 npm 或 yarn 安装 'nestjs-mcp' 及其依赖:
或npm install nestjs-mcp @modelcontextprotocol/sdk zodyarn 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 服务器建立连接。
基本使用方法
-
注册 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 {} -
创建 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) { /* ... */ } } -
启动 NestJS 应用: 运行 NestJS 应用,MCP 服务器将随之启动。客户端可以通过配置的端点连接到 MCP 服务器并使用定义的资源、工具和 Prompt。
npm run start或
yarn start默认情况下,SSE 端点为 '/mcp/sse',消息端点为 '/mcp/messages',可以通过 'MCPModule.register' 的 'sseEndpoint' 和 'messagesEndpoint' 选项进行自定义。
通过以上步骤,你就可以使用 'nestjs-mcp' 模块快速构建一个功能完善的 MCP 服务器。
信息
分类
开发者工具